|
|
请教关于PortalCrane的问题,实在想不明白。发现placeIsFree调用的一个问题:当通过PortalCrane的Strategy下的自定义可利用位置(Define your own method for searching an available location)时,自定义程序为:7 k+ O" p7 M# l J0 z M2 o
(byref x1,y1,z1 : integer; part : object) : boolean
/ i A+ Z1 M- X; ]$ b" Q$ M2 Q* nis
1 ]# C4 u1 N A4 R9 K i,j,k,w : integer;
0 N5 G# k: k/ G& vdo2 b# J& L7 K6 j9 ]8 {$ l: j
for k := 1 to Crane.getStoreZDim loop8 F" k! K2 h# i u
for i := Crane.getStoreXDim downto 1 loop- p* J5 `/ I6 E5 |6 ^; C- i
for j := 1 to Crane.getStoreYDim loop
, ^7 k, J" f% M* e( P( l' Y if Crane.placeIsFree(i,j,k) then2 @0 R* Y7 b6 Y2 A0 |
x1 := i;( J# g" s& V* w$ m# U
y1 := j; Y6 r: _/ s! e, A$ p: u- U8 z8 _
z1 := k;( v* ?3 V7 o r2 \5 g/ w
if Crane.placeIsFree(14,1,2) then
3 Q1 e9 n/ Y8 |6 L0 g w:=1$ b3 P4 _! }3 v1 o3 a" R6 }! D
end;% S( a# @" N$ j/ F6 H" W+ N
return true;) r1 A a3 [2 V* _, i' Y$ E+ c
end;; b0 t0 l9 b% q$ ? L0 }1 H
next;
v$ l1 e- ?% f5 c2 Z next;
" _2 I9 ]; j) l) a next;
' j+ \6 g+ v# K9 p# A9 t return false;+ @. {; z: ?0 ?
end;) J. m% \* y9 @$ q9 F
判断的位置(14,1,2)的Free是True;而在某个程序中直接调用placeIsFree时, 判断的(14,1,2)的Free是False。保证两次判断位置(14,1,2)一直没有被占用。想知道是什么原因?placeIsFre方法到底该如何用?请求赐教?
) a* s; D' v) [! H |
|