Commodore Computer Club – pag. 86 – Attacco Aereo
Apparso da pagina 141 fino a pagina 149 de “Il libro dei giochi del Commodore 64”
Il listato pubblicato
Il programma
Il nostro listato digitato
Qui di seguito trovate il codice da copiare sul programma CBM prg Studio
Il codice originale é stato modificato affinchè possa essere letto da CBM prg Studio.
I caratteri speciali PETSCII (Screen Codes) presenti nel listato originale, sono stati singolarmente sostituiti da quelli standard utilizzati da CBM prg Studio.
Attenzione – Grazie alla segnalazione di più utenti, i caratteri “<” e “>” potrebbero venir sostituiti dai rispettivi encoding html “<” e “>” . Qualora li trovaste, sostituite manualmente questi valori direttamente su CBM prg Studio, altrimenti il programma non funzionerà.
Scusate per l’inconveniente tecnico.
10 rem ********************************
20 rem c=64 milano club
30 rem milano via sorrento 24
40 rem telefono 02-4566163
50 rem ********************************
60 rem filetto italiano (tris)
70 goto 520
80 rem giocatore croce
90 poke m,a:poke m+4,a:poke m+41,a
100 poke m+43,a:poke m+82,a:poke m+121,a
110 poke m+123,a:poke m+160,a:poke m+164,a
120 return
130 rem giocatore cerchio
140 poke m,233:poke m+4,223:poke m+160,95:poke m+164,105
150 for i=1 to 3
160 poke m+1,a:poke m+1+160,a
170 poke m+40*i,a:poke m+40*i+4,a
180 next i
190 poke m+82,32
200 return
210 for i=m+c to m+c+160 step 40
220 poke i,cc(n):poke i+1,cc(n):poke i+2,cc(n):poke i+3,cc(n):poke i+4,cc(n)
230 next i
240 return
250 rem sid
260 pokef1,42:poke f2,62
270 poke w,17
280 for d=1to60:next d:poke w,0
290 return
300 x=n:p(e)=x:m=s(e):on x gosub 90,90,140
310 gosub 210
320 for i=1to7 step 3
330 if p(i)<>p (i+1) then 360
340 if p(i)<>p (i+2) then 360
350 on p(i)+1 goto 360,1560,1560,1560
360 next i
370 for i=1 to 3
380 if p(i)<>p (i+3) then 410
390 if p(i)<>p (i+6) then 410
400 on p(i)+1 goto 410,1560,1560,1560
410 next i
420 if p(5)<>x then 450
430 if (p(1)=x) and (p(9)=x) then 1560
440 if (p(3)=x) and (p(7)=x) then 1560
450 for i=1 to 9
460 if p(i)=0 then 500
470 next i
480 print "gara pari!"
490 goto 1600
500 n=abs(n-4)
510 return
520 print "{home}{blue}" :poke 53281,1:poke 53280,0
530 w=54276:poke w,0
540 print tab(13) "{clear}{red} filetto {reverse on}{blue}"
550 for i=1to9:read s(i):next i
560 data 1114,1122,1130,1434,1442
570 data 1450,1754,1762,1770
580 print "{down}{down} dovete posizionare il vostro simbolo"
590 print " sulla griglia (tramite i numeri) in"
600 print " modo da ottenere un tris di simboli"
610 print " sulla stessa linea, orizzontale, ver-"
620 print " ticale od obliqua."
630 poke 54296,15:f1=54273:f2=54272:c=f2
640 poke w+1,128:poke w+2,16
650 a=160:cc(1)=6:cc(3)=10
660 print "{down} ricordatevi che giocate contro il "
670 print " computer, ed effettuerete una mossa"
680 print " per uno."
690 print "{down} x{blue} muove per primo."
700 y=3:z=1:ch=2
710 print "{down*2} premete {reverse on}{dark gray}f1{reverse on} {blue}per usare {reverse on}x{blue}"
720 print tab(10)"{reverse on}{dark gray}f3 {reverse on}{blue}per usare {reverse on}o{blue}"
730 get e$:if e$<>"{f1}" and e$<> "{f3}" then 730
740 if e$="{f1}" then y=1:z=3
750 poke198,0
760 print "{down*2} livello di gioco: {reverse on}{dark gray}f1 {reverse on}{blue} principiante"
770 print tab(18)" {reverse on}{dark gray}f3 {reverse on}{blue} quasi bravo"
780 get e$:if e$<>"{f1}" and e$<>"{f3}" then 780
790 if e$="{white}" then ch=1
800 print "{clear}{home}" :ct=int(14*rnd(0))+2
810 for i=1 to9:p(i)=0:next i
820 for i=1080 to 1960 step 40
830 poke i,a:poke i+c,ct
840 poke i+8,a:poke i+8+c,ct
850 next i
860 for i=1353 to 1375
870 pokei,a:poke i+c,ct:poke i+320,a:poke i+320+c,ct
880 next i
890 fori=1to9:poke s(i)+82,i+48
900 pokes(i)+82+c,0:nexti
910 n=1
920 if ch=2 then1050
930 if y=1 then 980
940 rem mossa del computer
950 e=int(9*rnd(0)+1):if p(e)<>0 then 950
960 gosub 300
970 rem mossa del giocatore
980 gosub 260
990 get e$:if e$=""then 990
1000 if e$<"1" or e$>"9" then 990
1010 e=val(e$): if p(e)<>0 then 980
1020 gosub 300
1030 on ch goto 950,1070
1040 rem mossa del computer
1050 if y=1 then 980
1060 rem
1070 if p(5)=0 then e=5:goto 1530
1080 if p(5)=x then 1150
1090 rem diagonals
1100 if p(1)=0 and p(9)=z then e=1:goto 1530
1110 if p(1)=z and p(9)=0 then e=9:goto 1530
1120 if p(3)=0 and p(7)=z then e=3:goto 1530
1130 if p(3)=z and p(7)=0 then e=7:goto 1530
1140 rem disegno delle colonne
1150 for k=1to3
1160 if p(k)=x or p(k+3)=x or p(k+6)=x then 1210
1170 if p(k)+p(k+3)+p(k+6)<>2*z then 1210
1180 if p(k)=0 then e=k:goto1530
1190 if p(k+3)=0 then e=k+3:goto 1530
1200 e=k+6:goto 1530
1210 next k
1220 rem linee
1230 for k=1to7 step 3
1240 if p(k)=x or p(k+1)=x or p(k+2)=x then 1290
1250 if p(k)+p(k+1)+p(k+2)<>2*z then 1290
1260 if p(l)=0 then e=k:goto 1530
1270 if p(k+1)=0 then e=k+1:goto 1530
1280 e=k+2:goto1530
1290 next k
1300 rem
1310 fork=1to3
1320 if p(k)=z or p(k+3)=z or p(k+6)=z then 1370
1330 if p(k)+p(k+3)+p(k+6)<>2*x then 1370
1340 if p(k)=0 then e=k:goto 1530
1350 if p(k+3)=0 then e=k+3: goto 1530
1360 e=k+6:goto 1530
1370 next k
1380 rem
1390 for k=1to7 step 3
1400 if p(k)=z or p(k+1)=z or p(k+2)=z then 1450
1410 if p(k)+p(k+1)+p(k+2)<>2*x then 1450
1420 if p(k)=0 then e=k:goto 1530
1430 if p(k+1)=0 then e=k+1:goto 1530
1440 e=k+2:goto 1530
1450 next k
1460 if p(5)=z then 1510
1470 if p(1)=0 and p(9)=x then e=1:goto 1530
1480 if p(1)=x and p(9)=0 then e=9:goto 1530
1490 if p(3)=0 and p(7)=x then e=3:goto 1530
1500 if p(3)=x and p(7)=0 then e=7:goto 1530
1510 goto 950
1520 rem
1530 gosub 300
1540 goto 980
1550 rem fine del gioco
1560 if x<>y then 1590
1570 print "hai vinto!!!"
1580 goto 1600
1590 print "ho vinto io!!!"
1600 for i=1to20
1610 poke f1,int(60*rnd(0)+30)
1620 poke f2,int(200*rnd(0)+10)
1630 gosub 270
1640 next i
1650 print"{down*22}giochi ancora?(s/n)";
1660 get e$:if e$="n" then 1700
1670 if e$<>"s" then 1660
1680 clr
1690 goto 520
1700 print "{home}"
1710 end
Il file .PRG del listato
Provalo direttamente sull’emulatore! Clicca sul pulsante per avviare!