|
|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:
$ s. u# F/ q; r/ t2 ~1 z(byref x1,y1,z1 : integer; part : object) : boolean4 \ H0 X- o/ B
is( l3 e8 P% L6 j! U0 p
i,j,k,w : integer;
' h5 d1 v+ Y7 S) o9 H* Ydo
' h7 ^& q) @9 x& T8 e for k := 1 to Crane.getStoreZDim loop
1 b4 u/ {1 C- C3 R; F! `! V for i := Crane.getStoreXDim downto 1 loop& ~4 z% R' _ h4 T( Z$ v5 l
for j := 1 to Crane.getStoreYDim loop. b5 ?' r' c1 ]' r0 J
if Crane.placeIsFree(i,j,k) then" l. p4 A' |$ E2 @
x1 := i;) s9 d1 m8 \- S0 O7 ^) s. T
y1 := j;
; Y p- B9 k6 U3 k( V9 c; x z1 := k;
: e1 t+ C4 [. x0 n4 u5 w4 | if Crane.placeIsFree(14,1,2) then
8 h/ f0 q; o5 y5 n/ C4 Z5 _* w. M( M w:=17 g/ |: a& g: z$ D5 c
end;. [8 |: b* v0 g0 E: v F1 Q% [4 m
return true;
) A2 \9 N3 w/ B5 Q end;
- E) o/ o' W& o, @ next;8 ~* b4 e9 |1 ]& }# T# N7 ^
next;; w2 O; b) L) ?! @# r/ n3 k# B
next;0 N$ T8 [0 i. j) C% q9 y( l
return false;; A. b: c, ]. _9 J
end;. \) t8 ?1 T _ U
判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?
$ B# a# a$ R# E8 K7 |4 m |
|