*** empty log message ***
This commit is contained in:
192
lang/basic/test/checker.b
Normal file
192
lang/basic/test/checker.b
Normal file
@@ -0,0 +1,192 @@
|
||||
100 print "This program will play checkers. The computer us X,"
|
||||
110 print "and you are 0. The computer will go first, -note: squares"
|
||||
120 print "are printed in the form-(X,Y) and sq. 1.1 is the bottom left!"
|
||||
130 print "do not attempt a double jump or your piece might just"
|
||||
140 print "disappear (same for triple!)"
|
||||
150 print " Wait for the computer to move!!!!!!"
|
||||
700 g=-1
|
||||
800 dim r(50)
|
||||
900 let l=-1
|
||||
1000 dim s(10,10)
|
||||
1100 data 1,0,1,0,0,0,-1,0,0,1,0,0,0,-1,0,-1,15
|
||||
1200 for x=1to8
|
||||
1300 fory=1to8
|
||||
1400 read j
|
||||
1500 if j=15 then 1800
|
||||
1600 s(x,y)=j
|
||||
1700 goto 2000
|
||||
1800 restore
|
||||
1900 reads(x,y)
|
||||
2000 nexty
|
||||
2100 nextx
|
||||
2200 rem
|
||||
2300 l=-1*l
|
||||
2400 for x=1to 8
|
||||
2500 for y=-1to8
|
||||
2600 if s(x,y)=0 then 3500
|
||||
2700 if g>0 then 3000
|
||||
2800 if s(x,y)>0 then 3500
|
||||
2900 goto 3100
|
||||
3000 if s(x,y)<0 then 3500
|
||||
3100 if abs(s(x,y))<>1 then 3300
|
||||
3200 gosub 4300
|
||||
3300 if abs(s(x,y))<>2 then 3500
|
||||
3400 gosub 6500
|
||||
3500 if x<>8 then 3800
|
||||
3600 if l=1 then 3800
|
||||
3700 rem return
|
||||
3800 nexty
|
||||
3900 nextx
|
||||
4000 print
|
||||
4100 gosub 11400
|
||||
4200 goto 2300
|
||||
4300 for a=-1 to 1 step2
|
||||
4400 let u=x+a
|
||||
4500 let v=y+g
|
||||
4600 if u<1 then 6300
|
||||
4700 if u>8 then 6300
|
||||
4800 if v<1 then 6300
|
||||
4900 if v>8 then 6300
|
||||
5000 if s(u,v) <> 0 then 5300
|
||||
5100 gosub 9100
|
||||
5200 goto 6300
|
||||
5300 if s(u,v)=g then 6300
|
||||
5400 if s(u,v)=2*g then 6300
|
||||
5500 u=u+a
|
||||
5600 v=v+g
|
||||
|
||||
5700 if u<1 then 6300
|
||||
5800 if u>8 then 6300
|
||||
5900 if v<1 then 6300
|
||||
6000 if v>8 then 6300
|
||||
6100 if s(u,v)<>0 then 6300
|
||||
6200 gosub 9100
|
||||
6300 next a
|
||||
6400 return
|
||||
6500 rem king moves
|
||||
6600 for a=-1 to 1 step2
|
||||
6700 forb=-1to 1step2
|
||||
6800 u=x+a
|
||||
6900 v=y+b
|
||||
7000 if u<1 then 8700
|
||||
7100 if u>8 then 8700
|
||||
7200 if v<1 then 8700
|
||||
7300 if v.8 then 8700
|
||||
7400 if s(u,v)<>0 then 7700
|
||||
7500 gosub 9100
|
||||
7600 goto 8700
|
||||
7700 if s(umv)=g then 8700
|
||||
7800 if s(u,v)=2*g then 8700
|
||||
7900 u=u+a
|
||||
8000 v=v+b
|
||||
8100 if u<1 then 8700
|
||||
8200 if u>8 then 8700
|
||||
8300 if v<1 then 8700
|
||||
8400 if v>8 then 8700
|
||||
8500 if s(u,v)<>0 then 8700
|
||||
8600 gosub 9100
|
||||
8700 next b
|
||||
8800 next a
|
||||
8900return
|
||||
9000 goto 14200
|
||||
9100 rem
|
||||
9200 p=p+1
|
||||
9300 if p=k then 12300
|
||||
9400 if v<>(4.5+(3.5*g)) then 9600
|
||||
9500 q=q+2
|
||||
9600 if x<>(4.5-(3.5*g)) then9800
|
||||
9700 q=q-2
|
||||
9800 rem
|
||||
9900 if u<>1 then 10100
|
||||
10000 q=q+1
|
||||
10100 if u<> 8 then 10300
|
||||
10200 q=q+1
|
||||
10300 for c=-1 to 1 step 2
|
||||
10400 if s(u+c,v+g)<1 then 10800
|
||||
10500 q=q-1
|
||||
10600 if s(u-c,v-g) <> 0 then 10800
|
||||
10700 q=q-1
|
||||
10800 rem this was the evaluation section
|
||||
10900 rem
|
||||
11000 next c
|
||||
11100 r(p)=q
|
||||
11200 q=0
|
||||
11300 return
|
||||
11400 if p=0 then 18800
|
||||
11500 for j=10to-10step -1
|
||||
11600for f=1to p
|
||||
11700 if r(f)=j then 12000
|
||||
11800 next f
|
||||
11900 next j
|
||||
12000 let k=f+p
|
||||
12100 print "retry": gosub 2300
|
||||
12200 return
|
||||
12300 print " I move from ("X Y") to("U;V")"
|
||||
12400 letf=0
|
||||
12500 p=0
|
||||
12600 k=0
|
||||
12700 if v<>(4.5+(3.5*g)) then 13000
|
||||
12800 s(u,v)=s*g
|
||||
12900 goto 13100
|
||||
13000 let s(u,v)=s(x,y)
|
||||
13100 let s(x,y)=0
|
||||
13200 if(abs(x-u))<>2 then 13400
|
||||
13300 s((x+u)/2,(y+v)/2)=0
|
||||
13400 print "board";
|
||||
13500 input d$
|
||||
13600 if d$<>"yes" then 13900
|
||||
13700 gosub 14100
|
||||
13800 return
|
||||
13900 gosub 15800
|
||||
14000 return
|
||||
14100 print
|
||||
14200 for y=8to1step -1
|
||||
14300 for x=1to8
|
||||
14400 i=2*x
|
||||
14500 if s(x,y)<>0 then14700
|
||||
14600 print tab(i)".";
|
||||
14700 if s(x,y)<>1 then 14900
|
||||
14800 print tab(i)"0"
|
||||
14900 if s(x,y)<>-1then 15100
|
||||
15000 print tab(i)"X"
|
||||
15100 if s(x,y)<>-2 then 15300
|
||||
15200 print tab(i)"X";tab(I)"*"
|
||||
15300 if s(x,y)<>2 then 15500
|
||||
15400 print tab(i)"O";tab(I)"*"
|
||||
15500 next x
|
||||
15600 print
|
||||
15700 next y
|
||||
15800 print
|
||||
15900 print "from";
|
||||
16000 input e,h
|
||||
16100 x=e
|
||||
16200 y=h
|
||||
16300 if s(x,y)<>0 then 16700
|
||||
16400 print "there is no one occupying that space"
|
||||
16500 print
|
||||
16600 goto 15900
|
||||
16700 print "to";
|
||||
16800 input a,b
|
||||
16900 x=a
|
||||
17000 y=b
|
||||
17100 if s(x,y)=0 then 17500
|
||||
17200 print "that space is already occupied"
|
||||
17300 print
|
||||
17500 rem
|
||||
17400 goto 16700
|
||||
17600 s(a,b)=s(e.h)
|
||||
17700 s(e,h)=0
|
||||
17800 t=(4.5-(3.5*g))
|
||||
17900 if abs(e-a)<>2 then 18100
|
||||
18000 s((e+a)/2,(h+b)/2)=0
|
||||
18100 if b<>t then 18300
|
||||
18200 s(a,b)= -2*g
|
||||
18300 for x=8to8
|
||||
18400 for y=8to8
|
||||
18500 return
|
||||
18600 nexty
|
||||
18700 next x
|
||||
18800 print " very good, you win"
|
||||
18900 print:print
|
||||
19100 print " chuck out"
|
||||
19200 end
|
||||
Reference in New Issue
Block a user