|
|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:
3 N+ B! A- ]6 d# E" D! c# w(byref x1,y1,z1 : integer; part : object) : boolean
- d' g7 C0 {4 h% Z8 v2 \1 p6 B5 Ris' a$ @2 ~2 Z9 L4 a" L, P
i,j,k,w : integer;
; R7 c: P& v) w+ Vdo5 j9 }2 Q1 H+ t* n* K. X
for k := 1 to Crane.getStoreZDim loop
% m. K6 r$ V5 g2 U. s( w; u0 m+ } for i := Crane.getStoreXDim downto 1 loop
! V3 d- K3 c% S9 E' w for j := 1 to Crane.getStoreYDim loop0 `7 w7 t! ?& S9 F/ K J& ?
if Crane.placeIsFree(i,j,k) then
4 k, @. c0 n* y x1 := i;6 k) P' V% f$ E
y1 := j;" R9 h. W: G1 e6 k
z1 := k;* @; f' S/ U! F) A# n
if Crane.placeIsFree(14,1,2) then- ^$ S! B$ i, U( e
w:=1
% G1 {4 [7 p' c/ T) T3 W! D+ s end;/ D$ Y& C# q* Z) V- I) ^
return true;
- f" x1 @% l( k) a end;# R' u' n6 O4 }. k( M- f
next;
# |7 L- T5 j, p$ R2 s" r" O1 p next;) w) w0 ^! ~6 T
next;. O6 [, y, T+ B. e
return false;
: y5 z8 Y0 ^; W$ uend;
+ n* e# N- G3 N 判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?
: e6 B$ g5 v) i" ^; H/ r1 e. m9 q |
|