Nine Hole Golf – Oric Basic

Granada – The Oric Book of Games – Anno 1984 – Trascrizione: Fernando Coello

Continua il lavoro di trascrizione di Fernando Coello. Questa volta ci ha inviato un simpatico gioco del golf, anche questo scritto in Basic, per un’altra macchina ad 8bit del passato, l’ORIC.

Se volete saperne di piu’ riguardo all’ORIC, una macchina poco conosciuta in Italia, vi consiglio di leggervi gli articoli “Un fantasmagORICo home computer” parte 1 e 2, apparsi sui numeri 10 ed 11 della nostra rivista a firma di David La Monaca.

Il listato originale di Nine Hole Golf e’ invece stato pubblicato sul libro The Oric Book of Games del 1984, edito da Granada Publishing.

Titolo: Nine Hole Golf
Piattaforma: ORIC
Linguaggio: Basic
Versione originale: ???
Pubblicazione: Granada – The Oric Book of Games
Anno: 1984
Trascrizione: Fernando Coello
Anno: 2021
Download: Nine Hole Golf
Note: Emulatore suggerito, Oricutron.

Scopo del gioco
Questo è un gioco di grafica che combina il percorso di avvicinamento alla buca e il gioco sul green, includendo anche il pericolo dei bunker. Si gioca su un percorso di nove buche con due fasi per ogni buca – il percorso e il green. Da notare, nella prima fase, il golfista che fa il suo swing e come la palla voli in aria.

Qui di seguito trovate il codice da copiare sul vostro computer Oric.
Il codice é pronto per essere copiato su un emulatore, consigliamo Oricutron.
Per caricare il codice sull’emulatore, una volta copiato il codice sottostante nella clipboard, pulsante destro e quindi Paste from Clipboard.

Istruzioni
All’inizio di ogni buca ti viene comunicata la distanza dalla buca – segnata sullo schermo da una bandiera – e ti viene chiesto di selezionare quale mazza usare. Se hai mai giocato a golf, o l’hai visto in TV, saprai che più basso è il numero della mazza, più lontano verra’ spedita la palla. In altre parole, seleziona il ferro 1 per un tiro lungo e il ferro 8 per i colpi ravvicinati. Se atterri in un bunker scoprirai che il tuo prossimo colpo non sara’ così efficace come lo sarebbe normalmente.
Se superi il green avrai un nuovo tentativo di buca, ma se spingi la palla fuori dallo schermo, perdi la buca e passi a quella successiva. Una volta che sei abbastanza vicino alla buca ti ritroverai sul green. Un messaggio ti dirà quanto lontano sei dalla buca e ti chiederà di selezionare la mazza appropriata. Se oltrepassi la buca, dovrai continuare a tirare fino a quando la tua pallina non entra in buca. Il tuo punteggio per ogni buca viene visualizzato alla fine di ognuna di esse e una scheda di punteggio per tutte le nove buche viene visualizzata alla fine di ogni giro.

Chi volesse provare il gioco direttamente puó scaricare il file SNA, uno snapshot (si veda la voce Download).
Una volta avviato l’emulatore, pulsante destro e Load Snapshot...

Attenzione – Ci siamo resi conto che nel listato i caratteri ‘>’ e ‘<‘ potrebbero venir sostituiti dai rispettivi encoding html ‘&gt’ e ‘&lt’. Nel caso, sostituite questi valori nel listato prima di copiarlo sull’emulatore.

Listato:  Nine Hole Golf – Oric – Basic


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
10 REM Golf
20 CH=46080
30 FOR Q=1 TO 3
40 READ C
50 FOR I=0 TO 7
60 READ D
70 POKE CH+C+I,D
80 NEXT I
90 NEXT Q
100 DATA 264,8,12,14,8,8,8,8,62
110 DATA 512,12,30,45,30,12,18,18,33
120 DATA 280,12,30,31,46,62,60,28,24
130 DIM T(9)
140 XH =0:XC=0
150 YH=0:HT=0:YC=0
170 FOR H=1 TO 9
180 HIRES
190 PAPER 2: INK 7
200 PRINT "Hole Number ";H
220 FOR Z=1 TO 8
230 XB=INT(RND(1)*80)+80
240 YB=INT(RND(1)*40)+50
250 CURSET XB,YB,0
260 CHAR 35,0,1
270 NEXT Z
300 X=INT(RND(1)*20)+20
310 Y=INT(RND(1)*30)+120
320 XT=INT(RND(1)*50)+150
330 YT=INT(RND(1)*10)+20
340 D=SGN(XT-X)*SQR((XT-X)*(XT-X)+(YT-Y)*(YT-Y))
350 CURSET XT,YT,0
360 CHAR 33,0,1
370 CURSET X,Y,0
380 CHAR 64,0,1
400 PRINT "Distance to next hole is ";INT(D)
410 INPUT "Which club (1 to 8)";C
420 IF C<1 OR C>8 THEN GOTO 420
430 C=(9-C)
440 GOSUB 1160
480 GOSUB 800
490 B=1
500 D=SGN(XT-X1)*SQR((XT-X1)*(XT-X1)+(YT-Y1)*(YT-Y1))
510 IF D<-15 THEN PRINT "You overshot-try another hole":WAIT 100:GOTO 180
520 IF D<12 THEN PRINT "ON THE GREEN":WAIT 200:GOTO 1320
530 CURSET X1,Y1,0
540 CHAR 46,0,0
550 CURSET X,Y,0
560 CHAR 64,0,0
570 X=X1
580 Y=Y1
590 GOTO 350
640 PRINT "You took ";T(H);" strokes"
650 WAIT 200:PRINT CHR$(17)
660 NEXT H
670 CLS
680 PRINT:PRINT
690 PRINT SPC(15);"This Round"
700 COL=1:R0W=5:GOSUB 1700
720 FOR I=1 TO 9
730 PRINT SPC(10);"Hole ";I;
740 IF T(I)=-1 THEN PRINT " lost ball":GOTO 760
750 PRINT " ";T(I);" strokes"
760 NEXT I
765 ROW=20:COL=5:GOSUB 1700
770 INPUT "Another round Y/N";A$
775 PRINT CHR$(17)
780 IF A$ = "Y" THEN RUN
790 CLS : STOP
800 VT=C*(1+RND(1)*.01)
810 HT=0
820 XH=0
840 Q=(Y-YT)/(XT-X)
850 VV=-VT*(SIN(45*PI/180))
860 XC=X+3
870 YC=Y+3
880 VH=VT*(COS(45*PI/180))
890 HT=HT+VV
900 YH=Q*XH
910 VV=VV+1
920 XH=XH+VH
930 YH=-Q*XH
940 IF XH+XC>250 THEN GOTO 1100
950 IF YH+HT+YC<0 THEN GOTO 1100
960 IF HT>=0 THEN GOTO 1040
970 CURSET XH+XC,YH+HT+YC,0
980 CHAR 46,0,1
1000 WAIT 3
1010 CURSET XH+XC,YH+HT+YC,0
1020 CHAR 46,0,0
1030 GOTO 890
1040 X1=XH+XC
1050 Y1=YH+HT+YC
1070 CURSET X1,Y1,O
1080 CHAR 46,0,1
1090 RETURN
1100 YH=0:YT=0:YC=0:XH=0:XC=0
1110 PRINT "You've lost your ball "
1120 PING
1130 T(H)=-1
1140 WAIT 300
1150 POP:GOTO 660
1160 T(H)=T(H)+1
1170 XS=X+4
1180 YS=Y+4
1190 FOR S=-5 TO -40 STEP -5
1200 A=S/30*PI
1210 SX=10*SIN(A)
1220 SY=-10*COS(A)
1230 CURSET XS,YS,0
1240 DRAW SX,SY,2
1250 IF SO<>-30 THEN WAIT 10
1260 IF S=-30 THEN PING
1270 CURSET XS,YS,0
1280 DRAW SX,SY,2
1300 NEXT S
1310 RETURN
1320 TEXT:PRINT CHR$(17)
1330 PAPER 2
1340 XG=INT(RND(1)*5)+1
1350 YG=15
1360 XH=INT(RND(1)*15)+10
1370 YH=15
1380 D=XH-XG
1390 IF D<0 THEN D=ABS(D)
1400 PLOT XH,YH,"O"
1410 PLOT XG,YG,"@"
1420 R0W=22:C0L=1:GOSUB 1700
1440 PRINT "Distance to hole is ";D;"   "
1450 INPUT "Which club (1 to 8)";C
1460 IF C<1 OR C>8 THEN GOTO 1450
1470 T(H)=T(H)+1
1480 H1=8-C+INT(RND(1)*2)
1485 IF D=1 AND C=8 THEN H1=1
1490 D=D-H1
1500 FOR Z=XG+1 TO XG+H1
1510 PLOT Z,YH,"."
1520 WAIT 10
1530 PLOT Z,YH," "
1540 NEXT Z
1550 PLOT XG,YG," "
1560 XG=XG+H1
1570 IF XG=XH THEN GOTO 640
1580 IF D<0 THEN CLS:XG=XH+D:GOTO 1380
1590 GOTO 1400
1700 DOKE #12,48040+R0W*40+COL-1
1710 POKE #268,ROW+1
1720 POKE #269,COL/2
1730 RETURN

Share

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.