|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:
& L' {: N! _, w, y- z(byref x1,y1,z1 : integer; part : object) : boolean O. j3 G; g3 J8 w% L0 i' i$ U* _+ L
is5 b& |# Z7 y$ _2 U, X% ?
i,j,k,w : integer;
, H8 @5 J3 O- j0 n3 Rdo
& {) R t" D6 L' M8 d+ Z: I- c for k := 1 to Crane.getStoreZDim loop
9 e$ b# i& v0 ]" ]6 s! C. _2 u for i := Crane.getStoreXDim downto 1 loop
* F- t# B; @% ^# Y for j := 1 to Crane.getStoreYDim loop
& R8 y" C# O; t5 `& x if Crane.placeIsFree(i,j,k) then
6 U1 R9 y# v- _4 \4 H x1 := i;3 j3 \ t5 ? N7 G* G, j7 d+ z
y1 := j;1 v# V. K4 z" \
z1 := k;! ~+ R9 U7 P7 W
if Crane.placeIsFree(14,1,2) then
" ~; |/ j( o2 r w:=1. n8 |1 v: h# x+ Y5 H. Z
end;+ ^( ?" P8 f& C3 a: V
return true;' f% m/ M- r5 l2 B9 T# e. O
end;# G0 s# X8 {6 h3 }
next;* T* h; ?2 V; U- C
next;
& G$ O- U: h1 C8 h; L5 W next;7 G" m: N7 T R# i! z& `: c5 Q
return false;
2 Z6 x* P; o3 X3 c3 Z2 g: Xend;
5 k$ N, ?' b6 x* f6 B 判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?
; {8 X/ m3 Y8 s7 n* V |
|