|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:0 z6 ], b, u L( \: M4 W1 t) X
(byref x1,y1,z1 : integer; part : object) : boolean
# K4 ?& c# X/ w% iis
, u* c. s: O+ M/ H" ]# c# Z( T$ R i,j,k,w : integer;
; f8 R" G7 N3 ]1 S% vdo. s' k3 P7 M% o% M( \0 L' _ X0 T, P8 }
for k := 1 to Crane.getStoreZDim loop
9 B4 u X$ }# J K$ o9 i for i := Crane.getStoreXDim downto 1 loop
; j" o9 y4 I/ } for j := 1 to Crane.getStoreYDim loop& s7 @' |# s6 G$ ]! ~
if Crane.placeIsFree(i,j,k) then7 I8 t* Y+ e" E0 p- ~8 j! H
x1 := i;! i( M9 r, _; Y! X/ [0 k/ B; _
y1 := j;1 {8 s" O. n/ U. P% i- G4 ]2 V4 d7 p5 t
z1 := k;
1 E$ G& m/ H" R* N5 t if Crane.placeIsFree(14,1,2) then
, h3 M; _4 v# f6 T- o+ q8 s& U w:=1
k" E$ A3 i$ W9 Z end;! U* @2 t- b `: _6 D$ w" q
return true;
/ S$ D9 u, _9 W M0 A! i( T! n end;: |* B8 }1 S) T% l8 }3 |" j8 o# d+ H
next;) E8 ~0 K0 y1 `/ F( M/ E0 c
next;
9 E+ L% s j6 o/ j" [2 H4 C4 j; T next;. p* }2 v2 M$ q: C+ J" R
return false;% J( n1 Z1 s5 N. F" s; Y5 e3 B" x& [
end;/ Q# m, K) g( {4 \7 H
判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?
6 U V Y1 ~+ o |
|