Tir pour un deluxe galaga par exemple

Discussion forum for the French Hollywood community
Post Reply
ArtBlink
Posts: 437
Joined: Mon Nov 01, 2010 10:37 am
Location: Albert - France
Contact:

Tir pour un deluxe galaga par exemple

Post by ArtBlink » Wed Mar 16, 2011 8:51 pm

Voici le code ;-)

Code: Select all

@SCREEN {mode="ask",width=640, height=480,depth=16}
SetFillStyle(#FILLCOLOR)
; Ici, la Brosse 1 qui est le triangle Bleu, donc le vaisseau
CreateBrush(1,32,32,$000000)
SelectBrush(1)
Polygon(0,0,{0,32,16,0,32,32},3,$0000ff)
EndSelect
; Ici, la Brosse 2 qui est le rectangle vert donc le missile
CreateBrush(2,4,8,$000000)
SelectBrush(2)
Box(0,0,4,8,$00FF00)
EndSelect
; Comme d'habitude, la coouleur noir de fond ne doit pas être visible pour le triangle Bleu
SetBrushTransparency(1,$000000)
; variable globale
XVaisseau=320
XTir1=320
YTir1=440
OkPourTir1=0 ; est-ce que le missile n'est pas déjà lancé?!

Function PRG()
	
	Flip
	
	Cls
	; Test de touche
	Local Droite=IsKeyDown("Right") ; Touche vers la droite
	Local Gauche=IsKeyDown("Left") ; Touche vers la gauche
	Local Tir=IsKeyDown("Space") ; Barre espace
	
	If Droite=True Then XVaisseau=XVaisseau+2
	If Gauche=True Then XVaisseau=XVaisseau-2
	
	If OkPourTir1=0 ; SI le missile n'est pas lancé
		If Tir=True ; ET SI on appuie sur la barre espace... ALORS :
			OkPourTir1=1 ; On lance le missile
			Valider1=1 ; front montant, en gros on défini une variable de validation
		EndIf
	EndIf
	If OkPourTir1=1 ; C'est parti, le missile peut partir
		If valider1=1 Then Xtir1=XVaisseau ; La variable Valider permet de piquer la coordonnée en X du vaisseau
		; Pour obtenir le point de départ en X du missile
		Valider1=0 ; Et paf, si on mets pas valider à 0, le missile bougera vers la droite si vous appuyer sur 
		; la flêche vers la droite
		Ytir1=Ytir1-5 ; Vitesse en pixel de déplacement du missile
		DisplayBrush(2,Xtir1,Ytir1,{AnchorX=0.5,AnchorY=0.5}) ; Hyper important, on contrôle le tir depuit son centre
		If Ytir1=100 ; Modifier ici pour la fin du tir, c'est la coordonnée final en Y 
			OkPourTir1=0 ; Comme le missile est arrivé au point Y final, on peut en relancé un autre ;-)
			Ytir1=440 ; Initialisation du point de départ du missile en Y
		EndIf
	EndIf		
	
	DisplayBrush (1,XVaisseau,440,{AnchorX=0.5,AnchorY=0.5}); Hyper important, on contrôle le vaisseau depuit son centre
	
EndFunction

BeginDoubleBuffer

SetInterval(1, Prg, 20) ; 50 FPS... mouarff

Repeat
	WaitEvent
Forever

Post Reply