|
|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:
* `$ P8 T! h- G0 g( c7 h" v(byref x1,y1,z1 : integer; part : object) : boolean
4 v# o# _& B/ T* Yis
0 g( M0 X9 k8 d+ G8 u: i i,j,k,w : integer;
2 n1 F9 i q7 q0 a, G- ado+ s2 ^2 s" j. l7 }
for k := 1 to Crane.getStoreZDim loop
B2 c# i$ t* w, T( u for i := Crane.getStoreXDim downto 1 loop
5 L+ A- f) P, |' K8 b for j := 1 to Crane.getStoreYDim loop8 ?7 N0 x+ P( E: v4 i
if Crane.placeIsFree(i,j,k) then$ M" W/ J/ v' s5 P: {; a) \
x1 := i;& X, T% y* y) U/ d" q
y1 := j;
& j5 W9 I2 @; E5 ?" L: K, _) g z1 := k;1 i# A i& ?/ D* w- o$ P
if Crane.placeIsFree(14,1,2) then
) j ^) T' j- i4 ^ w:=1+ Q8 [) E) @- @& _
end;) u5 R$ \7 w2 ^9 r; o& u4 o1 s( k% E
return true;
, X1 T( E; x' q2 r3 S6 T' w end;
% `. ?9 B3 t, g5 x next;
" t) j- l i' I! ~ next;
, q7 y# S+ l+ @ next;
+ }+ _2 C9 e: N/ j: u8 R return false;
1 b. H7 d7 I' Kend;+ f9 ]( A8 W" }/ o8 U& y
判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?
+ I T* y$ C6 O |
|