|
|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:
8 G8 J. \$ ^; t# L) J(byref x1,y1,z1 : integer; part : object) : boolean6 F9 d4 X D8 ^9 L
is& e6 B( z/ ?: C9 S ]6 i
i,j,k,w : integer;
/ ]6 F# J3 \4 [3 l& G2 j' |do V- ]. w% e* H! H' l! K
for k := 1 to Crane.getStoreZDim loop
0 O. {) V* v5 X8 Z* g8 m8 | for i := Crane.getStoreXDim downto 1 loop
l1 n: r* }, E5 k for j := 1 to Crane.getStoreYDim loop
' r- T! z& A! A if Crane.placeIsFree(i,j,k) then8 N+ Y8 |8 T! n+ {7 s
x1 := i;- C1 u& y* o$ Q+ b
y1 := j;& e/ B, p t* U$ c. W F
z1 := k;0 S2 v1 B$ R/ @1 K
if Crane.placeIsFree(14,1,2) then7 j' @2 H9 F9 u& H
w:=1
( b) q4 N; e- l/ K end;
% J$ s% l% s8 E return true;
- T5 V& V& k! H9 Y- o end;+ X5 z: |1 Z' J8 l9 N
next;
, j$ Q* P3 K5 h; B7 j7 b& z next;" [2 H" U: v9 [& x! `; z$ h- P
next;
; s9 f, v+ m5 X6 u& N% Y: P return false;
) v7 q3 X. D5 X, n9 i$ b7 L) H o2 Dend;& {* S/ C$ D# Q
判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?
" `9 u0 \+ o8 \ |
|