|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:
7 N0 f, o% j K' `5 g(byref x1,y1,z1 : integer; part : object) : boolean% Z8 |7 R, ?* w5 u4 K- B# w
is9 @$ \0 u" q c8 F6 _- ?
i,j,k,w : integer;
$ K, }( @9 c6 j) L0 `9 ldo
( W% }( B8 ~3 U' m& y( B for k := 1 to Crane.getStoreZDim loop& R( E# L X# V* \0 \+ h
for i := Crane.getStoreXDim downto 1 loop
* U S+ C* s1 S% i/ S7 H5 M# v) O for j := 1 to Crane.getStoreYDim loop$ x4 j3 n. F8 V2 n; `
if Crane.placeIsFree(i,j,k) then5 y0 W& J* A: X7 b
x1 := i;
$ o$ T" e4 j8 b- v9 p# W y1 := j;
% ~# j0 h" G! q; G, ? z1 := k;, S- |) r, m- J3 v7 ^% ]! b
if Crane.placeIsFree(14,1,2) then) @4 c+ i7 V- e; h) r
w:=1$ o0 q. ^$ I, W, {& A6 ?
end;5 v2 [' c0 h% B5 C4 `/ ~( @
return true;
* l1 E3 ~8 @- \8 ^3 H! _) {, d end;* Y, V/ ~) q* V( Z0 b& g4 M1 B
next;
. N+ g; T) V/ Z; h1 ]# d4 Q next;3 M' P" [4 Y$ r7 I2 C
next;3 ]! A7 k( K! A! m
return false;: F0 o8 C% z1 A$ x; C7 t7 Z
end;
" A3 B8 h' u# C b2 g 判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?
! u- D7 e' O: b+ l! Z* y |
|