|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:
% F* H5 r2 Y# X* X# `, y(byref x1,y1,z1 : integer; part : object) : boolean
! h* b* E1 b6 ?' `( P7 L4 U' ^is V, K( p0 D! C2 T! u) Z4 a
i,j,k,w : integer;
) q% S" Z2 M7 t7 bdo
0 a" \$ _- F# T+ [ for k := 1 to Crane.getStoreZDim loop
3 _( J: {8 H* F4 S7 F4 J for i := Crane.getStoreXDim downto 1 loop
2 A' i& |- ` b# S4 X. n( U$ N for j := 1 to Crane.getStoreYDim loop
0 b( Q$ y% t4 r( i' P if Crane.placeIsFree(i,j,k) then
3 q4 Y. o$ I- \" Q r x1 := i;3 E4 i/ m9 i: m- C$ e6 O* X
y1 := j;( u' I( g3 l. W# t9 M( \0 @
z1 := k;$ k; [, y/ I+ H* b5 N
if Crane.placeIsFree(14,1,2) then, p1 f8 j9 V M; y5 p' J4 x
w:=13 P7 l3 Q/ p* L2 P! {- V/ Q
end;
" H& V8 |3 `. H, ?5 S3 R. ^ return true;
3 `( f1 m7 ?% }; G end;
. U2 v- b0 F! {( d. C) v0 V next;
6 Q8 z( b( i5 Q8 S- k# }1 D next;5 I7 n1 e; M, D( I' i" i
next;1 C* n- K$ Y. G. E
return false;
5 ]8 h3 n5 j' a# s" ~5 Oend;
' Z" n% y# f# _ 判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?
8 S# ~6 w' N% n& n8 Z! k7 x) O |
|