|
|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:# ~' }6 x" T9 u8 n
(byref x1,y1,z1 : integer; part : object) : boolean
1 q% ]# [; `9 f- X: t$ xis
' A8 x( I/ L+ j* D* h a! _ i,j,k,w : integer;
# ~+ `3 Q$ ]1 ?' J- K0 Mdo
0 t! |3 U" U% f" z5 E) d/ ] for k := 1 to Crane.getStoreZDim loop
( V9 D" g5 f! k: v for i := Crane.getStoreXDim downto 1 loop
1 @0 e% }. |6 [) b/ c for j := 1 to Crane.getStoreYDim loop+ R. _6 Z% f; l! I! U; S
if Crane.placeIsFree(i,j,k) then& \* R8 @0 @0 T' H7 `+ m
x1 := i;$ D1 g/ n# f$ z1 u) \- {4 e
y1 := j;
: A4 `* B, W2 x0 U: ?; m z1 := k;/ T& \0 ?4 V" h+ {0 Y @
if Crane.placeIsFree(14,1,2) then
2 {! f" e8 O% g& M! R W$ m0 x w:=1
/ `0 n5 x2 S2 _8 O end;
) I$ z+ B/ ^: B( p+ L! C4 ?6 ^ return true;& k- I$ P; ^7 o9 Y/ _. U- d
end;
' A3 j6 @2 K! H next;" u4 G( I/ L. M) i
next;) g! w/ j) _# `# P
next;
# z/ x' e1 X1 S0 v* D) } return false;5 \3 o" D$ E; D ]' u' f
end;0 h$ ]* g, t$ C, k! n" i. A0 V
判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?
" \& r& O9 L: t/ ^! A- D: [1 [( { |
|