|
|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:
& _" w7 H! ~5 J3 t9 U# O/ U4 e(byref x1,y1,z1 : integer; part : object) : boolean$ X( |6 `/ z: q
is
% K* \, x* u) U: S/ i i,j,k,w : integer;
# |; o# [1 W3 @: K. ]6 X3 Udo
& s, I+ a/ V: c. I) a for k := 1 to Crane.getStoreZDim loop1 a) a6 m: B, G5 J9 k
for i := Crane.getStoreXDim downto 1 loop
, x; I1 V; y# M! p5 e' A# Y for j := 1 to Crane.getStoreYDim loop
- f8 |# p* h, Z if Crane.placeIsFree(i,j,k) then
" g2 O) c+ y3 u2 m' |* u# O x1 := i;# b w$ B; R4 \3 K$ H0 _9 {- Q
y1 := j;
8 y2 W& m/ S# _7 C: u; D$ i z1 := k;
' N! m9 j- x4 P3 f- O if Crane.placeIsFree(14,1,2) then
* [& I; p- o& R& O, d; u5 O w:=1
2 s* @5 V* F0 P0 d# W$ e1 ^5 Q end;& H3 A8 ]. I! a
return true;) M$ F M4 y) J+ b/ j* D. l, J
end;
; E7 T5 b+ |! t# C) l3 I next;
8 N8 _% p* s, P. d4 m" V# X next;; U: D# f. c' I/ s. s" ` ?5 R3 \
next;0 i6 V/ k; i% \( Q
return false;# U" q7 X6 M# }) Q% V
end;
, e1 a4 I1 ^8 R) a3 G# c6 d) e 判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?
. S6 W* |. }* J$ Q; _, H8 V |
|