|
|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:( h! p* _/ G/ o& z& c% J) k
(byref x1,y1,z1 : integer; part : object) : boolean
" n! o! V3 D' v0 O( c( }0 K! p y, u+ p) xis- P* |# ~8 C& K1 D0 ^: g( [
i,j,k,w : integer;) t' b% D- Z: J! C/ h1 e" J
do
. ^) m1 C3 S, K3 _9 @2 H for k := 1 to Crane.getStoreZDim loop1 I! U( `, t+ I3 k, C9 L6 `, ?# [
for i := Crane.getStoreXDim downto 1 loop) v, `: \; B: m0 v: N( u3 L
for j := 1 to Crane.getStoreYDim loop, P$ S8 a' C# V
if Crane.placeIsFree(i,j,k) then& h$ Q+ l1 K" p' o/ ]+ H* r9 @$ i
x1 := i;
1 Y0 l5 E6 H( h3 ?1 a y1 := j;( I E# |7 L$ C. h/ m
z1 := k;8 @0 ]4 V6 a/ k+ e
if Crane.placeIsFree(14,1,2) then
" e! D3 K C5 [) D# F' g w:=1' f& y+ R% s; b1 a$ b3 g a
end;/ b0 H& i. g5 h* R# ?9 d3 g
return true;. H4 k: |2 E, X7 ~! {
end;6 ]! ~6 V3 Y* F- H' l6 R
next;
2 o" y/ ?7 K+ H2 F next;7 e+ e7 i6 e1 Q6 N' b) C: {8 @7 }
next;
, S( B( X. {8 s: G$ s& y return false;
7 c `7 Y- k9 `6 K3 wend;
2 {& ]& b4 Q5 K9 E3 Z6 F 判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?
7 ?- h2 a& ~4 X5 Z' p; Y5 x$ y1 B7 ^ |
|