|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:
7 |& b5 e8 ] p) @& `; \(byref x1,y1,z1 : integer; part : object) : boolean
a, q9 {4 q* I3 n1 Tis
" {/ I, U2 V% K i,j,k,w : integer;$ R5 ~ G7 i) w: s8 ^' k3 X
do: F3 r1 N0 `. Q- B
for k := 1 to Crane.getStoreZDim loop* v s. M9 u1 S$ \. ~
for i := Crane.getStoreXDim downto 1 loop
7 _$ v6 K; ]" h: V; X) [ for j := 1 to Crane.getStoreYDim loop
a" U8 ]$ P5 M8 D# g3 N3 L, d if Crane.placeIsFree(i,j,k) then# E8 p( I; q$ R+ Y% v; B
x1 := i;
h' z8 a. K- b# k1 p2 y4 S: f y1 := j;' M8 {6 f5 t* u3 [% Y/ H- S
z1 := k;( @9 M1 \0 n) t9 G9 F# c
if Crane.placeIsFree(14,1,2) then- y/ B5 H( K0 M* G# `
w:=1
7 Z8 o/ O% s- @0 B) } end;
7 S5 Q/ X; ?- l2 ^% Z return true;9 o- o; z% y3 K3 V' K4 R, q
end;# ~ `8 w' r, v8 V1 V
next;0 n+ q$ u. [1 p
next;
" L, l. r1 @% R( a3 u6 Z next;
) {3 d& \9 }/ K! I return false;! r. c, ?1 ~0 C/ g- P
end;+ q2 \* {6 t0 l& h
判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?7 L: v; j3 F& z! a8 N
|
|