|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:% Z. ~+ `" ?9 Z" a
(byref x1,y1,z1 : integer; part : object) : boolean: T, z* b. o P* T; G9 d, U+ K
is1 W( O/ a, N2 `( P9 _$ F
i,j,k,w : integer;. Z! a2 o( c) @* S
do% T6 a, p3 {- D3 a( _
for k := 1 to Crane.getStoreZDim loop
9 X& f3 k6 e. i& N& n5 l for i := Crane.getStoreXDim downto 1 loop$ j8 v3 e" V6 Z* N5 t2 x/ O* B
for j := 1 to Crane.getStoreYDim loop( O" }2 M; ^( j- U- A7 o, o( P
if Crane.placeIsFree(i,j,k) then
: G/ R/ O: d# B6 r x1 := i;! {9 ^; m7 ]! O M9 W
y1 := j; \7 h" }+ s2 g9 t
z1 := k;% d3 U) Y$ U; h/ {# @% I
if Crane.placeIsFree(14,1,2) then
! `; ?1 e) _- w9 E' K w:=1
9 o" E7 ^9 E* x2 _7 B3 t end;; K0 ^5 B9 l7 K9 H2 M/ R5 S) O; J
return true;
4 M$ |! o# H! @ end;# r7 s) [ Q2 N5 l6 G& |. v0 z+ q2 v
next;% I: ?: I" N4 C# b
next;; Y8 M( ]( x" z1 [9 s1 Y6 e
next;
) ~9 V% M2 N+ C return false;
$ W& x+ Z/ d. _0 B2 E' M& m" Dend;+ F9 f: M0 u% D1 n0 O" n# z9 _0 I8 u
判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教? P) L( ^& U8 f
|
|