|
|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:
8 E& z2 ], W( _$ K(byref x1,y1,z1 : integer; part : object) : boolean7 v b- N" G9 J
is
5 E5 S* T" Z" c' X i,j,k,w : integer;
! T+ ^% X- c) ?$ G9 L- K+ q0 Sdo
& c6 a) N, f5 D: j for k := 1 to Crane.getStoreZDim loop S! X# ?/ {4 L8 ^+ X& N1 ?, S
for i := Crane.getStoreXDim downto 1 loop
^: u3 H5 j ] for j := 1 to Crane.getStoreYDim loop1 W- u& h5 z4 P; J% I' s8 F
if Crane.placeIsFree(i,j,k) then3 ^) k. M- O. L7 c9 U9 Y" V) a% s
x1 := i;. Q' W6 R* W/ M+ L: D: S; |
y1 := j;% ~: y( F$ U' y! B
z1 := k;+ k- T" \6 K9 o0 E* _- N& b3 p
if Crane.placeIsFree(14,1,2) then
/ X0 [; R( H5 H8 G+ d9 @% J0 Z w:=1
. N$ n5 Q4 Y5 m0 Z) n n4 r" K end;0 ]& P* k# c4 d6 X; Q0 i9 X* Z
return true;
9 D; X) u( R' l+ j1 C& m7 K5 g end;
$ A- Z p( e; C; A3 d next;* _1 n% n& w9 c% ]2 L
next;/ f0 Y9 f8 K. x* f& b5 Y
next;( V/ [& B [( S9 p& }( e+ X; d
return false;6 _" Q, e4 c W5 }7 A0 {0 o
end;/ u' `! h% K, n9 S u4 Q
判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?% U6 d1 E3 x) w2 j# W' V2 O
|
|