123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- 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
- 17400 goto 16700
- 17500 rem
- 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
|