10 REM *** ODYSSEE - JEU D'AVENTURE *** 20 REM *** APPLESOFT BASIC - APPLE II *** 30 REM *** (C) 1984 *** 40 HOME : TEXT 50 REM --- CONSTANTES PIECES --- 60 CR = 1 : PO = 2 : CO = 3 : MO = 4 : SE = 5 : SR = 6 : HG = 7 70 REM CR=CRYOSOMMEIL PO=PONT CO=COULOIR MO=MOTEURS SE=SECURITE SR=SERRE HG=HANGAR 80 REM --- VARIABLES GLOBALES --- 90 PI = CR : OX = 20 : SC = 0 : SE = 0 : OD = 0 100 REM PI=PIECE ACTUELLE OX=OXYGENE SC=SCORE SE=SYNTAX ERROR OD=OXYGENE DONNE 110 REM --- ETAT OBJETS (0=NON PRIS 1=INVENTAIRE 2=UTILISE) --- 120 DIM OB(6) : FOR I = 1 TO 6 : OB(I) = 0 : NEXT I 130 REM OB1=CARTE OB2=COMBINAISON OB3=FUSIBLE OB4=OUTIL OB5=PLANTE OB6=CODE 140 REM --- ETAT PORTES/VERROUS --- 150 PV = 0 : PM = 0 : PS = 0 160 REM PV=PONT VERROUILLE PM=MOTEUR REPARE PS=SIGNAL ENVOYE 170 REM ======================================== 180 REM --- ECRAN TITRE --- 190 HOME 200 PRINT "========================================" 210 PRINT " O D Y S S E E " 220 PRINT " UN JEU D'AVENTURE SPATIAL " 230 PRINT "========================================" 240 PRINT 250 PRINT "VOUS VOUS REVEILLEZ DANS LE MODULE DE" 260 PRINT "CRYOSOMMEIL. LES ALARMES RETENTISSENT." 270 PRINT "LE VAISSEAU EST EN DERIVE..." 280 PRINT 290 PRINT "REPAREZ LE MOTEUR ET ENVOYEZ LE SIGNAL" 300 PRINT "DE DETRESSE AVANT DE MANQUER D'OXYGENE" 310 PRINT 320 PRINT "COMMANDES: NORD SUD EST OUEST HAUT BAS" 330 PRINT " PRENDRE POSER EXAMINER INV" 340 PRINT " UTILISER OUVRIR AIDE QUITTER" 350 PRINT 360 INPUT "APPUYEZ SUR ENTREE POUR COMMENCER..."; A$ 370 REM ======================================== 380 REM --- BOUCLE PRINCIPALE --- 390 HOME 400 GOSUB 1000 : REM DECRIRE PIECE 410 GOSUB 2000 : REM SAISIR COMMANDE 420 GOSUB 3000 : REM TRAITER COMMANDE 430 IF SE = 1 THEN SE = 0 : GOTO 390 435 OX = OX - 1 : REM CONSOMMER OXYGENE 440 IF OX <= 0 THEN GOSUB 9000 : REM MORT 450 IF PS = 1 THEN GOSUB 9100 : REM VICTOIRE 480 GOTO 390 998 REM ======================================== 999 REM >>>>> SUB 1000: DECRIRE LA PIECE <<<<< 1000 PRINT "----------------------------------------" 1010 PRINT "OXYGENE: "; OX; " SCORE: "; SC 1020 PRINT "----------------------------------------" 1030 IF PI = CR THEN GOSUB 1100 1040 IF PI = PO THEN GOSUB 1200 1050 IF PI = CO THEN GOSUB 1300 1060 IF PI = MO THEN GOSUB 1400 1070 IF PI = SE THEN GOSUB 1500 1080 IF PI = SR THEN GOSUB 1600 1090 IF PI = HG THEN GOSUB 1700 1095 RETURN 1100 PRINT "MODULE DE CRYOSOMMEIL" 1110 PRINT "DES CAPSULES BRISEES JONCHENT LE SOL." 1120 PRINT "UNE CARTE EST EPINGLEE AU MUR." 1130 IF OB(1) = 0 THEN PRINT "VOUS VOYEZ: CARTE DU VAISSEAU" 1140 PRINT "SORTIES: EST (COULOIR)" 1150 RETURN 1200 PRINT "PONT DE COMMANDEMENT" 1210 PRINT "ECRANS CLIGNOTANTS. CONSOLES ENDOMMAGEES." 1220 IF OB(6) = 0 THEN PRINT "VOUS VOYEZ :" : PRINT " CODE D'ACCES (GRAVE SUR UN ECRAN)" 1230 IF PS = 0 THEN PRINT "UN EMETTEUR EST FIXE AU PLAFOND." 1240 PRINT "SORTIES: SUD (COULOIR)" 1250 RETURN 1300 PRINT "COULOIR CENTRAL" 1310 PRINT "UN LONG COULOIR METALLIQUE. DES FILS" 1320 PRINT "PENDENT DU PLAFOND. UNE ODEUR DE BRULE." 1330 IF OB(2) = 0 THEN PRINT "VOUS VOYEZ: COMBINAISON SPATIALE" 1340 PRINT "SORTIES: NORD (PONT) EST (SECURITE)" 1350 PRINT " OUEST (CRYO) SUD (MOTEURS)" 1360 PRINT " HAUT (SERRE) BAS (HANGAR)" 1370 RETURN 1400 PRINT "SALLE DES MOTEURS" 1410 PRINT "LE REACTEUR PRINCIPAL EST ETEINT." 1420 IF OB(3) = 0 THEN PRINT "VOUS VOYEZ :" : PRINT "FUSIBLE GRILLE (DANS LE TABLEAU)" 1430 IF OB(4) = 0 THEN PRINT "VOUS VOYEZ :" : PRINT "OUTIL MAGNETIQUE (PAR TERRE)" 1440 IF PM = 1 THEN PRINT "LE REACTEUR TOURNE! BRUIT DE FOND" : PRINT "RASSURANT." 1450 PRINT "SORTIES: NORD (COULOIR)" 1460 RETURN 1500 PRINT "SALLE DE SECURITE" 1510 PRINT "UN COFFRE METALLIQUE EST ENCASTRE DANS" 1520 PRINT "LE MUR. UN CLAVIER NUMERIQUE LE BARRE." 1530 IF PV = 0 THEN PRINT "LE COFFRE EST VERROUILLE." 1540 IF PV = 1 AND OB(5) = 0 THEN PRINT "DANS LE COFFRE: PLANTE MEDICINALE" 1550 PRINT "SORTIES: OUEST (COULOIR)" 1560 RETURN 1600 PRINT "SERRE HYDROPONIQUE" 1610 PRINT "DES PLANTES ETRANGES POUSSENT SOUS" 1620 PRINT "DES LAMPES UV. L'AIR EST FRAIS ICI." 1630 PRINT "SORTIES: BAS (COULOIR)" 1635 IF OD = 1 THEN 1660 1640 OX = OX + 2 : IF OX > 20 THEN OX = 20 1650 PRINT "(L'AIR FRAIS VOUS REVIGORE: +2 OXYGENE)" 1655 OD = 1 1660 RETURN 1700 PRINT "HANGAR A NAVETTES" 1710 PRINT "UNE NAVETTE EST AMARREE. LE PANNEAU" 1720 PRINT "DE CONTROLE EST HORS TENSION." 1730 IF PM = 0 THEN PRINT "(LE HANGAR N'A PAS D'ENERGIE)" 1740 PRINT "SORTIES: HAUT (COULOIR)" 1750 RETURN 1998 REM ======================================== 1999 REM >>>>> SUB 2000: SAISIR COMMANDE <<<<< 2000 PRINT 2020 INPUT "> "; CM$ 2030 RETURN 2998 REM ======================================== 2999 REM >>>>> SUB 3000: TRAITER COMMANDE <<<<< 3000 IF CM$ = "NORD" OR CM$ = "N" THEN GOSUB 4000 : RETURN 3020 IF CM$ = "SUD" OR CM$ = "S" THEN GOSUB 4100 : RETURN 3030 IF CM$ = "EST" OR CM$ = "E" THEN GOSUB 4200 : RETURN 3040 IF CM$ = "OUEST" OR CM$ = "O" THEN GOSUB 4300 : RETURN 3050 IF CM$ = "HAUT" OR CM$ = "H" THEN GOSUB 4400 : RETURN 3060 IF CM$ = "BAS" OR CM$ = "B" THEN GOSUB 4500 : RETURN 3070 IF CM$ = "INV" OR CM$ = "I" THEN GOSUB 5000 : GOSUB 9500 : RETURN 3080 IF LEFT$(CM$,3) = "PRE" THEN GOSUB 5100 : GOSUB 9500 : RETURN 3090 IF LEFT$(CM$,3) = "EXA" THEN GOSUB 5200 : GOSUB 9500 : RETURN 3100 IF LEFT$(CM$,3) = "UTI" THEN GOSUB 5300 : GOSUB 9500 : RETURN 3110 IF LEFT$(CM$,3) = "OUV" THEN GOSUB 5400 : GOSUB 9500 : RETURN 3120 IF LEFT$(CM$,3) = "AID" THEN GOSUB 5500 : GOSUB 9500 : RETURN 3130 IF LEFT$(CM$,3) = "QUI" THEN END 3140 PRINT "JE NE COMPRENDS PAS CETTE COMMANDE." : GOSUB 9500 3145 SE = 1 3150 RETURN 3998 REM ======================================== 3999 REM >>>>> SUB 4000-4500: DEPLACEMENTS <<<<< 4000 IF PI = CO THEN PI = PO : RETURN 4005 IF PI = MO THEN PI = CO : RETURN 4010 PRINT "VOUS NE POUVEZ PAS ALLER PAR LA." : GOSUB 9500 4020 RETURN 4100 IF PI = PO THEN PI = CO : RETURN 4110 IF PI = CO THEN PI = MO : RETURN 4120 PRINT "VOUS NE POUVEZ PAS ALLER PAR LA." : GOSUB 9500 4130 RETURN 4200 IF PI = CR THEN PI = CO : RETURN 4210 IF PI = CO THEN PI = SE : RETURN 4220 PRINT "VOUS NE POUVEZ PAS ALLER PAR LA." : GOSUB 9500 4230 RETURN 4300 IF PI = CO THEN PI = CR : RETURN 4310 IF PI = SE THEN PI = CO : RETURN 4320 PRINT "VOUS NE POUVEZ PAS ALLER PAR LA." : GOSUB 9500 4330 RETURN 4400 IF PI = CO AND OB(2) = 1 THEN PI = SR : OD = 0 : RETURN 4410 IF PI = CO AND OB(2) = 0 THEN PRINT "TROP FROID SANS COMBINAISON." : RETURN 4420 IF PI = HG THEN PI = CO : RETURN 4430 PRINT "VOUS NE POUVEZ PAS ALLER PAR LA." : GOSUB 9500 4440 RETURN 4500 IF PI = CO AND OB(2) = 1 THEN PI = HG : RETURN 4510 IF PI = CO AND OB(2) = 0 THEN PRINT "TROP DANGEREUX SANS COMBINAISON." : RETURN 4520 IF PI = SR THEN PI = CO : RETURN 4530 PRINT "VOUS NE POUVEZ PAS ALLER PAR LA." : GOSUB 9500 4540 RETURN 4998 REM ======================================== 4999 REM >>>>> SUB 5000: INVENTAIRE <<<<< 5000 PRINT "VOUS PORTEZ:" 5020 NR = 0 5030 IF OB(1) = 1 THEN PRINT " - CARTE DU VAISSEAU" : NR = NR + 1 5040 IF OB(2) = 1 THEN PRINT " - COMBINAISON SPATIALE" : NR = NR + 1 5050 IF OB(3) = 1 THEN PRINT " - FUSIBLE GRILLE" : NR = NR + 1 5060 IF OB(4) = 1 THEN PRINT " - OUTIL MAGNETIQUE" : NR = NR + 1 5070 IF OB(5) = 1 THEN PRINT " - PLANTE MEDICINALE" : NR = NR + 1 5080 IF OB(6) = 1 THEN PRINT " - CODE D'ACCES" : NR = NR + 1 5090 IF NR = 0 THEN PRINT " (RIEN)" 5095 RETURN 5099 REM >>>>> SUB 5100: PRENDRE <<<<< 5100 IF PI = CR AND OB(1) = 0 THEN OB(1) = 1 : SC = SC + 5 : PRINT "PRIS: CARTE." : RETURN 5120 IF PI = CO AND OB(2) = 0 THEN OB(2) = 1 : SC = SC + 5 : PRINT "PRIS: COMBINAISON." : RETURN 5130 IF PI = MO AND OB(3) = 0 THEN OB(3) = 1 : SC = SC + 5 : PRINT "PRIS: FUSIBLE." : RETURN 5140 IF PI = MO AND OB(4) = 0 THEN OB(4) = 1 : SC = SC + 5 : PRINT "PRIS: OUTIL." : RETURN 5150 IF PI = SE AND OB(5) = 0 AND PV = 1 THEN OB(5) = 1 : SC = SC + 5 : PRINT "PRISE: PLANTE." : RETURN 5160 IF PI = PO AND OB(6) = 0 THEN OB(6) = 1 : SC = SC + 5 : PRINT "PRIS: CODE." : RETURN 5170 PRINT "IL N'Y A RIEN A PRENDRE ICI." 5180 RETURN 5199 REM >>>>> SUB 5200: EXAMINER <<<<< 5200 IF PI = CR THEN PRINT "LES CAPSULES PORTENT DES NOMS. LA VOTRE" 5210 IF PI = CR THEN PRINT "S'APPELLE MORSE. LA SORTIE EST A L'EST." : RETURN 5220 IF PI = PO THEN PRINT "LES ECRANS MONTRENT: NIVEAU O2 CRITIQUE." 5230 IF PI = PO THEN PRINT "LE CODE SUR L'ECRAN EST: 4-2-7" : RETURN 5240 IF PI = MO THEN PRINT "LE TABLEAU ELECTRIQUE A UN EMPLACEMENT" 5250 IF PI = MO THEN PRINT "POUR UN FUSIBLE. IL FAUT UN OUTIL POUR" 5260 IF PI = MO THEN PRINT "REMPLACER LE FUSIBLE GRILLE." : RETURN 5270 IF PI = SE THEN PRINT "LE CLAVIER ATTEND 3 CHIFFRES." : RETURN 5280 IF PI = SR THEN PRINT "LES PLANTES PRODUISENT DE L'OXYGENE." : RETURN 5290 PRINT "RIEN DE SPECIAL A VOIR ICI." 5295 RETURN 5299 REM >>>>> SUB 5300: UTILISER <<<<< 5300 REM UTILISER OUTIL+FUSIBLE DANS MOTEURS 5310 IF PI = MO AND OB(3) = 1 AND OB(4) = 1 AND PM = 0 THEN GOSUB 6000 : RETURN 5330 REM UTILISER PLANTE DANS SERRE (BONUS OX) 5340 IF PI = SR AND OB(5) = 1 THEN GOSUB 6100 : RETURN 5350 REM UTILISER EMETTEUR SUR LE PONT (VICTOIRE) 5360 IF PI = PO AND PM = 1 AND PS = 0 THEN GOSUB 6200 : RETURN 5370 PRINT "VOUS NE POUVEZ PAS UTILISER CELA ICI." 5380 RETURN 5400 REM >>>>> SUB 5400: OUVRIR (COFFRE) <<<<< 5410 IF PI <> SE THEN PRINT "IL N'Y A RIEN A OUVRIR ICI." : RETURN 5420 IF PV = 1 THEN PRINT "LE COFFRE EST DEJA OUVERT." : RETURN 5430 IF OB(6) <> 1 THEN PRINT "VOUS N'AVEZ PAS LE CODE." : RETURN 5440 PRINT "ENTREZ LE CODE (3 CHIFFRES):" 5450 INPUT CD$ 5460 IF CD$ = "427" THEN PV = 1 : SC = SC + 10 : PRINT "CLIC! LE COFFRE S'OUVRE." : RETURN 5470 PRINT "CODE INCORRECT. ACCES REFUSE." 5480 RETURN 5499 REM >>>>> SUB 5500: AIDE <<<<< 5500 PRINT "INDICES:" 5520 PRINT "- TROUVEZ LA CARTE DANS LE MODULE CRYO" 5530 PRINT "- LA COMBINAISON OUVRE DES ZONES FROIDES" 5540 PRINT "- LE MOTEUR NECESSITE UN FUSIBLE + OUTIL" 5550 PRINT "- LE CODE DU COFFRE EST SUR LE PONT" 5560 PRINT "- ALLEZ A LA SERRE POUR L'OXYGENE" 5570 PRINT "- REPAREZ LES MOTEURS, PUIS EMETTEUR" 5580 RETURN 5998 REM ======================================== 5999 REM >>>>> SUB 6000: REPARER MOTEUR <<<<< 6000 PRINT "VOUS REMPLACEZ LE FUSIBLE AVEC L'OUTIL." 6020 PRINT "BRRRRMM... LE REACTEUR DEMARRE!" 6030 PRINT "LE VAISSEAU VIBRE. L'ENERGIE EST" : PRINT "RETABLIE." 6040 PM = 1 : OB(3) = 2 : OB(4) = 2 : SC = SC + 20 6050 RETURN 6099 REM >>>>> SUB 6100: PLANTER LA PLANTE <<<<< 6100 PRINT "VOUS PLANTEZ LA PLANTE MEDICINALE." 6120 PRINT "ELLE POUSSE RAPIDEMENT. OXYGENE +5!" 6130 OX = OX + 5 : IF OX > 20 THEN OX = 20 6140 OB(5) = 2 : SC = SC + 10 6150 RETURN 6199 REM >>>>> SUB 6200: ACTIVER EMETTEUR <<<<< 6200 PRINT "VOUS ACTIVEZ L'EMETTEUR DE DETRESSE." 6220 PRINT "BIIIP... BIIIP... BIIIP..." 6230 PRINT "SIGNAL ENVOYE DANS TOUTES LES" : PRINT "DIRECTIONS." 6240 PS = 1 : SC = SC + 30 6250 RETURN 8998 REM ======================================== 8999 REM >>>>> SUB 9000: FIN - MORT <<<<< 9000 HOME 9020 PRINT "========================================" 9030 PRINT " G A M E O V E R" 9040 PRINT "========================================" 9050 PRINT 9060 PRINT "L'OXYGENE EST EPUISE. VOUS PERDEZ" 9070 PRINT "CONNAISSANCE DANS LE SILENCE SPATIAL." 9080 PRINT 9090 PRINT "SCORE FINAL: "; SC; " / 90" 9095 END 9099 REM >>>>> SUB 9100: FIN - VICTOIRE <<<<< 9100 HOME 9120 PRINT "========================================" 9130 PRINT " F E L I C I T A T I O N S !" 9140 PRINT "========================================" 9150 PRINT 9160 PRINT "VOTRE SIGNAL EST CAPTE PAR UN CARGO" 9170 PRINT "DE PASSAGE. LES SECOURS ARRIVENT!" 9180 PRINT "VOUS AVEZ SAUVE LE VAISSEAU ODYSSEE." 9190 PRINT 9200 PRINT "SCORE FINAL: "; SC; " / 90" 9210 PRINT "OXYGENE RESTANT: "; OX 9220 END 9499 REM >>>>> PRESS A KEY <<<<< 9500 PRINT:PRINT ">> PRESSEZ UNE TOUCHE POUR CONTINUER <<";:GET X$ 9510 RETURN