Mini Jeux

UFO

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières
  1. Images

-- Présentation --

En 2010, en l'honneur des 25 ans du MSX, le site de Konamito proposait un concours de programmation de jeu sur MSX. Un classique en soi mais là le jeu ne devait tenir qu'en 10 lignes de programmation Basic seulement! Chaque ligne ne peut contenir plus de 255 caractères et que le concours interdit l'utilisation de poke pour le langage machine et le chargement d'image.UFO est un jeu de tir avec viseur qui finit troisième du concours.

Images






-- Description complète--

  1. SCREEN1,0:DIMC,X,Y,P,W(9):WIDTH32:COLOR3,12,1:KEYOFF:FORI=14350TO14381:READA$:VPOKEI,VAL("&h"+A$):NEXT: FORI=32TO87:READA$:VPOKEI,VAL("&h"+A$):NEXT:FORI=6240TO6815:VPOKEI,0:NEXT:VPOKE8192,177:VPOKE8193,97: FORI=1TO38:READA,B:VPOKE6300+A,B:NEXT

    • SCREEN1,0: Activation du mode ecran 1 avec sprite 8 x 8 un choix qui simplifie la tache pour les graphismes.
    • DIMC,X,Y,P,W(9): Dimensionnement des tableaux à 9, principalement pour les attributs des ovnis.
    • WIDTH32: 32 colonnes.
    • COLOR3,12,1: Ecriture vert clair sur fond vert foncé et contour noir.
    • KEYOFF: Effacement des touches de fonctions.
    • FORI=14350TO14381:READA$:VPOKEI,VAL("&h"+A$):NEXT: Création des sprites en VRAM à partir des datas.
    • FORI=32TO87:READA$:VPOKEI,VAL("&h"+A$):NEXT: Création des décors en VRAM à partir des datas.
    • FORI=6240TO6815:VPOKEI,0:NEXT: Effacement de la zone de jeu, partie centrale de l'écran.
    • VPOKE8192,177: Colorisation d'une partie des décors en jaune clair sur noir.
    • VPOKE8193,97: Colorisation d'une partie des décors en rouge foncé sur noir.
    • FORI=1TO38:READA,B:VPOKE6300+A,B:NEXT Mise en place des décors; A=positon, B=choix du décor.


  2. DEFINTA-Z:PLAY"","t250s8m6000o4l2dd+dcd4","T200O3L2D.DD":LOCATE2,22:PRINT"U.F.O. SCORE: 0 MAX:";M: X=40:Y=96:C=0:ONSPRITEGOSUB8:VPOKE6785,7:VPOKE6753,7:VPOKE6721,7:VPOKE6689,7:VPOKE6657,6:FORI=0TO9: X(I)=0:C(I)=0:W(I)=0:P(I)=0:PUTSPRITEI,,0,0:NEXT

    • DEFINTA-Z: On met toutes les variables en entier, ça accélère le programme.
    • PLAY"","t250s8m6000o4l2dd+dcd4","T200O3L2D.DD": On joue la petite musique d'intro en paramètrant.
    • LOCATE2,22: Positionnement du curseur X=2, Y=22.
    • PRINT"U.F.O. SCORE: 0 MAX:";M: Mise en place des inscriptions, M est la variable du meilleur score.
    • X=40:Y=96:C=0: initialisation des variables.
    • ONSPRITEGOSUB8:Déclaration de la ligne du sous-programme gérant les collisions de sprites.
    • VPOKE6785,7:VPOKE6753,7:VPOKE6721,7:VPOKE6689,7:VPOKE6657,6:Mise en place de la tour de controle.
    • FORI=0TO9:X(I)=0:C(I)=0:W(I)=0:P(I)=0:PUTSPRITEI,,0,0:NEXTMise à zéro des paramètre des sprites


  3. SOUND7,48:SOUND6,0:Z=RND(-TIME):LOCATE5,1:PRINT"PUSH SPACE OR SWITCH 1 ! ":Q=1+1*(STRIG(0)=-1): IFSTRIG(Q)=-1THENFORI=6176TO6232:VPOKEI,32:NEXT:V=5:P=4:PLAY"v11","t250v9s8m6000o4L2dd+dcl4dd-dl2ee+ec2l4ee","t250v10o3l2d.d-dcl4dd+dl2ee-ec2l4e"ELSE3

    • SOUND7,48:SOUND6,0: Gestion des registres sons et du bruit.
    • Z=RND(-TIME): Initialisation des valeurs aléatoires sur l'heure pour que chaque partie soit différente.
    • LOCATE5,1: Positionnement du curseur X=5, Y=1.
    • PRINT"PUSH SPACE OR SWITCH 1 ! ": Mise en place inscription d'attente de départ du jeu.
    • Q=1+1*(STRIG(0)=-1): Identification du bouton enfoncé (manette ou clavier).
    • IFSTRIG(Q)=-1 Test du bouton enfoncé.
      THEN ...
      FORI=6176TO6232:VPOKEI,32:NEXT: Effacement du message PUSH SPACE...
      V=5:P=4: Initialisation des variables, V (vies) à 5 et P à 4.
      PLAY"v11","t250v9s8m6000o4L2dd+dcl4dd-dl2ee+ec2l4ee","t250v10o3l2d.d-dcl4dd+dl2ee-ec2l4e" ...musique d'intro.
      ELSE3 Sinon on reprend au début de la ligne