|
|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:
: k% \- c( Y2 ~5 F(byref x1,y1,z1 : integer; part : object) : boolean
1 A) v2 F: Q! _3 Jis
; T, E- m; p/ @6 O' m6 | i,j,k,w : integer;% p9 L0 T. d" d4 J T. I
do/ D! z4 \- M. V2 w K8 P
for k := 1 to Crane.getStoreZDim loop8 B( l% G4 e4 p) m7 e
for i := Crane.getStoreXDim downto 1 loop9 w( G( V/ r0 m7 j
for j := 1 to Crane.getStoreYDim loop) C+ T6 ?5 Z8 i o/ [+ }3 M5 e
if Crane.placeIsFree(i,j,k) then5 ]1 \5 p+ m; H5 [: c' `) E
x1 := i;
( {+ ^; ]8 D2 M- q% L2 e$ ]. I y1 := j;
( |. q" c6 }# X4 Y+ ~ z1 := k;3 c, H2 V$ O/ e$ l. _0 q9 A q' {/ x
if Crane.placeIsFree(14,1,2) then
) {7 ]# j/ D: L6 j% j1 D/ r w:=1 b" e* g% w2 T/ g. V( i
end;
f, E! t2 e# t# D. W0 }0 m! T( D return true;
+ ~8 L( A$ k: n3 q0 P* l$ ?! M end;
8 w ` @$ b1 Y3 w/ S% o( A' U next;/ |! u/ ]9 l& U+ T5 I
next;+ X1 J* M9 }' J# j
next;- C% }2 f7 ~& j0 W
return false;' e& U& Y1 J* b2 E( J) @
end;/ Q/ q) R+ }( o7 l0 l9 l# {
判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?- N+ {5 o% B* {5 h, q A
|
|