[24 Dec 2009] Code source of bustou amstrad basic locomotive game

Contains all messages from the Hollywood mailing list between 01/2006 and 08/2012
Locked
ArtBlink
Posts: 484
Joined: Mon Nov 01, 2010 10:37 am
Location: Albert - France
Contact:

[24 Dec 2009] Code source of bustou amstrad basic locomotive game

Post by ArtBlink »

Note: This is an archived post that was originally sent to the Hollywood mailing list on Thu, 24 Dec 2009 11:59:46 -0000

Hello all...

Use this code and make your own game (optimise this)

Code: Select all


@VERSION 4,0
@DISPLAY{WIDTH=320,HEIGHT=256}
/*COUCOU - Voici un mini CasseBrique nommé BUSTOUT, VIVE Amstrad*/
/*Création des Brush*/
CREATEBRUSH(1,8,8,#GREEN)
CREATEBRUSH(2,4,4,#RED)
CREATEBRUSH(3,40,8,#BLUE)
CREATEBRUSH(4,2,2,#WHITE)
CREATEBRUSH(5,40,2,#WHITE)
CREATEBRUSH(6,1,8,#WHITE)
CREATEBRUSH(7,8,1,#WHITE)
MIXBRUSH(1,6,128)
MIXBRUSH(1,7,128)
MIXBRUSH(2,4,128)
MIXBRUSH(3,5,128)
/*Toute les Variables*/
LOCAL XBarre=0
LOCAL XBall=0
LOCAL YBall=128
LOCAL Vie=3
LOCAL Score=0
LOCAL XSens=1/*Sens X de la ball*/
LOCAL YSens=-1 /*Sens Y de la ball*/
LOCAL Renvoie=FALSE /*Quand on touche le plafond*/
LOCAL Casse=FALSE /*Quand on Casse la Brique*/
/*Attention, Tableau, le premier chiffre est la coordonnée X des briques*/
/*Le Deuxième Chiffre ET le Numéro de Brush, 1 étant la Brush Brique*/
LIGNE={}
LIGNE={0,1,8,1,16,1,24,1,32,1,40,1,48,1,56,1,64,1,72,1,80,1,88,1,96,1,104,1,112,1,
120,1,128,1,136,1,144,1,152,1,160,1,168,1,176,1,184,1,192,1,200,1,208,1,216,1,224,
1,232,1,240,1,248,1,256,1,264,1,272,1,280,1,288,1,296,1,304,1,312,1,320,1}
/*Fonction BALL, affiche la ball et la déplace*/
FUNCTION Ball()
XBall=XBall+XSens
YBall=Yball+YSens
IF XBall=312 THEN XSens=-1 /*Si on touche l'extrème gauche alors la ball change de sens*/
IF XBall=0 THEN XSens=1 /*Si on touche l'extrème droite alors la ball change de sens*/
IF YBall=10 THEN YSens=1 /*Si on touche le plafond alors la ball redescend*/
/* Cette ligne du dessous test si les Brush ball et raquette se touche, si elle se touche, alors Renvoie=TRUE*/
Renvoie=COLLISION(#BRUSH,3,XBarre,248,2,XBall,YBall)
/*Oulala sa devient compliqué la*/
/*Je test toutes les adresse IMPAIRE de mon tableau LIGNE et si la valeur juste avant est différent de 1 
alors l'adresse testé vaudra -50 (sortir la brush de l'écran)*/
FOR x=1 TO 81 STEP 2
	IF ligne[x]<>1 THEN ligne[x-1]=-50
/*Encore un test de collision, mais entre la ball et les briques*/
	Casse=COLLISION(#BRUSH,2,XBall,yball,1,Ligne[x-1],20)
/*Si Casse=True alors je mets grace au test du dessous la valeur 4 à l'adresse de la brush*/
	IF Casse=TRUE
		Ysens=1
		Ligne[x]=4
		Score=Score+10
	ENDIF
NEXT
/*Rappelez vous que plus haut je test la valeur du N° de brush et si elle est différente de 1 alors je mets -50 
pour sortir la brush de l'écran*/
IF Renvoie=TRUE THEN Ysens=-1
/*Si je touche le sol, je perd 1 vie*/
IF YBall=256
	Ysens=-1
	Vie=Vie-1
ENDIF
DISPLAYBRUSH(2,XBall,Yball)
ENDFUNCTION

FUNCTION Ecran()
/*J'affiche les briques selon les coordonnées X du tableau Ligne*/ 
FOR x=1 TO 81 STEP 2
	DISPLAYBRUSH(Ligne[x],Ligne[x-1],20)
NEXT
/*TEXTOUT, c'est une commande bien plus costaud que Print, pas de colonne ou de ligne, 
mets des coordonnées en pixel*/
TEXTOUT(0,0,"Score : ")
TEXTOUT(80,0,Score)
TEXTOUT(260,0,"Vie : ")
TEXTOUT(310,0,Vie)
ENDFUNCTION

FUNCTION Player()
/*Flip d'écran pour le doublebuffer*/
FLIP
/*Efface ECRAN*/
CLS
Ball()
Ecran()
/*Test Clavier*/
IF ISKEYDOWN("LEFT")=TRUE THEN Gauche()
IF ISKEYDOWN("RIGHT")=TRUE THEN Droite()
/*Affiche La Barre*/
DISPLAYBRUSH(3,XBarre,250)
ENDFUNCTION

FUNCTION Gauche()
XBarre=XBarre-4
IF XBarre<0 THEN XBarre=0
ENDFUNCTION

FUNCTION Droite()
XBarre=XBarre+4
IF XBarre>280 THEN XBarre=280
ENDFUNCTION

SETINTERVAL (1,Player,20)
BEGINDOUBLEBUFFER

REPEAT
WAITEVENT
UNTIL Vie=0

Locked