|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:
* g7 U B B/ b1 P4 Z(byref x1,y1,z1 : integer; part : object) : boolean
2 a+ C/ k+ P% w7 W1 yis% D) V l8 x3 i
i,j,k,w : integer;" n9 t+ D) D! L, n+ o. T4 e- T' D
do' l' L' z/ E. t! v$ ~
for k := 1 to Crane.getStoreZDim loop5 s3 y: ^1 g3 F
for i := Crane.getStoreXDim downto 1 loop, z. A0 G; D0 T3 g# d5 b3 f
for j := 1 to Crane.getStoreYDim loop) s1 O: s$ o+ u2 x' l5 Z8 L- y) S
if Crane.placeIsFree(i,j,k) then
/ p2 A0 E' t2 q; O x1 := i;5 ?6 s* w& v2 `/ Y% U1 \
y1 := j;
- }3 s% F( e$ i z1 := k;
4 @& D" k7 c/ R9 a if Crane.placeIsFree(14,1,2) then( m! B* W+ E3 ~4 b9 F
w:=1
" s6 f/ B1 C. M5 D! h end;1 s- N. F9 j0 X4 `, [: U: |
return true;
9 l3 I2 l5 s2 e& _( o3 R3 `2 I$ q end;
- k- [' ]# e$ n5 K6 @6 F7 R next;, t8 o' t/ k, b9 b9 b) ^- t+ Q) X
next;
& R( b/ ~: e5 S/ r& D' V next;2 L$ f2 G0 G, A$ @ R& o: X2 }
return false;
' ?/ Z, l) ~( N. eend;
6 b/ y+ [0 `1 \/ q2 l+ j' D( B. o# f 判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?* B) t' g. f: y- z3 [: N9 G
|
|