|
|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:
# d9 N9 E# g! v3 n% Y i! P(byref x1,y1,z1 : integer; part : object) : boolean/ y* Z0 S; S0 e+ I" G% J. I
is5 z* B1 z0 D& j7 A: f
i,j,k,w : integer;% c" [) k8 D( r
do: Y+ @3 \' t5 e* p
for k := 1 to Crane.getStoreZDim loop
; A! O2 L" F" `) N for i := Crane.getStoreXDim downto 1 loop
1 Z( o7 a( I" }7 b! |5 y for j := 1 to Crane.getStoreYDim loop
* r! W) N, v- w$ W3 H- X if Crane.placeIsFree(i,j,k) then9 c' B( Z* H) N5 O4 F2 V
x1 := i;
4 }; K4 o$ c1 E1 t6 M- A y1 := j;6 S( K, s2 r8 B9 z$ }
z1 := k;- ]$ V( t t( d* g& p6 | a
if Crane.placeIsFree(14,1,2) then
5 a$ s1 y; c6 X0 x8 d* @ w:=1
5 J8 l5 c8 ~; N+ C! u0 S end;
: c) U C( ?/ T return true;6 C" ]1 b( v7 E2 X8 H4 m) |1 A
end;; c% i5 \; `9 T$ j: D% G0 h' M0 X
next;9 p; m: W' [4 e ~- P: Q* X" g% b( c
next;
8 ], R! I1 u+ q9 Y2 N next;7 U* `! s( u5 z. T% V
return false;
! z0 A" \, g( T# @$ S qend;
% O3 N# z- f E' D0 a& b0 M 判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?9 |1 b! n/ s+ u, O- K/ Q' q
|
|