|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:
) C% q0 k- z( z( `( l$ a6 L ^, m(byref x1,y1,z1 : integer; part : object) : boolean
% A7 @* H) H+ }# |7 o7 s/ q. `is! t3 k- w1 s2 L" _# G1 M% M
i,j,k,w : integer;
+ `' \$ l0 l8 {! |+ N/ Xdo
3 e) L4 B( U. U" ?4 D8 n* V for k := 1 to Crane.getStoreZDim loop
5 k3 `: {" P0 V for i := Crane.getStoreXDim downto 1 loop
4 W" E! E# X6 t Z3 h for j := 1 to Crane.getStoreYDim loop
% \$ Y' {% D7 H# D2 ^' J if Crane.placeIsFree(i,j,k) then* t: `# o0 L3 e% ^3 {8 V7 q
x1 := i;
7 F, V+ l/ d6 z$ }) D y1 := j;
% I8 \$ u- S' I- `+ l% _7 v3 i* ~ z1 := k;
' h( c! ~! d4 J' E7 U# ~: Z+ G if Crane.placeIsFree(14,1,2) then( H) s P) Z6 U$ J: F
w:=1' l! M3 \" {5 P( o" R% N* o, d
end;
$ {2 S; G2 S) o; y: g% i' m- S$ t, f return true;
# q) t9 w: l' R3 V$ ] end;& g1 E( ]7 @' D" f" }
next;) ?! l) }' F6 F' ~
next;6 t4 ?* U) G4 ^( H
next;
+ m p6 v+ o; Z# x. ~& r return false;
* {- @ i3 b6 h. X! mend;, N4 L t- n" V! O/ C9 \) O1 L
判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?+ A: T$ J8 X' i2 I5 w' f
|
|