|
|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:
& n" k7 p3 k" V1 S0 J+ |+ s, @(byref x1,y1,z1 : integer; part : object) : boolean5 i- y& A2 c/ }( i$ T4 _. n' \' |
is
# a8 v% ]5 b3 l+ [$ N' i3 a i,j,k,w : integer;+ W* E: E2 E' f. s) F
do
: \2 C( e, D% }+ h9 z3 t. ~7 t" w for k := 1 to Crane.getStoreZDim loop
! Y' I4 l& W" l$ m' }! j6 s4 E8 g for i := Crane.getStoreXDim downto 1 loop
6 X8 a. m4 r& b# v for j := 1 to Crane.getStoreYDim loop) ?; @% ~) }4 m- [
if Crane.placeIsFree(i,j,k) then
& u2 S- h7 Q) `% x8 p5 { x1 := i;
$ o6 d' D7 W. c# N0 |5 A, z( R y1 := j;, t' ]) m8 S! h" h% x$ q6 j% v
z1 := k;
& Z5 b8 k, ]) z- ^6 C" { if Crane.placeIsFree(14,1,2) then' s/ k7 t5 x: z/ f; M
w:=1
: I1 D1 L5 t& L3 v6 F* T end;! c I9 b5 ]8 D$ D4 @/ Y3 t
return true;
5 I# \/ D& K% s3 A& o: Z+ Z end;
; j M4 z3 k% v9 x next;
- X0 j, ]7 v& @4 {9 B' ?2 ^ next;
5 `( a _- N B. K3 q5 {. s! c) D next;3 P4 R% j* r+ @# ?9 @8 t
return false;$ U, A* x& v/ G: ^
end;1 b3 T ^! z# Q0 ?6 D6 C
判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?5 `: I7 p/ ^2 p3 E. r& r4 |3 T2 x
|
|