|
|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:) l" N! q: G% t, h3 J9 z7 u. J
(byref x1,y1,z1 : integer; part : object) : boolean
# X5 q8 y/ c ?( Uis
; _$ z5 o) `4 f, S i,j,k,w : integer;
6 t* Y+ l' k* T! x( cdo
! Q2 l7 \+ ^" B: a$ ~: ^3 ` for k := 1 to Crane.getStoreZDim loop
! R: w/ C" n* N$ E" A/ O% b" n2 W for i := Crane.getStoreXDim downto 1 loop" K5 T# ~& C( p% L* i7 j- H
for j := 1 to Crane.getStoreYDim loop
& t# u. `7 f" M# M* i4 V if Crane.placeIsFree(i,j,k) then7 Y; z @5 ]& y* |. \1 D
x1 := i;- }3 d$ B) J4 e) C5 r+ F
y1 := j;
' w3 K: T$ _! @1 M* [- J z1 := k;5 e5 `! @1 q7 [6 s, D5 A- U F, R
if Crane.placeIsFree(14,1,2) then
5 U, c/ `- e# y( @9 Q w:=1
9 x. u- V3 K( J3 ^$ W, G4 c end;/ A) i6 Q; R% `( a$ U
return true;
Z. d( p/ G( p( A& ]& l( i end;+ Q; K7 T# {; r8 I& U- W
next;
# f6 ~ f8 x+ l |0 l next;. D) Y$ J# m" }
next;$ V- }4 B0 j0 k2 m: g" n7 x4 \) u) l
return false;
. W9 I6 I% x* Yend;
4 b1 n0 K, l! J 判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?
2 T# L- J8 R3 R1 i9 o( v |
|