这个例子昨天正好看了,话说那本书的例子都很不错~
$ O! E* n4 H7 O m. }8 E不过你还得把前面的表格看明白了才行,不然我这边解释也不行的。
# N$ ]. h( [2 H' d0 h& X, p4 Y- Eis5 P: N7 {7 ?% n9 X
i,no,m:integer; --定义整型1 ?+ c& ? N3 {. z
Buf:object; --定义object' ` O4 H- h9 O( h2 ^1 p
do
8 G0 j5 n3 \. F) O' e/ K# D m:=0;
9 Z' e$ b7 F( S3 X no:=@.getNo; --拾取进入系统的实体编号(每一个物体系统都会默认的给他一个编号的,出来你自己定义外)- U9 g/ l' z# _) B ^6 L7 C1 r
for i:=1 to PartsTable.Ydim loop --YDIm就是指这个表格一共多少行
6 J* d* J9 y8 `' H8 g" i+ R3 z: {- b if PartsNo=m and no<=PartsNo+PartsTable[2,i] then . o! l3 n4 Q; G+ z
@._From:=PartsTable[5,i]; 9 g' K3 A) ]5 m; P$ a5 Q7 }
@._To:=PartsTable[6,i];
* Y# d- ^7 \- l- g9 `. M; A if no=PartsNo+PartsTable[2,i] then ; Y6 d2 h5 p8 W
PartsNo:=PartsNo+PartsTable[2,i]; --这边整个语句实际就是在说,PartsNo就是要运送的数目(表格第二列的都是运送数目),而no与m就是用来辅助不断向下读取表格的数据的(这个逻辑你要自己推敲,说的话可就长了,把数字一个个带进去)
! Y8 r3 n% O$ j: O* D! e; ~' R* B+ ~3 N$ Y7 Z. G% E
end;
k) J& g6 J/ f4 j* D5 e9 L i:=PartsTable.YDim+1;+ [7 S7 ?2 o3 a# H; q, M% m
end;* `- H4 H3 X9 X: m, `
m:=m+PartsTable[2,i];
2 A# Q' K7 g X next;
4 S+ G# _0 D1 }7 O. |: C0 k W ! I1 h6 f! y: [1 r Z: @" x
Buf:=str_to_obj(sprint("BF",@._From));
2 z m! s( [# }, i) D7 w @.move(Buf);
" S, p' a/ n$ P, n" Nend; |