|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:
7 p$ }: m/ X/ ^ `3 F(byref x1,y1,z1 : integer; part : object) : boolean
, R& r1 E* M. U. D3 o9 Y3 n. }is4 r% e7 O, W# \' P2 P0 i
i,j,k,w : integer;
7 b+ n# V% o9 _0 A/ R8 ~do/ D/ V0 {5 O7 t1 W
for k := 1 to Crane.getStoreZDim loop
' E! e( q5 i4 Y5 H- s: f for i := Crane.getStoreXDim downto 1 loop
: ?' b/ l5 _* v/ ? for j := 1 to Crane.getStoreYDim loop
0 W0 [- h0 D% R Q& n if Crane.placeIsFree(i,j,k) then
; P, M6 F; O6 E! J: ^4 X. @ x1 := i;
$ |; a" W4 f3 O$ e7 {3 [ y1 := j;# k, w4 T/ P0 i; T/ |( L
z1 := k;7 q% ]/ S- a: s S
if Crane.placeIsFree(14,1,2) then
+ F. j, O) c6 n& h1 K w:=1
d* B$ Q, j2 D9 ~% ` end;8 ~( U3 n: @3 J* ^1 v; ~9 D. Z
return true;) q' n. k$ l1 _" r2 Q8 x
end;
( A: y% u" \( V# g: `" j7 m; [. g3 i next;: f7 D o6 S1 m
next;
2 {2 @' G# V/ B8 L; ]+ f3 q next;
P0 U/ S- ^) v return false;! w: |$ d! `6 i* k1 C' r0 `
end;3 M$ q$ V9 r6 r; V$ S# x
判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?% \1 p" M0 }% O. V* P( h8 W$ E
|
|