home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Input 64
/
Input_64_87-03_1987_Verlag_Heinz_Weise_de.d64
/
tic-tac-toe
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2023-02-26
|
4KB
|
197 lines
5 gosub30000:rem titel
10 gosub20000:rem init
1000 gosub12000:rem spielfeld
1010 ifwn=2then1600
1100 z=z+1
1200 gosub10000:rem computerzug
1300 gosub4500:rem gewonnen?
1400 ifgw=1thenz5$="c64":cw=cw+1:gosub14000:goto3000
1500 ifv=1then4000
1510 wn=2
1600 z=z+1
1700 gosub13000:rem spielerzug
1800 gosub4500:rem gewonnen?
1900 ifgw=1thenz5$="spieler":sw=sw+1:gosub15000:goto3000
2000 ifv=1then4000
2010 wn=1
2100 goto1100
3000 ze=20:sp=0:gosub11000:printz3$
3010 gosub11000
3020 print"gewonnen hat der ";z5$
3050 fori=1to9:bt(i)=0:tp(i)=0:next
3060 p=0
3070 getx$:ifx$=""then3070
3080 goto1000
4000 ze=20:sp=0:gosub11000:printz3$
4010 gosub11000
4020 print"unentschieden"
4030 uw=uw+1
4035 gosub14000
4040 goto3050
4500 ge=0:g1(1)=bt(1)+bt(2)+bt(3)
4510 g1(2)=bt(4)+bt(5)+bt(6)
4520 g1(3)=bt(7)+bt(8)+bt(9)
4530 g1(4)=bt(1)+bt(4)+bt(7)
4540 g1(5)=bt(2)+bt(5)+bt(8)
4550 g1(6)=bt(3)+bt(6)+bt(9)
4560 g1(7)=bt(1)+bt(5)+bt(9)
4570 g1(8)=bt(3)+bt(5)+bt(7)
4580 fori=1to8:ifg1(i)=3org1(i)=-3thengw=1
4590 next
4600 v=1
4610 fori=1to9
4620 ifbt(i)=0thenv=0
4630 next
4640 return
5000 print"[147]"
5010 ze=10:sp=1:gosub11000
5020 print"[150]mehr spiele kann ich mir nicht merken!"
5030 ze=13:sp=7:gosub11000
5040 print"bitte neu starten (taste)"
5050 getx$:ifx$=""then5050
5060 run10
10000 z4$="[154]x":pf=0:gf=0
10005 fora=1to9
10010 ifbt(a)<>0then10160
10012 pf=a
10020 iffs=0thenpf=0:gosub10200:goto10160: rem naechstmoeglichen zug
10030 gosub10300:rem naechsten zug suchen
10040 ifgn=1thengosub10200:goto10160
10160 next
10162 ifpf>0thengosub10500:goto10190
10170 ifa>=15thenv=0:goto10190
10180 ifa>=9thenv=1
10190 return
10200 ze=kw(a,0):sp=kw(a,1)+1
10210 gosub11000:rem cursor setzen
10220 printz4$
10230 p=p+za(a):tp(z)=p:bt(a)=1
10240 a=15
10250 return
10300 p1=p+za(a)
10310 fori=1tofs
10320 iff(i,z,0)=p1thengosub10360:goto10340
10330 gn=1
10340 next
10350 return
10360 iff(i,z,1)=0thenmk=i:gn=1:goto10380
10370 gn=0
10380 i=fs+10
10390 return
10500 ifa>=15then10850
10560 z1=z-2:ifz1<=0then10820
10570 p1=tp(z1):ab=0
10580 fori=1tofs
10590 iff(i,z1,0)=p1thenf(i,z1,1)=1:ab=1
10600 next
10820 fora=1to9
10830 ifbt(a)=0thengosub10200
10840 next
10842 ifab=0then10850
10845 gf=1
10850 return
11000 pokecs,sp:pokecz,ze:pokecp,0:syssc
11010 return
12000 iffs>=dfthen5000
12008 z=0
12010 z1$="[158] [221] [221]"
12020 z2$=" [192][192][192][219][192][192][192][219][192][192][192]"
12030 z3$=" "
12040 print"[147]"
12050 fori=1to3:printz1$:next
12060 printz2$
12070 fori=1to3:printz1$:next
12080 printz2$
12090 fori=1to3:printz1$:next
12100 fori=1to9:ze=kw(i,0):sp=kw(i,1)
12110 gosub11000
12120 printi:next
12130 ze=20:sp=0:gosub11000
12140 wn=1
12170 printz4$
12190 ze=20:sp=0:gosub11000
12200 printz3$
12210 gs=cw+sw+uw
12220 ze=1:sp=23:gosub11000
12230 print"[150]spiele ges.:";"[155]"gs
12240 ze=4:sp=23:gosub11000
12250 print"[150]davon gewonnen:"
12272 ze=7:sp=23:gosub11000
12274 print"c64: ";"[155]"cw
12280 ze=8:sp=23:gosub11000
12290 print"[150]spieler: ";"[155]"sw
12300 ze=11:sp=23:gosub11000
12310 print"[150]unentsch.: ";"[155]"uw
12320 return
13000 ze=20:sp=0:gosub11000
13010 printz3$:gosub11000
13020 print"welches feld? ";
13030 getx$:ifx$=""then13030
13040 ifasc(x$)<49orasc(x$)>57then13030
13050 x=asc(x$)-48
13060 ifbt(x)=0then13120
13070 ze=20:sp=0:gosub11000
13080 printz3$:gosub11000
13090 print"feld ist schon besetzt!! (taste) ";
13100 getx$:ifx$=""then13100
13110 goto13000
13120 bt(x)=-1:z4$="[209]"
13130 p1=za(x)*2:p=p+p1
13140 tp(z)=p
13150 ze=kw(x,0):sp=kw(x,1)+1
13160 gosub11000
13170 printz4$
13180 return
14000 gw=0
14008 ifgf=1thengf=0:goto14050
14010 fs=fs+1
14020 fori=1to9
14030 f(fs,i,0)=tp(i)
14040 next
14050 return
15000 gw=0
15008 ifgf=1thengf=0:goto16000
15010 fs=fs+1
15020 z=z-1
15030 fori=1to9
15040 f(fs,i,0)=tp(i)
15050 next
15060 f(fs,z,1)=1
15070 fori=1tofs
15080 iff(i,z,0)=tp(z)thenf(i,z,1)=1
15090 next
16000 return
20000 df=100
20010 dimf(df,9,1),kw(9,1)
20030 cs=782:cz=781:sc=65520:fs=0:cp=783
20040 kw(1,0)=2:kw(1,1)=9:kw(2,0)=2:kw(2,1)=13:kw(3,0)=2:kw(3,1)=17
20050 kw(4,0)=6:kw(4,1)=9:kw(5,0)=6:kw(5,1)=13:kw(6,0)=6:kw(6,1)=17
20060 kw(7,0)=10:kw(7,1)=9:kw(8,0)=10:kw(8,1)=13:kw(9,0)=10:kw(9,1)=17
20070 za(1)=1
20080 fori=2to9:za(i)=za(i-1)*3:next
25000 return
30000 ifpeek(50307)=120thenpoke50257,0
30010 printchr$(147)chr$(14)chr$(8);
30020 poke53280,0:poke53281,0
30030 rv$=" "
30040 print"[154]";rv$;" [196]as selbstlernende [212]ic-[212]ac-[212]oe ";rv$;
30050 print" (c) [201][206][208][213][212]64 (w) [203].-[198]. [208]robst ";rv$
30060 print:print"[159][213]m '[211]elbstlernende [208]rogramme' werden"
30070 print"viele grosse [215]orte gemacht. [196]ass dies"
30080 print"sogar mit kleinen [194][193][211][201][195]-[208]rogrammen"
30090 print"geht, zeigt dieses [211]piel.":print
30095 print"[196]as [208]rogramm versucht, aus seinen [198]eh-"
30100 print"lern zu lernen und die [218]uege nicht zu"
30110 print"wiederholen, mit denen es verloren hat."
30120 print"([193]uf '[211]ieg' zu spielen, ist bei diesem"
30130 print"[211]piel theoretisch unsinnig, weil es "
30140 print"bei richtiger [211]pielweise beider [211]pieler"
30150 print"nur ein '[213]nentschieden' geben kann.)"
30160 print
30170 print"[196]er [197]infachheit halber beginnt immer"
30180 print"der [195]omputer.":print
30190 print:print"[154][211]tart mit irgendeiner [212]aste!";
30195 poke198,0
30200 getw$:ifw$=""then30200
30210 printchr$(147)chr$(142):return