2 unit gracz4: coroutine;
\r
7 var players : arrayof boy;
\r
10 var pos,back : integer;
\r
11 var suicide,stab,finish,moveout : boolean;
\r
14 unit playerinit:procedure;
\r
18 players(i).pos:=tab(g,i);
\r
22 unit finishing:function(nr:integer):boolean;
\r
29 if i+kostka>endpos and i+kostka<endpos+5 and i<=endpos
\r
36 if (players(j).pos-100+1)=i+kostka-endpos
\r
45 unit suiciding:function(nr:integer):boolean;
\r
49 if players(nr).pos<>0
\r
55 if (players(nr).pos+kostka-1) mod 40 + 1 = players(i).pos
\r
56 andif players(i).pos<100
\r
66 if i<>nr andif players(i).pos=start
\r
74 unit stabing:function(nr:integer):boolean;
\r
85 if players(nr).pos > 0 and players(nr).pos <100
\r
87 b1:=(players(nr).pos+kostka-1) mod 40 +1 =tab(i,j) ;
\r
88 b2:=players(nr).pos>=start and b1;
\r
89 if b1 and (players(nr).pos+kostka-1) mod 40 + 1<=endpos orif b2
\r
95 result:=(kostka=6 and players(nr).pos=0 and tab(i,j)=start);
\r
103 unit atback:function(nr:integer):integer;
\r
104 var i,j,np:integer;
\r
106 np:=players(nr).pos;
\r
121 then result:=result+1;
\r
124 if tab(i,j) > 40-(6-np)
\r
125 then result:=result+1;
\r
139 andif tab(i,j) > np-7
\r
140 then result:=result +1;
\r
149 unit begining : function(nr:integer):boolean;
\r
151 result:=players(nr).pos=0 and kostka=6;
\r
154 unit move:function:integer;
\r
155 var i,j,k : integer;
\r
160 players(i).back:=atback(i);
\r
161 players(i).suicide:=suiciding(i);
\r
162 players(i).stab:=stabing(i);
\r
163 players(i).finish:=finishing(i);
\r
164 players(i).moveout:=begining(i);
\r
167 (********************* bije i wychodzi ************)
\r
170 if players(i).moveout
\r
181 ok:=true; exit exit exit;
\r
188 (******************** gonia go i konczy **************)
\r
193 if players(i).pos>0
\r
194 andif players(i).pos<100
\r
195 andif players(i).finish
\r
196 andif players(i).back > 0
\r
203 (******************** gonia go i bije ******************)
\r
208 if players(i).pos<100
\r
209 andif players(i).back>0
\r
210 andif players(i).stab
\r
217 (******************* bije ********************************)
\r
229 (******************** goni go conajmniej dwoch **********)
\r
234 if players(i).pos<100
\r
235 andif players(i).back>=2
\r
236 andif not players(i).suicide
\r
243 (******************* wychodzi ****************************)
\r
248 if players(i).moveout
\r
249 andif not players(i).suicide
\r
257 (******************* konczy *******************************)
\r
262 if players(i).finish
\r
270 (******************** gonia go **********)
\r
275 if players(i).pos<100
\r
276 andif players(i).pos>0
\r
277 andif players(i).back>0
\r
278 andif not players(i).suicide
\r
285 (******************* nie bije swojego *********************)
\r
290 if players(i).pos<100
\r
291 andif players(i).pos>0
\r
292 andif not players(i).suicide
\r
299 (******************* bije swojego *********************)
\r
304 if players(i).suicide
\r
313 if not ok then result:=0 fi;
\r
323 (****** MAIN *****)
\r
324 (*****************)
\r
329 array players dim(1:4);
\r
332 players(i):=new boy;
\r
338 call A.przesunpion(m);
\r