home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Rockford Magazine
/
Rockford_Magazine_026_19xx_-_de_Disk_1_of_2_Side_B.d64
/
quadrato
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2023-02-26
|
8KB
|
302 lines
1 rem *********************************
2 rem * q u a d r a t o *
3 rem * 1987 - c64 version f. brall *
4 rem * ein taktik u. strategie spiel *
5 rem * fuer kassette und diskette *
6 rem *********************************
7 rem * highscoretabelle nur auf disk *
8 rem *********************************
9 poke 56,144
10 dim brett (9,9):rem spielfeld
11 dim fenster (3,3):rem fenster
12 dim hn$(9):rem highscore name
13 dim hs (9):rem highscore punkte
20 farbram=55296
25 poke 53281,0:poke 53280,2
27 gosub 30000: rem copyright
30 gosub 22000: rem highscore init
40 :
80 cx=1:cy=1:rem cursorposition
85 quatrate = 20
100 s=0:rem score=0
103 p=1:rem picture=1
104 ba=5:rem bonusabzug
105 gosub 17000:rem bildschirm init
107 gosub 24000:rem sortiere
108 gosub 23000:rem highscoretabelle
110 b=2000:rem bonus score
111 n=0:rem flag fuer neues bild
115 gosub 10000:rem zeichne brett
120 gosub 11000:rem zeichne fenster
150 gosub 14000:rem zufallsfeld
160 gosub 15000:rem uebernehme fenster
170 gosub 16000:rem joystick/cursor
450 b=b-ba:if b<0 then b=0
455 poke 54296,15:poke 54276,0:poke 54273,30:poke 54277,5:poke 54276,17
490 if (j and 16)=0 then gosub 19000
500 gosub 18000:rem zeige bonus
504 if n=1then poke54296,15:poke 54276,0:poke54273,40:poke54277,10:poke 54276,17
505 if n=1 then p=p+1:quatrate=quatrate+1:ba=ba+1:goto 110
510 if b>0 then 170
511 poke 54276,0:for f=250 to 30 step -8
512 for i=1 to 10 :next i
513 poke54296,15:poke54273,f :poke54277,11:poke 54276,17
514 next f
515 gosub 24000:rem sortiere
520 gosub 23000:rem highscoretabelle
600 print"[159] another game y/n "
610 get e$:if e$="" then 610
620 if e$="y" then 80
630 if e$="n" then 650
640 goto 610
650 print"[147] dieses tronic-programm gibt es"
660 print" auch fuer den atari,c16 und ibm pc !"
670 print"[159] c64/c16/ibm version bei f.brall"
680 end
10000 rem zeige brett
10010 print"[158][176][195][178][195][178][195][178][195][178][195][178][195][178][195][178][195][178][195][174]"
10015 for i= 1 to 8
10020 print"[194] [194] [194] [194] [194] [194] [194] [194] [194] [194]"
10030 print"[171][195][219][195][219][195][219][195][219][195][219][195][219][195][219][195][219][195][179]"
10035 next i
10040 print"[194] [194] [194] [194] [194] [194] [194] [194] [194] [194]"
10050 print"[173][195][177][195][177][195][177][195][177][195][177][195][177][195][177][195][177][195][189]"
10051 print"[159] picture:"p
10052 for y= 1 to 9:for x=1 to 9:brett(x,y)=0:next x,y
10055 return
10060 :
11000 rem zeige fenster
11005 print"";
11010 printtab(23)"[176][195][178][195][178][195][174]"
11015 for i= 1 to 2
11020 printtab(23)"[194] [194] [194] [194]"
11030 printtab(23)"[171][195][219][195][219][195][179]"
11035 next i
11040 printtab(23)"[194] [194] [194] [194]"
11050 printtab(23)"[173][195][177][195][177][195][189]"
11052 for y= 1 to 3:for x=1 to 3:fenster(x,y)=0:next x,y
11055 return
11060 :
12000 rem setze stein (variable x,y)
12010 print"";
12012 brett(x,y)=1
12015 if y=1 then 12030
12020 for i=1 to y-1:print"";:next i
12030 print tab((1+(x-1)*2))" [146]"
12040 return
12050 :
13000 rem setze fensterstein (var x,y)
13010 print"";
13012 fenster(x,y)=1
13015 if y=1 then 13030
13020 for i=1 to y-1:print"";:next i
13030 print tab((24+(x-1)*2))" [146]"
13040 return
13050 :
14000 rem zufallsfeld
14010 for t= 1 to quatrate
14020 x=int(rnd(1)*9)+1
14030 y=int(rnd(1)*9)+1
14040 gosub 12000
14050 next t
14060 return
14070 :
15000 rem uebernehme in fenster
15020 xf=int(rnd(1)*7)+1
15030 yf=int(rnd(1)*7)+1
15040 for y= 1 to 3
15050 for x= 1 to 3
15060 if brett(xf+x-1,yf+y-1)=1 then gosub 13000
15070 next x:next y
15080 return
15090 :
16000 rem bewege cursor (joystick)
16020 poke 56322,244
16025 j=peek(56320)
16028 if (j and 15)= 15 then 16140
16030 sys 49152,cy,cx,7:rem cursor loeschen
16040 if (j and 1)=0 then cy=cy-1
16050 if (j and 2)=0 then cy=cy+1
16060 if (j and 4)=0 then cx=cx-1
16070 if (j and 8)=0 then cx=cx+1
16100 if cx>7 then cx=7
16110 if cx<1 then cx=1
16120 if cy>7 then cy=7
16130 if cy<1 then cy=1
16140 sys 49152,cy,cx,8
16150 poke 56322,255:return
16160 :
17000 rem bildschirm initialisieren
17005 print"[147][158]quadrato"
17006 print"[158]1987 bei"
17007 print"[158] f.brall"
17010 print"[156]highscore :[160]"
17020 print"bonusscore:[160]"
17030 print"your score:[160]"
17100 gosub 20000
17300 return
17310 :
18000 rem zeige bonus
18010 print" [157][157][157][157][157]"b
18100 return
18110 :
19000 rem fenster vergleichen
19005 u=0
19010 for y=0 to 2
19015 for x=0 to 2
19020 if brett(cx+x,cy+y)<>fenster(x+1,y+1) then u=1
19030 next x:next y
19040 if u=1 then s=s-b:n=0
19060 if u=0 then s=s+b:n=1
19070 if u=1thenpoke54296,15:poke54276,0:poke54273,60:poke54277,10:poke54276,17
19080 gosub 20000
19100 return
19110 :
20000 rem zeige score
20010 print" [157][157][157][157][157]"s
20100 return
20110 :
21000 rem *****************************
21001 rem * dieses unterprogramm er- *
21002 rem * stellt die disketten high-*
21003 rem * scoretabelle. *
21004 rem *****************************
21010 open 1,8,2,"@:qscr,s,w"
21011 for i= 1 to 9
21020 print#1,"frank "
21024 print#1,i*3500
21030 next i
21040 close 1
21050 print"highscoretabelle wurde erstellt !"
21060 return
21070 :
22000 rem highscore init/laden
22010 if peek(186)=8 then 22100
22015 for i= 1 to 9
22020 hn$(i)="frank "
22024 hs(i)=i*3500
22030 next i
22040 return
22090 :
22100 open 1,8,2,"qscr,s,r"
22110 for i= 1 to 9
22120 input#1,hn$(i)
22130 input#1,hs(i)
22140 next i
22150 close 1
22160 return
22170 :
23000 rem highscoretabelle anzeigen
23010 print"":print tab(20)" highscoretabelle [154]"
23050 for i=1 to 8
23060 print tab(19)i"[157]. "left$(hn$(i),9);""hs(i)
23070 next i
23100 return
23110 :
24000 rem sortiere highscore
24010 hn$(9)="!"
24020 hs(9)=s
24030 for i=1 to 9
24040 for t=1 to 9
24050 if hs(t)<hs(i) then gosub 24500
24060 next t:next i
24070 hs=hs(1):rem highscore
24080 gosub 25000
24100 for i= 1 to 8
24110 if hn$(i)<>"!" then 24130
24120 print"[158] name: ";
24122 input hn$(i):hn$(i)=hn$(i)+" "
24125 gosub 26000:rem save highscore
24130 next i
24300 return
24310 :
24500 ms=hs(i):m$=hn$(i)
24510 hs(i)=hs(t):hn$(i)=hn$(t)
24520 hs(t)=ms:hn$(t)=m$
24530 return
24540 :
25000 rem zeige highscore
25010 print" [157][157][157][157][157]"hs
25100 return
25110 :
26000 rem save highscore
26005 if peek(186)=1 then return
26010 open 1,8,2,"@:qscr,s,w"
26020 for i=1 to 9
26030 print#1,hn$(i)
26040 print#1,hs(i)
26050 next i
26060 close 1
26070 return
26080 :
30000 rem anfangsbild initialisierung
30010 print"[147][158] q u a d r a t o"
30020 print" c64 version f. brall"
30030 print" (c) 1987"
30040 print" bitte warten ich poke daten !"
30500 gosub 40000:rem music init
30510 gosub 60000:rem cursor mc-routine
30515 print"[159] press any key to continue "
30516 poke 198,0
30517 get e$:if e$="" then 30517
30518 sys 40752
30520 return
30530 :
40000 rem *** music initialisieren ***
40001 :
40002 dimh(75):fori=0to9
40003 h(48+i)=i:h(65+i)=i+10:next
40004 fori= 40474 to 40953 :reada$
40005 h=asc(left$(a$,1))
40006 l=asc(right$(a$,1))
40007 d=h(h)*16+h(l):s=s+d:pokei,d
40008 a=a+1:ifa<20thennext:a=-1
40009 readv:z=z+1:ifv=sthen40011
40010 print"datafehler in zeile :";40013+z:end
40011 ifa<0then40013
40012 s=0:a=0:next
40013 sys 40704 :return
40014 data 00,00,00,00,08,00,0a,65,00,00,00,00,00,0b,50,00,00,00,00,00, 210
40015 data 00,f0,00,00,00,00,00,a2,0e,14,a2,0e,28,6d,10,14,67,11,28,ed, 1194
40016 data 15,14,89,13,14,a2,0e,28,67,11,28,45,1d,14,45,1d,28,45,1d,14, 967
40017 data 14,1a,1e,ed,15,0a,89,13,14,ed,15,64,45,1d,14,45,1d,28,45,1d, 1232
40018 data 14,14,1a,1e,ed,15,0a,89,13,1d,89,13,01,a2,0e,14,a2,0e,0a,a2, 1250
40019 data 0e,14,67,11,28,a2,0e,14,a2,0e,28,ed,15,14,ed,15,14,89,13,1e, 1348
40020 data 67,11,0a,a2,0e,64,00,f7,0a,50,0a,0d,3c,a2,0e,3c,67,11,3c,ed, 1479
40021 data 15,3c,cf,22,3c,6d,10,78,f7,0a,3c,0a,0d,3c,a2,0e,3c,67,11,3c, 1443
40022 data f7,0a,3c,6d,10,3c,f7,0a,78,00,00,b5,08,50,f8,0a,3c,4f,0c,3c, 1617
40023 data a3,0e,3c,d0,22,3c,ee,15,3c,c5,09,78,b5,08,3c,f8,0a,3c,4f,0c, 1842
40024 data 3c,a3,0e,3c,f8,0a,3c,6e,10,3c,f8,0a,32,f8,0a,0a,6e,10,0a,68, 1617
40025 data 11,0a,6e,10,0a,f8,0a,0a,00,00,a9,01,8d,15,9e,8d,10,9e,8d,11, 1394
40026 data 9e,a9,fd,8d,12,9e,8d,13,9e,8d,14,9e,a2,18,bd,1b,9e,9d,00,d4, 2463
40027 data ca,10,f7,78,a9,48,8d,14,03,a9,9f,8d,15,03,58,60,60,60,a2,18, 2045
40028 data a9,00,9d,00,d4,ca,10,fa,78,a9,31,8d,14,03,a9,ea,8d,15,03,58, 2164
40029 data 60,60,a9,0f,8d,18,d4,ea,ce,15,9e,d0,48,ee,12,9e,ee,12,9e,ee, 2718
40030 data 12,9e,ad,12,9e,c9,63,f0,20,aa,a9,40,8d,04,d4,bd,35,9e,8d,00, 2398
40031 data d4,bd,36,9e,8d,01,d4,bd,37,9e,8d,15,9e,a9,41,8d,04,d4,18,90, 2448
40032 data 18,a9,fd,8d,12,9e,8d,13,9e,8d,14,9e,a9,01,8d,15,9e,8d,10,9e, 2205
40033 data 8d,11,9e,d0,5a,ce,10,9e,d0,28,a9,20,8d,0b,d4,ee,13,9e,ee,13, 2479
40034 data 9e,ee,13,9e,ae,13,9e,bd,99,9e,8d,07,d4,bd,9a,9e,8d,08,d4,bd, 2835
40035 data 9b,9e,8d,10,9e,a9,21,8d,0b,d4,ce,11,9e,d0,28,a9,10,8d,12,d4, 2379
40036 data ee,14,9e,ee,14,9e,ee,14,9e,ae,14,9e,bd,c5,9e,8d,0e,d4,bd,c6, 2898
40037 data 9e,8d,0f,d4,bd,c7,9e,8d,11,9e,a9,11,8d,12,d4,4c,31,ea,00,7f, 2431
60000 rem cursor mc-routine init
60005 fori=0to9
60010 h(48+i)=i:h(65+i)=i+10:next
60020 fori= 49152 to 49263 :reada$
60030 h=asc(left$(a$,1))
60040 l=asc(right$(a$,1))
60050 d=h(h)*16+h(l):s=s+d:pokei,d
60060 a=a+1:ifa<20thennext:a=-1
60070 readv:z=z+1:ifv=sthen60085
60080 print"datafehler in zeile :";60200+z:end
60085 ifa<0then60100
60090 s=0:a=0:next
60100 return
60201 data 20,fd,ae,20,9e,b7,a9,00,85,f9,a9,d8,85,fa,18,a5,f9,69,50,85, 2907
60202 data f9,a5,fa,69,00,85,fa,ca,d0,f0,20,fd,ae,20,9e,b7,18,a5,f9,69, 3177
60203 data 02,85,f9,a5,fa,69,00,85,fa,ca,d0,f0,38,a5,f9,e9,29,85,f9,a5, 3228
60204 data fa,e9,00,85,fa,20,fd,ae,20,9e,b7,86,fb,a2,05,a0,04,b1,f9,29, 2881
60205 data 0f,c9,06,f0,04,a5,fb,91,f9,88,10,f1,18,a5,f9,69,28,85,f9,a5, 2799
60206 data fa,69,00,85,fa,ca,d0,df,60,ce,08,29, 1722