Orbit – Commodore 64 – Basic V2

Libro: BASIC Computer Games – Anno: 1978 – Trascrizione e porting: Francesco Fiorentini

Quando ho visto il listato di Orbit ho pensato subito che si trattasse di un gioco divertente e facilmente trasportabile sul Commodore 64. Effettivamente il listato non presenta nessun comando estraneo al povero (in termini di istruzioni) Basic V2, ma non avevo messo in conto l’adattamento a 40 colonne e 25 righe. Ho dovuto sacrificare qualcosa per far entrare tutto nello schermo del biscottone, ma alla fine posso ritenermi soddisfatto del risultato. Il gioco si lascia giocare e mantiene inalterato il suo fascino.

Da qualche parte sopra il vostro pianeta c’è una nave Romulana. La nave si trova in un’orbita polare costante. La sua distanza dal centro del vostro pianeta è compresa tra 10.000 e 30.000 miglia e, alla velocità attuale, può girare intorno al vostro pianeta una volta ogni 12-36 ore.

Sfortunatamente i romulani stanno usando un dispositivo di occultamento e quindi non potete vederli, ma con uno strumento speciale potete capire quanto è vicina alla nave l’esplosione della vostra bomba atomica. Avete sette ore di tempo prima che i romulani accumulino energia sufficiente per sfuggire alla gravità del vostro pianeta, ed il vostro pianeta ha abbastanza energia per lanciare una bomba all’ora.

All’inizio di ogni ora vi verrà chiesto di indicare un angolo (tra 0 e 360) e una distanza in unità di 100 miglia (tra 100 e 300), dopodiché vi verrà indicata la distanza della vostra bomba dalla nave nemica.

Un’esplosione entro 5.000 miglia dalla nave romulana la distruggerà!

Il libro BASIC Computer Games puó essere recuperato qui:
https://archive.org/details/basic-computer-games-microcomputer-edition_202211

Titolo: Orbit
Piattaforma: Commodore 64
Linguaggio: Basic V2
Versione originale: Jeff Lederer
Pubblicazione: BASIC Computer Games
Anno: 1986
Trascrizione: Francesco Fiorentini
Porting: Francesco Fiorentini
Anno: 2024
Download: N/A
Note: Versione adattata per Commodore 64.

Istruzioni
All’inizio di ogni ora vi verrà chiesto di indicare un angolo (tra 0 e 360) e una distanza in unità di 100 miglia (tra 100 e 300), dopodiché vi verrà indicata la distanza della vostra bomba dalla nave nemica.
Un’esplosione entro 5.000 miglia dalla nave romulana la distruggerà.
Avete a disposizione 7 tentativi per cercare di colpire la nave Romulana, cercate di farne tesoro sapendo che la stessa orbita attorno al vostro pianeta in senso antiorario. Buona caccia!

Un esempio di una partita. Particolarmente fortunata…

Come sempre, qui di seguito trovate il codice ottimizzato per essere copiato direttamente su CBM prg Studio.

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: Orbit – Commodore 64 – Basic V2


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
1 print chr$(147): poke 53280,0: poke 53281,0:poke 646,7
2 print "    {reverse on}orbit{down*2}{reverse off}"
4 print "    creative computing"
5 print "    morristown, new jersey"
6 print:print
10 print "somewhere above your planet there is a "
15 print "romulan ship. the ship is in a constant"
20 print "polar orbit. its distance from the "
25 print "center of your planet is from 10,000 to"
30 print "30,000 miles and at its present "
31 print "velocity can circle your planet"
35 print "once every 12 to 36 hours."
38 print
40 print "unfortunately, they are using a "
45 print "cloaking device so you are unable to"
50 print "see them, but with a special instrument"
52 print "you can tell how near their ship your"
53 print "photon bomb exploded."
54 print: print: printtab(8)"{reverse on}hit any key to continue{reverse off}"
55 get a$:if a$="" goto 55
58 print chr$(147)
60 print "you have seven hours until they have"
64 print "built up sufficient power in order to"
65 print "escape your planet's gravity."
70 print
75 print "your planet has enough power to fire "
80 print "one bomb an hour."
82 print
85 print "at the beginning of each hour you will "
90 print "be asked to give an angle (between 0"
95 print "and 360) and a distance in units of 100"
96 print "miles (between 100 and 300), after"
100 print "which your bomb's distance from the"
102 print "enemy ship will be given."
105 print
110 print "an explosion within 5,000 miles of the"
111 print "romulan ship will destroy it."
112 print:print"here is the orbit and its angles"
115 print: print: printtab(8)"{reverse on}hit any key to continue{reverse off}"
116 get a$:if a$="" goto 116
117 print chr$(147)
168 print "                  90"
170 print "            0000000000000000"
171 print "          00000000000000000000"
173 print "        00000             00000"
174 print "       00000    xxxxxxx    00000"
175 print "      00000    xxxxxxxxx    00000"
176 print "     0000     xxxxxxxxxxx     0000"
177 print "    0000     xxxxxxxxxxxxx     0000"
178 print "1  0000     xxxxxxxxxxxxxxx     0000"
179 print "8<00000     xxxxxxxxxxxxxxx     00000>0"
180 print "0  0000     xxxxxxxxxxxxxxx     0000"
181 print "    0000     xxxxxxxxxxxxx     0000"
182 print "     0000     xxxxxxxxxxx     0000"
183 print "      00000    xxxxxxxxx    00000"
184 print "       00000    xxxxxxx    00000"
185 print "         0000             0000"
186 print "          0000000000000000000"
187 print "           00000000000000000"
188 print "                  270"
190 print " x - your planet"
191 print " o - the orbit of the romulan ship":print
192 printtab(8)"{reverse on}hit any key to continue{reverse off}"
193 get a$:if a$="" goto 193
197 print chr$(147)
200 print "on the above diagram, the romulan ship"
207 print "is circling counterclockwise around"
208 print "your planet. don't forget that without"
212 print "sufficient power the romulan ship's"
215 print "altitude and orbital rate will remain"
218 print "constant."
220 print
230 print "good luck."
240 print "the federation is counting on you."
270 a=int(360*rnd(1))
280 d=int(200*rnd(1)+200)
290 r=int(20*rnd(1)+10)
300 h=0
310 if h=7 then 490
320 h=h+1
325 print
326 print
330 print "{cyan}this is hour";h;
332 print "at what angle do you wish to send"
335 print "your photon bomb{yellow}";
340 input a1
350 print "{cyan}how far out do you wish"
355 print "to detonate it{yellow}";
360 input d1
365 print
366 print
370 a=a+r
380 if a<360 then 400
390 a=a-360
400 t=abs(a-a1)
410 if t<180 then 430
420 t=360-t
430 c=sqr(d*d+d1*d1-2*d*d1*cos(t*3.14159/180))
440 print "your photon bomb exploded"
442 print c;"* 10^2 "
445 print "miles from the romulan ship."
450 if c<=50 then 470
460 goto 310
470 print:print "{red}you have succesfully"
475 print "completed your mission.{yellow}":print
480 goto 500
490 print: print "{red}you have allowed the romulans"
495 print "to escape. you lost!{yellow}":print
500 print "another romulan ship"
505 print "has gone into orbit."
510 print "do you wish to try to destroy it";
520 input c$
530 if c$="yes" then 270
540 print "good bye."
999 end

Share

One thought on “Orbit – Commodore 64 – Basic V2

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.