dimanche 24 septembre 2023

COMBAT AERIEN POUR ZX 81

écran de présentation



D'après COMBAT AERIEN 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

Vous êtes face au pirate du ciel ; vous allez devoir tenter de le placer dans votre ligne de tir et de l'abattre avant qu'il ne le fasse lui-même. S'il se porte devant vous, accélérez ; s'il se place derrière vous, ralentissez.

Votre ordinateur vous communiquera vos vitesse et positions par rapport au pirate. Dès le début du jeu, soyez prêt à appuyer sur les touches appropriées : A pour accélérer, R pour ralentir jusqu'à la bonne position pour faire feu (touche F).

Le jeu est programmé en votre faveur. Transformez-le pour que vos chances de gagner soient identiques à celles du pirate.

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 - LE COMBAT AERIEN ---


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

SCREEN 12


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

RANDOMIZE


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

DIM kdistance AS INTEgER = 0

DIM kvitesse AS INTEgER = 0

DIM ksaisie AS STRING = ""


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

DO

  ' --- Initialisation des variables ---

  kvitesse = INT ( RND * 11 ) - 5

  kdistance = -INT ( RND * 3 ) + 1


  ' --- Boucle du déroulement jeu ---

  DO 

  

    ' --- Affichage du titre, de la position et de la vitesse --- 

    CLS

    PRINT "COMBAT AERIEN"

    PRINT ""

    IF kdistance < 0 THEN PRINT "VOUS ETES DERRIERE LUI " ; kdistance

    IF kdistance > 0 THEN PRINT "VOUS ETES DEVANT LUI " ; kdistance

    IF kdistance = 0 THEN PRINT "VOUS ETES EN POSITION DE TIR" 

    IF kvitesse > 0 THEN PRINT "VOTRE VITESSE EST TROP ELEVEE " ; kvitesse

    IF kvitesse < 0 THEN PRINT "VOTRE VITESSE EST TROP FAIBLE " ; kvitesse

    IF kvitesse = 0 THEN PRINT "VOTRE VITESSE EST CONVENABLE" 

    

    ' --- Teste la touche appuyée ---

    ksaisie = INKEY

    IF UCASE ( ksaisie ) = "A" AND kvitesse < 5 THEN kvitesse = kvitesse + 1

    IF UCASE ( ksaisie ) = "R" AND kvitesse > -5 THEN kvitesse = kvitesse - 1

    IF UCASE ( ksaisie ) = "F" AND kdistance = 0 THEN ksaisie = "TIR"

    IF UCASE ( ksaisie ) = "F" AND ABS ( kdistance ) > 1 THEN PRINT "VOUS L'AVEZ JUSTE EFFLEURE"

    

    ' --- Vide le tampon du clavier ---

    DO : LOOP UNTIL ( INKEY = "" )


    ' --- Pausse inconditionnelle ---

    SLEEP ( 500 , 1 )

    

    ' --- Actualisation et controle de la distance --- 

    kdistance = kdistance + kvitesse

    IF ABS ( kdistance ) > 20 THEN  ksaisie = "LOIN"

    

  LOOP UNTIL ( ksaisie = "TIR" OR ksaisie = "LOIN" )

  

  ' --- Analyse de la fin de pertie ---

  IF ksaisie = "LOIN" THEN PRINT "VOUS L'AVEZ PERDU DE VUE"

  IF ksaisie = "TIR" THEN IF RND > .7 THEN PRINT "VOUS ETES TOUCHE" ELSE PRINT "VOUS L'AVEZ ABATTU !"

  SLEEP ( 500 , 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