|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:6 ]$ u/ y( ]. I: X; e2 a8 ]
(byref x1,y1,z1 : integer; part : object) : boolean
$ T) j4 @$ a/ s9 z7 D0 eis9 T! Q* `. g, A7 {& o% s3 Q
i,j,k,w : integer;
3 |+ {5 S1 h, y* ?do2 W5 h4 V& Q; ?8 m2 f1 _/ d1 @
for k := 1 to Crane.getStoreZDim loop
1 ?: e6 [) ]0 U" y0 G; c- X for i := Crane.getStoreXDim downto 1 loop) ~% }4 n- @* V; a. q
for j := 1 to Crane.getStoreYDim loop) q3 Y( v! L& n# K& R% o
if Crane.placeIsFree(i,j,k) then
4 ~. f7 {$ B: Y# d/ w, I# _9 r4 E x1 := i;# C- r O1 E, x
y1 := j;. R; G' |: v# ^( z+ |) O; @
z1 := k;6 s% _/ a8 i1 b3 w( @; w
if Crane.placeIsFree(14,1,2) then
+ B& ]2 ]+ \5 Q+ s1 Y9 b w:=1
+ e* e3 Y: F. f s# L- B' w end;
& A$ T; D# |# p5 }; \ return true;
+ n- _; Z: I4 |# h5 `' { end;7 b* {5 B# m: i$ ^" Q* Y
next;) E1 d* `( Y( F3 R! K. ^
next;
9 R- O" \% W" W; f- p; U+ Z* U Y next;
0 J5 L& J4 G# {# U4 ] return false;
3 _+ U% z$ t# a: `! Fend;" g/ b) C: `- u
判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?& S3 o5 z% s' x8 `: M* G
|
|