|
|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:
* F" ]9 p0 X2 n; z(byref x1,y1,z1 : integer; part : object) : boolean
2 }6 W% ~* `. w1 Xis
' Z. n& c. b+ n# z6 u. p7 S4 b2 ]2 F i,j,k,w : integer;$ e1 F6 y6 l& e7 X/ i; R( L
do. C! \( W: q: v/ D* @+ t5 o0 E# r
for k := 1 to Crane.getStoreZDim loop
0 i' P1 ]) `0 }& B1 P5 F/ _2 G for i := Crane.getStoreXDim downto 1 loop, q: D- E2 s( S9 k( ]: C
for j := 1 to Crane.getStoreYDim loop; Y) S- g# b2 O; O0 q; \& q
if Crane.placeIsFree(i,j,k) then
D0 r) R8 k7 U* u. Z6 c1 x* W x1 := i;2 ~( ^9 `9 e" l8 A4 Y q
y1 := j;
+ p$ P6 F. S" `* |7 v& V$ ?# b1 C z1 := k;. x" V0 P) {' N' }
if Crane.placeIsFree(14,1,2) then
- F0 Q9 y+ I2 }, C B- ?' [; ?1 } w:=1
+ |4 j9 ]9 d- s$ r- {2 H end;
5 `5 l* d7 w) N m; S1 o. a return true;# `$ A. @3 z$ w3 E1 `1 m% I
end;
0 o( T/ N0 j# L* G$ l# }$ [ next;7 b5 N. W% [& X; m. I1 t% g
next;
9 f5 }" l$ [. d l. ~ next;
/ m2 `6 z: J+ w6 c5 ]& B5 y3 c4 P return false;
# ]1 [+ D5 V% a& } oend; Y& \4 }$ V* f* y& ?) R7 H
判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?
; ^' Q4 ]2 y/ V- ` |
|