DECLARE SUB drawmap () DECLARE SUB dototalexplosion () DECLARE SUB pres () DECLARE SUB spaceshield () DECLARE SUB dmissile () DECLARE SUB dshield () DECLARE SUB subex () DECLARE SUB firemissiles () SCREEN 12 RANDOMIZE TIMER CLS pres drawmap dototalexplosion CLS day = 0 usat = 6000 japt = 15000 usas = 200 japs = 300 usah = 1 japh = 0 usav = 0 japv = 0 PRINT "Scegli lo scenario": PRINT : PRINT : PRINT PRINT "1-La situazione Š insostenibile: 2-Il Giappone ha dichiarato guerra,ma" PRINT "la guerra Š dichiarata dalle due la situazione Š tesissima. Causa in-" PRINT "parti; distruggi tutto ci• che genti danni al Giappone e cerca di" PRINT "puoi. evitarne agli USA. ": PRINT PRINT PRINT "3-Il Giappone ha attaccato gli 4-La guerra Š dichiarata dagli USA," PRINT "Stati Uniti, ma l'opinione pub- e per non farsi condannare dagli al-" PRINT "blica mondiale condanna tutti le tri Stati devi limitare al minimo i" PRINT "aggressioni. Limita le vittime. morti." PRINT : PRINT 31 yy$ = "" WHILE yy$ = "": yy$ = INKEY$: WEND IF yy$ > "4" OR yy$ < "1" THEN yy$ = "": GOTO 31 scen = VAL(yy$) 39 CLS : day = day + 1 PRINT "Ore:"; day PRINT SPC(20); " Giappone ³ U.S.A." PRINT SPC(20); " ÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ" PRINT SPC(20); "Testate "; japt; : PRINT TAB(48); "³ "; usat PRINT SPC(20); "Sommergibili "; japs; : PRINT TAB(48); "³ "; usas PRINT SPC(20); "Scudi spaziali "; japh; : PRINT TAB(48); "³ "; usah PRINT SPC(20); "Morti (in milioni)"; japv; : PRINT TAB(48); "³ "; usav rs$ = "": rr$ = "": rd$ = "": rf$ = "": rh$ = "": rb$ = "": rj$ = "": rk$ = "" PRINT : PRINT : PRINT : PRINT "-Continuare l'offensiva?"; 3333 WHILE rr$ = "": rr$ = INKEY$: WEND IF rr$ <> "s" AND rr$ <> "n" THEN rr$ = "": GOTO 3333 PRINT rr$ IF rr$ = "s" THEN ttt = 0: GOTO 101 PRINT "-Chiedere la pace? "; 3332 WHILE rs$ = "": rs$ = INKEY$: WEND IF rs$ <> "s" AND rs$ <> "n" THEN rs$ = "": GOTO 3332 IF rs$ = "s" AND (japv / 1.2 > usav OR japv > 65) AND RND > .1 THEN PRINT "Pace accettata!": vict = 2: GOTO 999: ELSE PRINT "Pace rifiutata!" GOTO 102 IF usat = 0 THEN GOTO 102 101 PRINT "-Quante testate lanciare (massimo 99)?"; 3331 WHILE rd$ = "": rd$ = INKEY$: WEND IF rd$ > "9" OR rd$ < "0" THEN rd$ = "": GOTO 3331 PRINT rd$; 3330 WHILE rf$ = "": rf$ = INKEY$: WEND IF rf$ > "9" OR rf$ < "0" THEN rf$ = "": GOTO 3330 PRINT rf$ ttt = (10 * VAL(rd$)) + VAL(rf$) IF ttt > usat THEN PRINT "Non hai tutte queste testate...": rf$ = "": rd$ = "": GOTO 101 102 PRINT "-Usare lo scudo spaziale?"; IF usah = 0 OR sht = 3 THEN sht = 0: usah$ = "OFF": PRINT "n": GOTO 103 3335 WHILE rh$ = "": rh$ = INKEY$: WEND IF rh$ <> "n" AND rh$ <> "s" THEN rh$ = "": GOTO 3335 PRINT rh$ IF rh$ = "s" THEN usah$ = "ON": sht = sht + 1: ELSE usah$ = "OFF": sht = 0 103 IF day <> 1 THEN GOTO 104 PRINT "-Quanti 1/9 della flotta di sommergibili in difesa? "; 3336 WHILE rb$ = "": rb$ = INKEY$: WEND IF rb$ > "9" OR rb$ < "0" THEN rb$ = "": GOTO 3336 PRINT rb$ rrrrr = VAL(rb$) usads = INT(usas / 9 * rrrrr): usaas = usas - usads uuuuu = INT(RND * 9) japds = INT(japs / 9 * uuuuu): japas = japs - japds 104 IF usah$ = "OFF" THEN GOTO 500 PRINT "-Quanti lanci del nemico previsti?"; 3337 WHILE rk$ = "": rk$ = INKEY$: WEND IF rk$ > "9" OR rk$ < "0" THEN rk$ = "": GOTO 3337 PRINT rk$; 3338 WHILE rj$ = "": rj$ = INKEY$: WEND IF rj$ > "9" OR rj$ < "0" THEN rj$ = "": GOTO 3338 PRINT rj$ jjj = (10 * VAL(rk$)) + VAL(rj$) PRINT : PRINT "Preparati..." 500 iii = INT(RND * 50) + 49 IF sht = 0 THEN iii = 99: IF iii > japt THEN iii = 0 IF usah$ = "ON" AND iii > 0 THEN tazz = ABS(iii - jjj): ELSE tazz = 0: GOTO 501 resm = iii - tazz 501 IF japas = 0 OR usads = 0 THEN japasp = 0: usadsp = 0: GOTO 502 japasp = INT(japas / usads * RND) usadsp = INT(usads / japas * RND) 502 IF japas = 0 OR usaas = 0 THEN japdsp = 0: usaasp = 0: GOTO 503 japdsp = INT(japds / usaas * RND) usaasp = INT(usaas / japds * RND) 503 japp = japasp + japdsp: usap = usaasp + uasdsp japas = japas - japasp: japds = japds - japdsp usaas = usaas - usaasp: usads = usads - usadsp japs = japas + japds usas = usaas + usads 400 usav = usav + (resm * .2) japv = japv + (ttt * .2) usatp = usap * INT(RND * 6) + 4 usat = usat - usatp usat = usat - INT(usaas * .1): ttt = ttt + INT(usaas * .1): japv = japv + (usaas * .03) japtp = japp * INT(RND * 6) + 4 japt = japt - japtp japt = japt - INT(japas * .1): resm = resm + INT(japas * .1): usav = usav + (japas * .03) usat = usat - (resm * INT(RND * 20)) japt = japt - (ttt * INT(RND * 20)) IF usah = 1 AND day > 2 AND RND > .5 AND resm > 20 THEN usah$ = "OOO" IF usat < 0 THEN usat = 0 IF japt < 0 THEN japt = 0 CLS PRINT "I Giapponesi lanciano "; resm + tazz; " missili": firemissiles CLS IF tazz > 0 THEN PRINT tazz; " missili distrutti": spaceshield: dmissile: tazz = 0 CLS IF usah$ = "OOO" THEN usah = 0: usah$ = "OFF": PRINT "Scudo spaziale perso": spaceshield: dshield CLS IF resm > 0 THEN PRINT resm; " citt… americane distrutte": drawmap: dototalexplosion CLS IF usap > 0 THEN PRINT usap; " sommergibili americani distrutti": usap = 0: subex CLS IF ttt > 0 THEN PRINT "Gli Americani lanciano "; ttt; " missili": firemissiles CLS IF ttt > 0 THEN PRINT ttt; " citt… giapponesi distrutte": drawmap: dototalexplosion CLS IF japp > 0 THEN PRINT japp; " sommergibili giapponesi distrutti": japp = 0: subex CLS IF japv > 90 THEN vict = 1: CLS : PRINT : PRINT : PRINT "Giapponesi arresi!!": GOTO 1000 IF usav > 150 THEN vict = 0: CLS : PRINT : PRINT : PRINT "Americani arresi!!": GOTO 1000 IF day = 7 THEN vict = 2: PRINT : PRINT : PRINT "Fine guerra!!": GOTO 1000 GOTO 39 999 WHILE INKEY$ = "": WEND: CLS 1000 IF scen = 4 AND japv < 10 AND usav < 12 THEN scen$ = "SI": GOTO 1020 IF scen = 3 AND japv < 50 AND usav < 25 THEN scen$ = "SI": GOTO 1020 IF scen = 2 AND japv > 30 AND usav < 30 THEN scen$ = "SI": GOTO 1020 IF scen = 1 AND japv > 60 AND usav < japv THEN scen$ = "SI": GOTO 1020 scen$ = "NO" 1020 IF vict = 2 AND japv > usav THEN vic$ = "SI" ELSE vic$ = "NO" IF vict = 1 THEN vic$ = "SI" IF vict = 0 THEN vic$ = "NO" PRINT "Vittoria guerra: "; vic$ PRINT "Risoluzione scenario: "; scen$ PRINT : PRINT : PRINT IF japv > 80 THEN PRINT "Il Giappone Š stato completamente distrutto. Nessuna possibilit… di ripresa": GOTO 450 IF japv > 50 THEN PRINT "Il Giappone ha subito ingenti danni. Qualche possibilit… di ripresa": GOTO 450 IF japv > 20 THEN PRINT "Il Giappone ha subito grossi danni, ma sono buone le possibilit… di ripresa": GOTO 450 PRINT "Il Giappone ha subito leggeri danni. La ripresa Š certa" 450 IF usav > 130 THEN PRINT "Gli USA sono stati completamente distrutti. Nessuna possibilit… di ripresa": GOTO 555 IF usav > 75 THEN PRINT "Gli USA hanno subito ingenti danni. Qualche possibilit… di ripresa": GOTO 555 IF usav > 35 THEN PRINT "Gli USA hanno subito grossi danni, ma sono buone le possibilit… di ripresa": GOTO 555 PRINT "Gli Stati Uniti hanno subito leggeri danni. La ripresa Š certa" 555 PRINT : PRINT : PRINT "Premi un tasto per uscire." WHILE INKEY$ = "": WEND CLS SUB dmissile FOR a = 600 TO 400 STEP -50 LINE (a, 223)-(a + 15, 224), 15, BF FOR t = 1 TO 30: NEXT t LINE (a, 223)-(a + 15, 224), 0, BF NEXT a LINE (320, 225)-(400, 225), 12 FOR a = 1 TO 20 STEP .02 CIRCLE (400, 225), a, 4 NEXT a END SUB SUB dototalexplosion FOR a = 1 TO 296 STEP 37 LINE (320, a)-(320, a + 8), 15 FOR t = 1 TO 30: NEXT t LINE (320, a)-(320, a + 8), 0 NEXT a FOR a = 1 TO 120 CIRCLE (320, 240 + a), a, 15, , , 1 IF a > 35 THEN CIRCLE (320, 240 + a), a - 35, 14, , , 1 IF a > 60 THEN CIRCLE (320, 240 + a), a - 60, 12, , , 1 NEXT a END SUB SUB drawmap STATIC LINE (1, 300)-(640, 480), 8, BF IF contr = 1 THEN GOTO 3 DIM city(16000) aa = 300: bb = 330 FOR a = 5 TO 70 STEP 5 FOR b = 5 TO 30 STEP 5 bbb = b / 5 * 6 LINE (aa + a - bbb, bb + bbb + b)-(aa + a - bbb + 3, bb + bbb + b + 12), 8, BF LINE (aa - bbb + a + 1, bb + 1 + bbb + b)-(aa - bbb + a + 2, bb + bbb + b + 11), INT(RND * 14), BF NEXT b NEXT a aa = 290: bb = 310 FOR a = 5 TO 110 STEP 5 FOR b = 5 TO 60 STEP 5 c = INT(RND * 27): IF c > 15 THEN c = 8 bbb = b / 5 * 6 IF a > 15 AND a < 100 AND b > 10 AND b < 45 THEN GOTO 56 LINE (aa + a - bbb, bb + bbb + b)-(aa + a - bbb + 3, bb + bbb + b + 4), 8, BF LINE (aa - bbb + a + 1, bb + 1 + bbb + b)-(aa - bbb + a + 2, bb + bbb + b + 5), c, BF 56 NEXT b NEXT a contr = 1: GET (230, 300)-(390, 480), city FOR t = 1 TO 500: NEXT t GOTO 4 3 PUT (230, 299), city, OR 4 END SUB SUB dshield FOR a = 600 TO 300 STEP -50 LINE (a, 223)-(a + 15, 224), 15, BF FOR t = 1 TO 30: NEXT t LINE (a, 223)-(a + 15, 224), 0, BF NEXT a FOR a = 1 TO 200 STEP 4 CIRCLE (230, 225), a, 15, , , 1 / 3 NEXT a END SUB SUB firemissiles FOR a = 480 TO 10 STEP -10 FOR b = 200 TO 400 STEP 20 LINE (b, a)-(b, a + 10), 15 NEXT b FOR t = 1 TO 30: NEXT t FOR b = 200 TO 400 STEP 20 LINE (b, a)-(b, a + 10), 0 NEXT b NEXT a END SUB SUB pres DRAW "bm50,100 p5,0 u50 r10 f40 u40 r10 d50 l10 h40 d40 l10" DRAW "br130 bu50 f50 e40 f40 e50 l10 g40 h40 g40 h40 l10" DRAW "bd50 br160 e50 f50 l10 h20 l40 g20 l10" DRAW "br120 u50 r60 f10 d10 g10 l10 f20 l10 h20 l30 d20 l10" PAINT (52, 98), 5: PAINT (184, 52), 5: PAINT (400, 70), 5: PAINT (500, 60), 5 LOCATE 15, 1: PRINT "Il gioco della guerra atomica" PRINT "Conosci gli antefatti?" WHILE aaa$ = "": aaa$ = INKEY$: WEND IF aaa$ <> "n" THEN GOTO 57 CLS PRINT "Anno 2002" PRINT : PRINT "Giappone e USA sono in conflitto. La competizione tra i due stati ha portato" PRINT "alla guerra atomica. Il Giappone dispone di missili atomici comprati dai russi" PRINT "e numerosi sottomarini atomici forniti di numerose testate. Gli USA invece" PRINT "dispongono di pochi missili, perchŠ molti sono stati smantellati, di numerosi" PRINT "sommergibili e di uno scudo spaziale" PRINT : PRINT "Tu in questo gioco disporrai le mosse degli USA contro il nemico giapponese" PRINT : PRINT "In base allo scenario che sceglierai dovrai affrontare diverse situazioni" WHILE INKEY$ = "": WEND CLS : PRINT "All'inizio del gioco viene mostrata una tabella con lo stato dei due Paesi" PRINT : PRINT "Dopo verranno fatte le seguenti domande:" PRINT "-Continuare l'offensiva?" PRINT "-Chiedere la pace? (solo se si risponde no alla domanda precedente)" PRINT "-Quante testate lanciare (massimo 99)": PRINT "-Usare lo scudo spaziale?" PRINT "-Quanti 1/9 della flotta di sommergibili in attacco? (solo alla prima mossa)" PRINT "-Quanti lanci del nemico previsti? (soltanto se usi lo scudo spaziale)" PRINT "Poi vedrai tutto ci• che accade..." PRINT : PRINT "Se risponderai N alla prima domanda, tutte le altre saranno saltate, tranne" PRINT "quelle relative allo scudo spaziale" PRINT "Ovviamente, se non disponi di testate, di sottomarini o di scudo spaziale le" PRINT "relative domande non verranno poste" WHILE INKEY$ = "": WEND CLS : PRINT "Lo scudo spaziale pu• funzionare solo per tre ore consecutive; necessita" PRINT "di una ora per essere ricaricato. Non ti conviene usare la quarta, perchŠ" PRINT "questo i Giapponesi lo sanno... Quando ti viene chiesto quanti lanci prevedi" PRINT "dal nemico, vengono simulati i vantaggi di aver previsto le sue mosse. Pi—" PRINT "ti avvicinerai al numero giusto, pi— missili fermerai con lo scudo spaziale" PRINT : PRINT "I sommergibili possono essere tenuti in difesa o in attacco; se li tieni in" PRINT "difesa tenteranno di distruggere i nemici che cercano di laciare testate, se" PRINT "li tieni in attacco spareranno qualche testata; quando ti viene posta la do-" PRINT "manda dovrai dare un numero da 0 a 9 che indica quante parti su nove " PRINT "mandare in difesa" WHILE INKEY$ = "": WEND CLS : PRINT "Quando distruggi una citt… il nemico perde da 0 a 70 testate" PRINT "Quando distruggi un sottomarino il nemico perde da 6 a 20 testate" PRINT "Dopo aver fermato qualche centinaio di missili con lo scudo spaziale, esso" PRINT "verr… scoperto e attaccato" PRINT : PRINT "Alla fine verranno visualizzati due punteggi: la vittoria e la risoluzione " PRINT "dello scenario scelto. Soltanto se avrai due SI potrai dire di aver vinto" PRINT : PRINT : PRINT "Buona fortuna!!!!!!!!" WHILE INKEY$ = "": WEND 57 END SUB SUB spaceshield LINE (100, 200)-(300, 250), 12, BF LINE (100, 210)-(300, 240), 4, BF FOR aa = 1 TO 3 CIRCLE (310 + aa, 225), 80, 8, 2, 4.5, 8 NEXT aa LINE (304, 225)-(320, 225), 15 END SUB SUB subex LINE (1, 300)-(640, 480), 1, BF FOR a = 350 TO 200 STEP -5 ff = -(350 - a) / 4.5 FOR b = ff TO -ff STEP 2 w = RND IF w < .5 THEN col = 15 IF w > .5 THEN col = 3 LINE (330 + b, 350)-(330 + b, a + ABS(b * 4.5)), col NEXT b NEXT a END SUB