Page 1 sur 1

Début d'un casseBrique

Publié : lun. 03/juil./2017 13:36
par Tonio
Bonjour
j'ai commencer un Casse Brique
je voudrais faire en sorte que ma balle soit collée sur la raquette et si on appuie sur le bouron gauche de la souris on lance la balle
Comment je peux faire ça ? merci

Code : Tout sélectionner

;------ Break Out ------
;------ PureBasic 5.60, 64 bits  --
;--- Initilisation :
EnableExplicit

If InitSprite()=0 Or InitKeyboard()=0 Or InitMouse() = 0
      MessageRequester("Erreur", "Impossible d'initialiser le jeux  ")
      End
EndIf


;--- Constantes
Enumeration Windows
  #Main_Game
EndEnumeration

Enumeration Game
  #Spr_pad
  #Spr_balle
 EndEnumeration
 
 ;--- Structure pour la raquette(pad)
 Structure Pad
   padX.i
 EndStructure   

 ;--- Structure pour la balle 
 Structure ball
   ballX.i
   ballY.i
   Speed.i
 EndStructure  
 
 
 ;--- Variables 
 Global Raquette.Pad
 Global Balle.ball
 Global  Largeur = 800,Hauteur = 600, Event,MouseX,balleColle = #true 

 
 
 ;--- Fenetre Jeux 
OpenWindow(#Main_Game, 0, 0, Largeur, Hauteur,"", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#Main_Game), 0, 0, Largeur, Hauteur)
SetWindowTitle(#Main_Game,"Break Out" +"                          ESC pour quitter le jeu  ")

;---Création de la raquette 
CreateSprite(#Spr_pad,200,16)
StartDrawing(SpriteOutput(#Spr_pad))
Box(0, 0, 200,16, RGB(0, 128, 192))
StopDrawing()

;---Création de la balle 
CreateSprite(#Spr_balle,32,32)
StartDrawing(SpriteOutput(#Spr_balle))
Circle(10,10,10,RGB(255, 255, 0))
StopDrawing()

balle\ballX = 350
balle\ballY = 560 

RGB(255, 255, 0)


;--- Boucle du jeux 

Repeat 
  Repeat
    Event = WindowEvent()
    Select Event
      Case #PB_Event_CloseWindow
        End
    EndSelect
  Until Event=0
  ClearScreen(RGB(0, 0, 0))
  
  ;--- Affichage de la raquette 
  DisplayTransparentSprite(#Spr_pad,Raquette\padX,Hauteur-16)
  ;---Affichage de la balle
  DisplayTransparentSprite(#Spr_balle,Balle\ballX,Balle\ballY)
  MouseX = MouseX()
  ExamineMouse()
  ;--Deplcament de la raquette avec la souris 
  If MouseX<=Largeur-200
Raquette\padX=MouseX
Else
Raquette\padX=Largeur-200
EndIf


  
  ExamineKeyboard()
  FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) 

Re: Début d'un casseBrique

Publié : lun. 03/juil./2017 13:56
par falsam
Presque tout est dans ton code.

■ Si pas clique gauche de la souris
=> La balle suit la raquette : balle\ballX = Raquette\padX

■ SI Clique gauche de la souris
=> la balle est relachée : balleColle = #False
=> Initialisation de la vitesse verticale de balle : balle\Speed = -5

■ Si la balle n'est plus collée
==> La balle est en mouvement

■ Code

Code : Tout sélectionner

;------ Break Out ------
;------ PureBasic 5.60, 64 bits  --
;--- Initilisation :
EnableExplicit

If InitSprite()=0 Or InitKeyboard()=0 Or InitMouse() = 0
  MessageRequester("Erreur", "Impossible d'initialiser le jeux  ")
  End
EndIf


;--- Constantes
Enumeration Windows
  #Main_Game
EndEnumeration

Enumeration Game
  #Spr_pad
  #Spr_balle
EndEnumeration

;--- Structure pour la raquette(pad)
Structure Pad
  padX.i
EndStructure   

;--- Structure pour la balle 
Structure ball
  ballX.i
  ballY.i
  Speed.i
EndStructure  


;--- Variables 
Global Raquette.Pad
Global Balle.ball
Global  Largeur = 800,Hauteur = 600, Event,MouseX, balleColle = #True 

;--- Fenetre Jeux 
OpenWindow(#Main_Game, 0, 0, Largeur, Hauteur,"", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#Main_Game), 0, 0, Largeur, Hauteur)
SetWindowTitle(#Main_Game,"Break Out" +"                          ESC pour quitter le jeu  ")

;---Création de la raquette 
CreateSprite(#Spr_pad,200,16)
StartDrawing(SpriteOutput(#Spr_pad))
Box(0, 0, 200,16, RGB(0, 128, 192))
StopDrawing()

;---Création de la balle 
CreateSprite(#Spr_balle,32,32)
StartDrawing(SpriteOutput(#Spr_balle))
Circle(10,10,10,RGB(255, 255, 0))
StopDrawing()

balle\ballX = 350
balle\ballY = 560 

RGB(255, 255, 0)


;--- Boucle du jeux 

Repeat 
  Repeat
    Event = WindowEvent()
    Select Event
      Case #PB_Event_CloseWindow
        End
    EndSelect
  Until Event=0
  ClearScreen(RGB(0, 0, 0))
  
  ;--- Affichage de la raquette 
  DisplayTransparentSprite(#Spr_pad,Raquette\padX,Hauteur-16)
  ;---Affichage de la balle
  DisplayTransparentSprite(#Spr_balle,Balle\ballX,Balle\ballY)
  MouseX = MouseX()
  ExamineMouse()
  
  ;--Deplcament de la raquette avec la souris 
  If MouseX<=Largeur-200
    Raquette\padX=MouseX
  Else
    Raquette\padX=Largeur-200
  EndIf
  
  ;--Si la balle est collée alors la balle suit la raquette
  If balleColle = #True
    balle\ballX = Raquette\padX  
  Else
    balle\ballY = Balle\ballY + Balle\Speed
  EndIf
  
  ;-- Clique gauche de la souris
  If MouseButton(#PB_MouseButton_Left) And balleColle = #True
    ;Balle relachée
    balleColle = #False
    
    ;Init vitesse de la balle
    balle\Speed = -5
  EndIf
  
  
  ExamineKeyboard()
  FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
A toi de gérer les rebonds.

Re: Début d'un casseBrique

Publié : lun. 03/juil./2017 14:14
par Tonio
Un grand merci Falsam pour tes conseils

Re: Début d'un casseBrique

Publié : lun. 03/juil./2017 14:23
par TazNormand
Tonio, regardes dans un de tes précédents messages sous le pseudo JBernard13, celui-ci en l'occurence à adapter en PB 5.6 bien entendu