|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:
( w: W: o% i" k. F. q! \(byref x1,y1,z1 : integer; part : object) : boolean9 @ |* V( t9 l
is! G$ G" d( A' Q' Y# M
i,j,k,w : integer;6 y0 o8 P( O5 U$ s9 z2 c1 {
do5 _0 ~5 t' X4 L( A8 ~4 i, O- X
for k := 1 to Crane.getStoreZDim loop* P# s# m1 J0 O
for i := Crane.getStoreXDim downto 1 loop
1 x; S7 r M1 b- M; h1 K; z for j := 1 to Crane.getStoreYDim loop
6 p4 }& W+ [0 v: U H$ @( [& L if Crane.placeIsFree(i,j,k) then
: ^! B6 d3 _9 h. W+ l7 { x1 := i;
: K6 M# n( K! R, T2 \ y1 := j;* N$ U4 Q/ J% \7 V# U! L9 a; Q
z1 := k;
9 { C2 r" F( z: m+ Q( u$ P if Crane.placeIsFree(14,1,2) then! J; d5 B# |: o9 _
w:=1" F$ h% i( q( h& ?$ J! X6 g
end;
( j7 {' ~8 y3 L! `+ n3 D( H, e return true;
) F% S& I) B4 h2 H# ~% }5 S1 l5 z2 e) k end;
1 a" C0 t _) Q next;
" a) z" K' Q2 r0 N9 @- x, S, t1 j next;
% r$ N$ _) x! f! z/ q S2 n" C next;* Z7 c3 e9 A5 S6 j, M
return false;
9 p* \* R% d D1 H) `$ Y4 b3 d0 J% T8 mend;
* f0 Z- z& a3 Q$ g! r 判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?( S# z; f6 x2 n
|
|