Tir pour un deluxe galaga par exemple

Discussion forum for the French Hollywood community

Tir pour un deluxe galaga par exemple

Postby ArtBlink » Wed Mar 16, 2011 9: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
ArtBlink
 
Posts: 427
Joined: Mon Nov 01, 2010 11:37 am
Location: Albert - France

Return to French forum

Who is online

Users browsing this forum: No registered users and 2 guests