|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:
+ @# y, z9 H7 P! W. i. I* A(byref x1,y1,z1 : integer; part : object) : boolean
* G2 M. ^& U5 y& k. R( Kis# Q% p: `. n7 ^: R! R4 y8 H" D1 \
i,j,k,w : integer;% U. a4 Q. v! b3 X9 G
do. V. r8 E; |9 R9 K v6 B
for k := 1 to Crane.getStoreZDim loop
# v7 w& H5 v7 H& p7 w8 Q for i := Crane.getStoreXDim downto 1 loop# c6 w s" b& M3 e5 w( Y B
for j := 1 to Crane.getStoreYDim loop
0 L' M) U8 \: `3 s" Z4 b if Crane.placeIsFree(i,j,k) then' {6 b( L5 H2 ~4 |
x1 := i;; z) I8 P% ]2 m
y1 := j;
2 n* ~ |1 L. W9 v0 F: G# H/ e z1 := k;
" X6 v0 O) B1 L if Crane.placeIsFree(14,1,2) then4 g$ `+ w {% j8 i. S7 A
w:=1
6 P4 T t: f4 i% w end;
% h; ^6 @7 X: ]- r V3 U$ j9 j& Z5 _ return true;7 {, a" Q$ o4 G7 B0 e3 V# e4 l1 I
end;
. E7 T+ _* Q! \2 J, Y next;
, w- v, \3 o6 \- d next;: F2 o% X3 l) `- ]9 _
next;
' H5 o& O& i7 N2 h/ Z9 g2 X% m$ J return false;
* }2 E- }. Y7 }8 T0 _end;
% X8 _ x7 o: j* p9 G/ X 判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?
! V) T! S- f/ z |
|