|
|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:
+ l8 l+ C* ]4 Y% h, m$ D2 C6 p" @(byref x1,y1,z1 : integer; part : object) : boolean8 k. W% j: V4 [4 ~( {* b. [ \
is+ p7 Q: _9 f+ j# u0 g* D1 J
i,j,k,w : integer;
, l. d" a3 z" R0 x% w. Hdo
' G/ \# H4 d- u for k := 1 to Crane.getStoreZDim loop( b% i3 z, |+ F( m9 k4 P
for i := Crane.getStoreXDim downto 1 loop
4 ]9 r3 \8 n) r3 a, l& F for j := 1 to Crane.getStoreYDim loop
) {4 ^/ f. d `; g6 q$ C2 @/ j if Crane.placeIsFree(i,j,k) then0 C. C# d" P+ V. ?# [- O# p1 K
x1 := i;- S& l. Z- n0 n- b9 G3 Y3 j
y1 := j;1 [, B. M2 r6 d1 `. \
z1 := k;
, P; Y" k5 D9 @" L8 A if Crane.placeIsFree(14,1,2) then: p+ t8 W0 n1 _8 l2 b) |, f
w:=1
% \. b: ]5 Y) R6 |: C7 c end;7 V+ m8 V' a2 H; {# N/ c% s
return true;4 O- b2 {. Y$ R8 z+ W! [' M
end;+ J& W$ D1 Y9 W3 v- N
next;
# N9 y# S2 g' R) R. k, Z+ _ next;: v2 ?* M* H A
next;: d o% H! x% r0 A8 Q
return false;, G2 @: O' |# v1 N7 |8 y4 o* Q
end;" l( y1 Z+ U4 U. G5 C& c0 z
判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?
0 Z" K: ]2 X' _$ X! h# ~ |
|