|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:/ M- |: y8 s' i8 b
(byref x1,y1,z1 : integer; part : object) : boolean
0 l [8 x4 w& @# e- J# bis
' w; Q- z @. j8 @, }3 W i,j,k,w : integer;
( q" }0 Q8 z8 b) Edo
' f0 n5 I$ b+ @* L- L for k := 1 to Crane.getStoreZDim loop
, d! I: W& M7 C9 w for i := Crane.getStoreXDim downto 1 loop3 |- P' ~$ A# \. D2 P
for j := 1 to Crane.getStoreYDim loop- E( Z! z* L3 E
if Crane.placeIsFree(i,j,k) then
3 G2 Y4 A/ f, L( w x1 := i;
% z* V2 A: L+ y- X# |1 f9 ^7 g y1 := j;
4 U( `% x8 w$ @$ |0 ?$ E/ P z1 := k;: s+ F' ?" Y! N: ~
if Crane.placeIsFree(14,1,2) then
& M. Z1 H. x1 r, z* T8 |* A0 B' W/ [ w:=1
$ i& t* U% M- E& r: h3 C" u5 w end;1 [3 |" p# Q! k" U: Q6 N
return true;
; s2 {; `, D8 t8 V- X) m) w end;% w0 {8 e. \! g. j! t3 ~& I" m5 {
next;& s, [, ?& e5 X" H7 ~
next;4 }, k3 n8 p% y+ {$ r8 `
next;- e$ G; Q% X" |& }) M( j( B' I
return false;
. I4 i$ Y8 W) }' C5 cend;
1 |' S/ s: t& E2 {" ?* h 判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?+ `$ j2 w6 r" V7 g
|
|