Dogfight – TI99/4A – Extended Basic

Libro: 99’er Magazine – Anno: 1981 – Trascrizione: Francesco Fiorentini

Tratto da Wikipedia: https://it.wikipedia.org/wiki/Combattimento_aereo
Il combattimento aereo è conosciuto internazionalmente come dogfight (dall’inglese dog = cane e fight = combattimento). Questo termine venne utilizzato per secoli per indicare una zuffa: una feroce, rapida battaglia tra due o più nemici. Il termine guadagnò popolarità durante la Seconda Guerra Mondiale, anche se il suo utilizzo nel combattimento aereo può essere fatto risalire agli ultimi anni della Prima Guerra Mondiale. Il primo riferimento scritto all’utilizzo odierno della parola compare nel numero della rivista The Graphic del 1918 dedicato alla morte del Barone von Richthofen: ‘Il Barone si unì alla mischia, la quale, dividendosi in gruppi, si sviluppò in quello che gli uomini chiamano “a dog fight” (un combattimento tra cani).

Il vostro aereo si controlla con 4 tasti direzionali. A differenza della maggior parte dei giochi, il tasto premuto non fa muovere immediatamente l’aereo in quella particolare direzione.
Ad esempio, se l’aereo sta scendendo verso destra con una direzione di 135 gradi e si preme “E” o la freccia verso l’alto, l’aereo girerà il muso verso l’alto e cambierà prima la sua direzione a 90 gradi, poi a 45 gradi e infine a nord, cioè dritto. Questo dà all’aereo un movimento più realistico e rende impossibile una virata irrealistica di 180 gradi.
Per effettuare una virata di 180 gradi, è necessario premere un tasto che indichi la direzione della virata. Ad esempio, se si viaggia verso est (da sinistra a destra) e si desidera effettuare una virata di 180 gradi verso ovest, è necessario premere prima “E” o “X” per indicare la virata verso l’alto o verso il basso. La pressione di “S”, il tasto direzionale sinistro, non avrà alcun effetto. In modo analogo, il giocatore che utilizza il lato destro della tastiera usa I, J, K e M per muovere l’aereo.
Premendo i tasti “F” e “H” si spara con il cannoncino, ma è possibile sparare un solo colpo alla volta. Ogni colpo ha una gittata limitata e non può essere portato oltre il bordo dello schermo fino al bordo opposto.

Questo listato é stato pubblicato sulla rivista 99’er Magazine Volume 1 No. 3, ad opera di W. K. Balthrop nel 1981. La rivista era pubblicata da Gary M. Kaplan.

Titolo: Dogfight
Piattaforma: TI99/4A
Linguaggio: TI Extended Basic
Versione originale: W. K. BALTHROP
Pubblicazione: 99’er Magazine Volume 1 No. 3
Anno: 1981
Trascrizione: Francesco Fiorentini
Anno: 2024
Download: N/A
Note: Usare il TI Extended Basic.

Istruzioni

Aereo 1 usate i tasti:
E – sú, X – giú, S– sinistra, D – destra, F – fuoco

Aereo 2 usate i tasti:
I – sú, M – giú, J – sinistra, K – destra, H – fuoco

Qui di seguito trovate il codice da copiare sul vostro TI99/4A oppure su un emulatore, noi suggeriamo Classic99.

Di seguito le istruzioni per caricare il listato sull’emulatore Classic99:
– Copiare il listato di cui sotto
– Avviare l’emulatore
– Da Cartridge -> Apps, selezionare Extended Basic
– Premere un tasto qualsiasi
– Dopodiché premere 2 per avviare il TI Extended Basic
– Dal comando Edit, selezionare Paste XB per incollare il listato
– Digitare RUN per eseguire il codice
Buon divertimento!

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:  Dogfight – TI99/4A – TI Extended 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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
100 REM*************
110 REM* DOGFIGHT*
120 REM*************
130 REM 99'ER VERSION 9.81.1XB
140 REM BY W. K. BALTHROP
150 REM
160 REM
170 CALL CLEAR:: CALL SCREEN(6)
180 P=1 :: P1=5
190 CALL CHAR(96,"0000000081C0E2F73F3E07102000000000000000F8017DFDFF05FD217070")
200 CALL CHAR(100,"000001020409010B0706FFFF7E4A02022090086CFAE9D8807CDC98")
210 CALL CHAR(104,"0F01077FFFFFFFFF7F06070703060E1EE000C0FCFEFEFEFEFCC0C0C080C0E0F0")
220 CALL CHAR(108,"040910365F971B0D3E3B19000000000000008040209080D0E060FFFF7C524040")
230 CALL CHAR(112,"000000001F80BEBFFFA0BF840E0E000000000000810347EFFCFCF00804")
240 CALL CHAR(116,"00000000050811274F1E904B3C100804303C383CF8FFB060C080E0E0C0")
250 CALL CHAR(120,"0F0703010303033F7F7F7F7F3F030007787060C0E0E060FEFFFFFFFFFEE080F0")
260 CALL CHAR(124,"0C3C1C1C3C1FFF00060301070703000000000000A01088E4F278B9D27C081020")
270 CALL CHAR(128,"00000000000000010100000000000000000000000000008080")
280 CALL CHAR(132,"FC7E3C38180C04012030301C1F030000FC783870F0604080040C0C38F0C0")
290 CALL MAGNIFY(3)
300 DISPLAY AT(2,9):"DOGFIGHT"
310 CALL SPRITE(#1,96,2,120,20,0,5,#2,112,2,70,240,0,-5)
320 FOR TD=1 TO 2 :: CALL SOUND(1500,110,2,220,2,1000,30,-8,2)
330 NEXT TD:: CALL SOUND(1,9999,30)
340 CALL DELSPRITE(#1,#2):: CALL CLEAR
350 DISPLAY AT(5,1): "ENTER FIRST PLAYER'S NAME:" :: ACCEPT AT(7,3)SIZE(8):PLA1$
360 DISPLAY AT(11,1):"ENTER SECOND PLAYER'S NAME:" :: ACCEPT AT(13,3)SIZE(8):PLA2$
370 CALL CLEAR
380 DISPLAY AT(4,3):"OPTIONS:"
390 DISPLAY AT(6,5):"1. BEGINNER" :: DISPLAY AT(8,5):"2. NOVICE"
400 DISPLAY AT(10,5): "3. INTERMEDIATE" :: DISPLAY AT(12,5):"4. PROFESSIONAL"
410 CALL KEY(0,KEY,S)
420 IF KEY<49 OR KEY> 52 THEN 410 ELSE V=2*(KEY-48)
430 CALL CLEAR::DISPLAY AT(5,3):"DO YOU WANT A DAY MISSION, OR A NIGHT NISSION? (D/N)"
440 CALL KEY(0,KEY,S)
450 IF KEY=68 THEN CO1=6 :: CO2=2 :: GOTO 470
460 IF KEY=78 THEN CO1=2 :: CO2=6 ELSE 440
470 CALL CLEAR
480 CALL SCREEN(CO1)
490 CALL SPRITE(#1,96,8,70,16,0,V,#2,112,11,70,240,0,-V)
500 CALL KEY(1,K1,S1):: CALL KEY(2,K2,S2)
510 IF S1=0 AND S2=0 THEN 820
520 IF S1=0 THEN 680
530 IF K1<>5 THEN 570 ELSE IF P>3 AND P<8 THEN P=P-1 ELSE IF P<3 OR P=8 THEN P=P+1
540 IF P=0 THEN P=8
550 IF P=9 THEN P=1
560 GOTO 650
570 IF K1<>0 THEN 610 ELSE IF P>3 AND P<7 THEN P=P+1 ELSE IF P<3 OR P=8 THEN P=P-1
580 IF P=9 THEN P=1
590 IF P=0 THEN P=8
600 GOTO 650
610 IF K1<>2 THEN 630 ELSE IF P>5 THEN P=P-1 ELSE IF P<5 AND P>1 THEN P=P+1
620 GOTO 650
630 IF K1<>3 THEN 660 ELSE IF P<5 AND P>1 THEN P=P-1 ELSE IF P>5 THEN P=P+1
640 IF P=9 THEN P=1
650 CALL PATTERN(#1, (P*4)+92):: ON P GOSUB 910,920,930,940,950,960,970,980 :: GOTO 670
660 IF K1=12 THEN GOSUB 990
670 IF S2=0 THEN 820
680 IF K2<>5 THEN 720 ELSE IF P1>3 AND P1<8 THEN P1=P1-1 ELSE IF P1<3 OR P1=8 THEN P1=P1+1
690 IF P1=0 THEN P1=8
700 IF P1=9 THEN P1=1
710 GOTO 800
720 IF K2< >0 THEN 760 ELSE IF P1>3 AND P1<7 THEN P1=P1+1 ELSE IF P1<3 OR P1=S THEN P1=P1-1
730 IF P1=O THEN P1=8
740 IF P1=9 THEN P1=l
750 GOTO 800
760 IF K2 <>2 THEN 780 ELSE IF P1>5 THEN P1=P1-1 ELSE IF P1<5 AND P1 >1 THEN P1=P1+1
770 GOTO 800
780 IF K2 <>3 THEN 810 ELSE IF P1<5 AND P1>1 THEN P1=P1-1 ELSE IF P1>5 THEN P1=P1+1
790 IF P1=9 THEN P1=1
800 CALL PATTERN(#2, (P1*4)+92):: ON P1 GOSUB 1110,1120,1130,1140,1150,1160,1170,1180 :: GOTO 820
810 IF K2=1 THEN GOSUB 1190
820 CALL COINC(#2,#3,3*V,PC):: IF PC=-1 THEN 1500
830 CALL COINC(#1,#4,3*V,PC):: IF PC=-1 THEN 1350
840 CALL COINC(#1,#2,2.5*V,PC):: IF PC=-1 THEN 1220
850 CALL SOUND(-4250,110,2,220,2,-8,2)
860 IF SH1=0 THEN 880
870 CALL POSITION(#3,B3,B4) :: IF B3<6 OR B3>186 OR B4<8 OR B4>250 THEN CALL DELSPRITE(#3) :: SH1=0
880 IF SH2=0 THEN 900
890 CALL POSITION (#4,C3,C4):: IF C3<6 OR C3>186 OR C4<8 OR C4>250 THEN CALL DELSPRITE(#4) :: SH2=0
900 GOTO 500
910 CALL MOTION(#1,0, V):: RETURN
920 CALL MOTION(#1,-V*.6,V*.6):: RETURN
930 CALL MOTION(#1,-V,0):: RETURN
940 CALL MOTION(#1,-V*.6,-V*.6):: RETURN
950 CALL MOTION(#1,0,-V):: RETURN
960 CALL MOTION(#1,V*.6,-V*6):: RETURN
970 CALL MOTION(#1,V,0):: RETURN
980 CALL MOTION(#1,V*.6, V*.6):: RETURN
990 IF SH1=1 THEN RETURN
1000 CALL POSITION(#1,B1,B2)
1010 P3=P :: SP=3 :: A1=B1 :: A2=B2 :: SH1=1
1020 ON P3 GOTO 1030,1040,1050,1060,1070,1080,1090,1100
1030 CALL SPRITE(#SP,128,CO2,A1,A2,0,V*2):: RETURN
1040 CALL SPRITE(#SP,128,CO2,A1,A2,-V*1.6,V*1.6):: RETURN
1050 CALL SPRITE(#SP,128,CO2,A1,A2,-V*2,0):: RETURN
1060 CALL SPRITE(#SP,128,CO2,A1,A2,-V*1.6,-Vl*1.6):: RETURN
1070 CALL SPRITE(#SP,128,CO2,A1,A2,0,-v*2):: RETURN
1080 CALL SPRITE(#SP,128,CO2,A1,A2,V*1.6,-V*1.6):: RETURN
1090 CALL SPRITE(#SP,128,CO2,A1,A2,V*2,0):: RETURN
1100 CALL SPRITE(#SP,128,CO2,A1,A2, V*1.6, V*1.6):: RETURN
1110 CALL MOTION(#2,0,V):: RETURN
1120 CALL MOTION(#2,-V*.6,V*.6):: RETURN
1130 CALL MOTION(#2,-V,0):: RETURN
1140 CALL MOTION(#2,-V*.6,-V*.6):: RETURN
1150 CALL MOTION(#2,0,-V):: RETURN
1160 CALL MOTION(#2,V*.6,-V*.6):: RETURN
1170 CALL MOTION(#2,V,0):: RETURN
1180 CALL MOTION(#2,V*.6,V*.6):: RETURN
1190 IF SH2=1 THEN RETURN
1200 CALL POSITION(#2,C1,C2)
1210 A1=C1 :: A2=C2 :: P3=P1 :: SP=4 :: SH2=1 :: GOTO 1020
1220 CALL MOTION(#1,0,0,#2,0,0):: CALL POSITION(#1,PO1,PO2,#2,PO3,PO4)
1230 CALL SPRITE(#1,132,10,PO1,PO2,20,0,#2,132,10,PO3,PO4,20,0)
1240 CALL POSITION(#1,CR1,CR2)
1250 CALL POSITION(#2,CR3,CR4)
1260 IF CR1>186 OR CR3>186 THEN CALL DELSPRITE(#1,#2)
1270 CALL SOUND(-1000,110,2,220,2,-7,0)
1280 IF CR1<>O OR CR3<>0 THEN 1240
1290 CALL DELSPRITE(#1,#2,#3,#4)
1300 CALL SCREEN (6)
1310 DISPLAY AT(5,13):"CRAAAASSSH"
1320 DISPLAY AT(10,5):"BOTH TEAMS CRASHED."
1330 DISPLAY AT(12,5):"NO POINTS AWARDED."
1340 GOTO 1640
1350 CALL DELSPRITE(#3,#4)
1360 CALL MOTION(#1,0,0):: CALL POSITION(#1,PO1,PO2)
1370 CALL SPRITE(#1,132,10,PO1,PO2,20,0)
1380 CALL SOUND(-1000,440,2,220,2,-4,0)
1390 CALL POSITION(#1,CR1,CR2)
1400 IF CR1<186 THEN 1380
1410 CALL DELSPRITE(#1,#2)
1420 RED=RED+1
1430 CALL SCREEN(6)
1440 DISPLAY AT(5,1):PLA2$;" HAS WON THE BATTLE."
1450 DISPLAY AT(9,3):PLA2$;" SCORE IS : "
1460 DISPLAY AT(9,26):RED
1470 DISPLAY AT(11,3):PLA1$;" SCORE IS:"
1480 DISPLAY AT(11,26):BLUE
1490 GOTO 1640
1500 CALL DELSPRITE(#3,#4)
1510 CALL MOTION(#2,0,0):: CALL POSITION(#2,PO1,PO2)
1520 CALL SPRITE(#2,132,10,PO1,PO2,20,0)
1530 CALL SOUND(-1000,440,2,220,2,-4,0)
1540 CALL POSITION(#2,CR3,CR4)
1550 IF CR3<186 THEN 1530
1560 CALL DELSPRITE(#2,#1)
1570 BLUE=BLUE+1
1580 CALL SCREEN(6)
1590 DISPLAY AT(5, 1):PLA1$;" HAS WON THE BATTLE."
1600 DISPLAY AT(8,3):PLA1$;" SCORE IS:"
1610 DISPLAY AT(8,26):BLUE
1620 DISPLAY AT(10,3):PLA2$;" SCORE IS:"
1630 DISPLAY AT(10,26):RED
1640 IF RED=10 OR BLUE=10 THEN 1690
1650 DISPLAY AT(20,3):"WANT TO TRY AGAIN? (Y/N)"
1660 PC=0 :: SH1=0 :: SH2=0 :: P=1 :: P1=5
1670 CALL KEY(0,KEY,S)
1680 IF KEY=89 THEN 370 ELSE IF KEY<>78 THEN 1670
1690 IF BLUE>RED THEN PRINT PLA1$;" HAS WON THE WAR.": "SORRY, "; PLA2$ :: GOTO 1720
1700 IF RED>BLUE THEN PRINT PLA2$;" HAS WON THE WAR.": "SORRY, "; PLA1$ :: GOTO 1720
1710 PRINT "THE WAR HAS ENDED IN A TIE. BOTH SIDES ARE NOW AT PEACE."
1720 END

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.