|
|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:
1 y! d$ a7 {4 ?' t8 |4 h7 B) B3 j(byref x1,y1,z1 : integer; part : object) : boolean
' Q: l! c# N- J7 \. cis$ r. s. J4 r% s& I0 q9 t/ Z9 g
i,j,k,w : integer;. C% a* c9 ?2 R
do( G+ B5 \7 Z% ?3 d: E6 A
for k := 1 to Crane.getStoreZDim loop
" L. i f2 e G g; H1 |6 ^ for i := Crane.getStoreXDim downto 1 loop3 u e# f" f% T4 T1 l7 E
for j := 1 to Crane.getStoreYDim loop4 w/ j8 }+ p+ [+ H+ D9 z5 A& l
if Crane.placeIsFree(i,j,k) then
7 b2 ~6 z. p# Z$ m9 N X% ^$ {. A. F x1 := i;3 z8 F3 H% I5 U" h3 U( P) F$ l
y1 := j;
+ r1 ]% a! h& P( F z1 := k;# ^- y6 X) I; v' {% V1 a
if Crane.placeIsFree(14,1,2) then
( b+ k$ [& D% n w:=1
+ {7 i) d# N1 H end;
& D) ?% x1 N& c( t return true;
3 @- ^1 d0 \5 r2 G5 T- n% z end;
; z3 I2 r2 B& g1 p# p1 T next;+ L, T2 ~( t' ^
next;
4 C% `/ T) J: F% }0 y next;4 z& D4 E* C, }: Y3 u
return false;
+ y! }( E! X* q; P2 c' Eend;% R5 i7 t2 s5 ~ ~! c0 _
判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?+ c' D5 ]4 w. _$ W; i
|
|