Mini Jeux

UFO

Cet article est en cours de travaux, des modifications sont en cours de réalisation, revenez plus tard le reconsulter. Merci.

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



ligne 1



<fieldset class="formatter-container formatter-fieldset" style=""><legend>code Basic</legend><div class="formatter-content">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 </div></fieldset>











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: Écriture 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.

ligne 2



<fieldset class="formatter-container formatter-fieldset" style=""><legend>code Basic</legend><div class="formatter-content">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 </div></fieldset>








DEFINTA-Z: On met toutes les variables en entier, ça accélère le programme.
LOCATE2,22: Positionnement du curseur X=2, Y=22.
PLAY"","t250s8m6000o4l2dd+dcd4","T200O3L2D.DD": On joue la petite musique d'intro en paramétrant.
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:NEXT Mise à zéro des paramètre des sprites

ligne 3



<fieldset class="formatter-container formatter-fieldset" style=""><legend>code Basic</legend><div class="formatter-content"> 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</div></fieldset>











SOUND7,48:SOUND6,0: Gestion des registres sons et du bruit.
Z=RND(-TIME): Initialisation des valeurs aléatoires sur l'horloge 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 ... Actions si vrai...
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.
Cette page a été vue 13895 fois