|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:
3 b3 b, t3 I+ K6 J(byref x1,y1,z1 : integer; part : object) : boolean8 w* w7 i2 \5 Z9 a- Y# G
is9 _/ p4 t& s1 h$ L. H
i,j,k,w : integer;
0 f) ^, l5 t% T0 @" `$ Pdo
, K, Y* T) [ H for k := 1 to Crane.getStoreZDim loop1 Z0 s6 P: f6 x) o. A
for i := Crane.getStoreXDim downto 1 loop
/ c- p! L9 M3 S: G5 e* }% g' ]0 ^ for j := 1 to Crane.getStoreYDim loop
! {- e& U9 Y0 P4 u$ {' d" ? if Crane.placeIsFree(i,j,k) then/ T& F6 ~2 S# ]; | L
x1 := i;" q( b' ~2 w+ ]7 z0 ?. h
y1 := j;
8 U* J+ C, w) ?! i* b z1 := k;
+ a s D6 E/ Q+ l7 ]1 C if Crane.placeIsFree(14,1,2) then
5 p) T; S) t. A2 \, b: R w:=1
, C6 ?, F' ~1 V end;
! e7 e. E2 e; o6 w return true;+ r. e& e3 `3 Y1 Y3 m. L1 U( @
end;
0 f/ D! a; K1 `8 g6 u, R next;" \6 D7 G \1 [, p+ ~% }
next;
3 ?, T8 \. Z) W: y1 |4 o y# y next;) J" ]7 ]+ J1 m7 G+ o1 b' O
return false;
& ~4 E* P+ f+ A2 I. aend;1 q; t# D8 E7 a4 {
判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?! R- c$ J% o7 P3 M! H. {1 O0 A# F( U5 k
|
|