|
|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:
% H8 M8 _4 a7 u6 q U# `* ]6 |(byref x1,y1,z1 : integer; part : object) : boolean
1 a* Z4 [, i/ j0 m, h7 c8 M, kis
9 C6 T' B( H- b; }) J i,j,k,w : integer;2 k6 A0 ~3 B7 H7 Y1 v) x! k; _) l0 R& k
do
. I% n2 F% X& w for k := 1 to Crane.getStoreZDim loop% J! U$ J% s0 g" p* ^& f
for i := Crane.getStoreXDim downto 1 loop
: K/ j1 c; B/ x! R7 a$ w$ G; j$ { for j := 1 to Crane.getStoreYDim loop4 M0 u& a; N9 _; a5 k$ y
if Crane.placeIsFree(i,j,k) then% i& k1 W* Q9 t4 q. Q X( P
x1 := i;
5 k& G$ X0 j: z% E! V, A y# y y1 := j;
, z) B1 l$ f( ^# h4 B z1 := k;
3 X$ N0 l+ h9 ^/ S) r+ e if Crane.placeIsFree(14,1,2) then
: M G) m" x o2 P+ I w:=1' G/ M. z$ X! h4 V
end;0 I( e8 I* I7 S" y
return true;. Y3 O+ q* {& D" W! f! U( y
end;5 @8 f: w# Y9 R" k' G1 |% |( \* S
next;
" Z9 @; m2 Q. g8 i1 K( s next;- Z2 @) x) T9 b: Q5 }8 C" H
next;: }7 M2 v/ v6 x, f h. C
return false;8 G1 o- [& _& i( I
end;) D/ R: D+ a* d8 x2 s$ r1 X, l9 ]; L
判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?
5 i- [5 ^9 A' D) p- ? |
|