samedi 7 octobre 2023

ORDINATEURS


LISTES DES ORDINATEURS








MISSILES ANTIAERIENS POUR TRS 80

écran de présentation



D'après MISSILES ANTIAERIENS de D. ISAAMAN et J. TYLER.

dans "des programmes pour votre micro - Battle games"

publié en 1982 écrit en Sinclair BASIC pour TRS 80



caractéristiques de la version originale


Nous sommes en 2582, les peuples de la Terre sont en guerre contre les robots. Les Robots ont envoyé un avion espion au-dessus de votre base pour préparer leur attaque.

Vous disposez de trois bases de missiles, chacune capable d'en lancer un. Quand l'avion espion approche, estimez son altitude et sa vitesse et ouvrez le feu coup par coup. Les missiles sont lancés pas simple pression sur la touche F du clavier, dans l'ordre suivant : gauche, milieu et droite.

Réussirez-vous à abattre l'avion espion ?

Ce jeu utilisant le mode graphique et chaque ordinateur ayant des instructions graphiques très personnelles, nous vous proposons plusieurs listings de programmes adaptés aux machines TRS 80, BBC, ZX Spectrum, VIC 20, Apple et ZX 81.



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 - MISSILES ANTIAERIENS ---


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

SCREEN 12


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

RANDOMIZE


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

DIM kmissile ( 2 ) AS INTEGER

DIM kbase AS INTEGER = 0

DIM kabscisse AS INTEGER = 0

DIM kordonnee AS INTEGER = 0

DIM kvitesse AS INTEGER = 0

DIM kpartie AS STRING = ""

DIM ksaisie AS STRING = ""


' --- Affichage de l'avion espion ---

SUB FNC_Avion ( Qabscisse AS INTEGER , Qordonnee AS INTEGER , Qcouleur AS INTEGER ) 

  LINE ( Qabscisse , Qordonnee ) - ( Qabscisse , Qordonnee + 8 ) , Qcouleur 

  LINE - ( Qabscisse + 25 , Qordonnee + 8 ) , Qcouleur

  LINE - ( Qabscisse + 20 , Qordonnee + 4 ) , Qcouleur

  LINE - ( Qabscisse + 7 , Qordonnee + 4 ) , Qcouleur

  LINE - ( Qabscisse + 4 , Qordonnee ) , Qcouleur 

  LINE - ( Qabscisse , Qordonnee ) , Qcouleur

END SUB


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

DO


  ' --- Initialisation des variables ---

  kbase = 0

  kmissile ( 2 ) = 430

  kordonnee = 0

  kordonnee = INT ( RND * 70 ) + 30

  kvitesse = INT ( RND * 5 ) + 1

  kpartie = "RATE"

  

  ' --- Affichage des consignes ---

  CLS

  LOCATE 0 , 15

  PRINT "MISSILES ANTIAERIENS : APPUYEZ SUR F POUR TIRER"

  

  ' --- Affichage des portes missiles ---

  LINE ( 50 , 440 ) - ( 90 , 460 ) , 15 , BF

  LINE ( 69 , 430 ) - ( 71 , 440 ) , 15 , BF

  LINE ( 300 , 440 ) - ( 340 , 460 ) , 15 , BF

  LINE ( 319 , 430 ) - ( 321 , 440 ) , 15 , BF

  LINE ( 550 , 440 ) - ( 590 , 460 ) , 15 , BF

  LINE ( 569 , 430 ) - ( 571 , 440 ) , 15 , BF


  ' --- Boucle du jeu ---

  DO

    

    ' --- Déplacement du missile tiré ---

    IF kbase <> 0 and kmissile ( 2 ) <> 430 THEN

      LINE ( kmissile ( 1 ) , kmissile ( 2 ) ) - ( kmissile ( 1 ) + 2 , kmissile ( 2 ) + 10 ) , 0 , BF

      kmissile ( 2 ) = kmissile ( 2 ) - 5

      if kmissile ( 2 ) < 10 THEN kmissile ( 2 ) = 430

      LINE ( kmissile ( 1 ) , kmissile ( 2 ) ) - ( kmissile ( 1 ) + 2 , kmissile ( 2 ) + 10 ) , 15 , BF

    END IF

    

    ' --- Test si le missile à touché l'avion ---

    IF kordonnee > kmissile ( 2 ) AND kordonnee < kmissile ( 2 ) + 10 THEN 

      IF kmissile ( 1 ) > kabscisse  AND kmissile ( 1 ) < kabscisse + 25 THEN 

        kpartie = "TOUCHE"

        kbase = 3

        kmissile ( 2 ) = 430

      END IF

    END IF

    

    ' --- Déplacement de l'avion espion ---

    FNC_Avion ( kabscisse , kordonnee , 0 )

    IF kabscisse < 620 THEN kabscisse = kabscisse + kvitesse ELSE kabscisse = 0

    FNC_Avion ( kabscisse , kordonnee , 15 )

    sleep ( 10 , 1 )

    

    ' --- Nouveau tir du joueur ---

    IF kmissile ( 2 ) = 430 THEN 

      ksaisie = INKEY

      IF UCASE ( ksaisie ) = "F" THEN

        kbase = kbase + 1

        IF kbase = 1 THEN kmissile ( 1 ) = 69 

        IF kbase = 2 THEN kmissile ( 1 ) = 319 

        IF kbase = 3 THEN kmissile ( 1 ) = 569

        kmissile ( 2 ) = 420

      END IF

    END IF


  LOOP UNTIL ( kbase = 3 AND kmissile ( 2 ) = 430 )


  FNC_Avion ( kabscisse , kordonnee , 0 )

  LOCATE 6 , 30

  PRINT kpartie


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

  LOCATE 8 , 15

  PRINT "R pour recommencer ou Q pour Quitter" 

  ksaisie = INPUT ( 1 ) 


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


' --- Programme : JFB ---

' --- Octobre 2023 ---

' --- Fin ---


une adaptation modernisée en Python



PROGRAMMES ADAPTES DU TRS 80






Missiles Antiaériens (1982 - de D. ISAAMAN et J. TYLER)


















ORDINATEURS

LISTES DES ORDINATEURS TRS 80 ZX 81