mardi 26 septembre 2023

A BORD D'UN BOMBARDIER SUPERSONIQUE POUR ZX 81

écran de présentation

D'après A BORD D'UN BOMBARDIER SUPERSONIQUE de D. ISAAMAN et J. TYLER.

dans "des programmes pour votre micro - Battle games"

publié en 1982 écrit en Sinclair BASIC pour ZX 81



caractéristiques de la version originale

Nous sommes en 2582, les peuples de la Terre sont en guerre contre les robots. En mission au-dessus du territoire des Robots, à bord de votre bombardier supersonique, votre ordinateur de bord affiche 5 graphiques établis à partir de photographies infrarouges relayées par satellite, qui montrent la rpartition des bataillons de Robots. Vos réserves de carburant ne vous permettent d'atteindre qu'un seul objectif ; faite rapidement votre choix en vue de détruire le plus grand nombre de robots et larguez une de vos bombes à corrosion (elles contiennent une substance très active capable de détruire la carcasse d'un robot en quelques secondes).

Pour larguer la bombe, entrez le nombre affiché à côté du graphique représentant la plus grande densité de robots. Si deux graphiques sont identiques, choisissez le plus petit nombre affiché. Serez-vous décoré à votre retour de mission ?

Pourriez-vous trouver une solution pour augmenter le nombre de cibles potentielles ?

A la suite du listing complet pour le ZX 81, vous trouverez les modifications nécessaires pour l'utiliser sur les machines suivantes : VIC, PET, BBC, ACORM, TRS 80, APPLE et ZX SPECTRUM.


une adaptation classique en FreeBASIC


contient une présentation et une adaptation en Python
un listing pour FreeBASIC et Python optimisées pour LINUX
une version exécutable pour Linux et pour Windows


' --- Origine Nerd propose ---

' --- un listing en FreeBASIC pour ---

' --- RETROGICIEL - A BORD D'UN BOMBARDIER SUPERSONIQUE ---


' --- Initialisation du mode écran ---

SCREEN 12


' --- Lancement du générateur de nombres aléatoires ---

RANDOMIZE


' --- Déclaration des variables ---

DIM kscore AS INTEGER = 0

DIM kcible AS INTEGER = 0

DIM kpause AS INTEGER = 0

DIM kchoix AS STRING = ""

DIM ksaisie AS STRING = ""

DIM TBL_Zones ( 5 ) AS INTEGER = { 0 , 0  , 0  , 0  , 0  , 0 }


' --- Entrée de la boucle principale ---

DO


  ' --- Boucle du jeu - 10 passages ---

  FOR kbombe AS INTEGER = 1 TO 10

  

    ' --- Présentation et affichage des consignes --- 

    CLS

    PRINT "BOMBARDIER SUPERSONIQUE"

    PRINT ""


    ' --- Initialisation des graphiques ---

    kcible = 1

    FOR kzone AS INtEGER = 1 TO 5 

      TBL_Zones ( kzone ) = INT ( RND * 10 ) + 1

      IF TBL_Zones ( kzone ) > TBL_Zones ( kcible ) THEN kcible = kzone

      PRINT kzone ; " : " ; STRING ( TBL_Zones ( kzone ) , "*" )

    NEXT

  

    ' --- Pause pour le choix du joueur ---

    PRINT "VOTRE CHOIX ? "

    SLEEP ( 3000 - ( 250 * kbombe ) , 1 )

    kchoix = INKEY

    IF CINT ( kchoix ) = kcible THEN kscore = kscore + 1

    

  NEXT 

  

  ' --- Affichage du score ---

  

  PRINT "VOUS AVEZ PLACE " ; kscore ; " BOMBES SUR LA BONNE CIBLE."

  IF kscore = 10 THEN PRINT "VOUS ETES UN HERO"

  IF kscore < 10 THEN PRINT "RESULTATS MEDIOCRE"

  SLEEP ( 1000 , 1 )

  

  ' --- Recommencer ou quitter du jeu --- 

  PRINT "R pour recommencer ou Q pour Quitter" 

  ksaisie = INPUT ( 1 ) 


LOOP UNTIL ( ksaisie = "q" OR ksaisie = "Q" )


' --- Programme : JFB ---

' --- Septembre 2023 ---

' --- Fin ---



une adaptation modernisée en Python


Aucun commentaire:

Enregistrer un commentaire

ORDINATEURS

LISTES DES ORDINATEURS TRS 80 ZX 81