Petit soucis avec mon code ..

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
grendizer
Messages : 61
Inscription : mer. 29/mai/2019 6:29

Petit soucis avec mon code ..

Message par grendizer »

Bonjour

j'essaye de crée un petit jeu pour un ami
mon petit soucis c'est quand j'appuie sur space j'aimerai que le menu disparait pour laisser place à la fenêtre de jeu

https://www.dropbox.com/s/ub5702jdmin3y ... b.zip?dl=0

j'ai besoin de conseils merci d'avance
Marc56
Messages : 2197
Inscription : sam. 08/févr./2014 15:19

Re: Petit soucis avec mon code ..

Message par Marc56 »

À la fin toute opération modifiant l'écran, il faut ajouter un FlipBuffers() pour basculer l'écran "de travail" de celui "en cours". Ici ta boucle sort avant le prochain FlipBuffers()
(Tu peux l'ajouter après ClearScreen() ou au début de la procédure)

Code : Tout sélectionner

    If KeyboardPushed(#PB_Key_Space)
        ClearScreen(RGB(0, 0, 0))
        FlipBuffers() ; <--- Là
        ecran_jeu()
    EndIf
Il faut aussi mettre quelque-chose dans la procédure pour que ça s’arrête avant le retour à l'écran principal

Code : Tout sélectionner

Procedure ecran_jeu()
    MessageRequester("", "ecran_jeu()")   
EndProcedure
:wink:
Avatar de l’utilisateur
grendizer
Messages : 61
Inscription : mer. 29/mai/2019 6:29

Re: Petit soucis avec mon code ..

Message par grendizer »

Merci Marc de ton aide
Bonne soirée
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Petit soucis avec mon code ..

Message par falsam »

Ta procédure ecran_jeu() ne contient aucun code. Aucune chance de voir quelques chose :wink:

Un deuxième souci, dans ta boucle tu affiche en permanence le sprite de départ que meme si tu fais appel à la procédure ecran_jeu()

Je te propose de créer une scene pour l'intro de ton jeu et une scene pour ton jeu.

Dans ta boucle il suffira de connaitre la scene à afficher.

Code : Tout sélectionner

Select Stage 
    Case 0 : ecran_Main()
    Case 1 : ecran_jeu()
  EndSelect
n'ayant pas de joueur j'ai crée un sprite pour ta procédure ecran_jeu()

Code : Tout sélectionner

;***********************************************************************
; GALACTIC SHOOTER  2020 
;--Initialisation
EnableExplicit
UseJPEGImageDecoder()
UsePNGImageDecoder()
UseOGGSoundDecoder()

;----
If InitSprite()=0 Or InitKeyboard()=0 Or InitMouse()=0 Or InitSound()=0
  MessageRequester("Erreur", "Impossible d'initialiser le jeu ")
EndIf

;-- Constantes 
Enumeration Fenetres
  #window_0
EndEnumeration  

;--  Sprites
Enumeration Sprites
  #spr_Menu
  #Player
EndEnumeration 

;---  Variables 
Global Event_Window, Stage = 0

Procedure Start()
  OpenWindow(#window_0,0,0,1024,768,"Galactic Shooter",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  OpenWindowedScreen(WindowID(#window_0),0,0,1024,768)
  
  LoadSprite(#spr_Menu,"images/menu.png")
  CreateSprite(#Player, 32, 32)
  If StartDrawing(SpriteOutput(#player))
    Box(0, 0, 32, 32, RGB(255, 0, 0))
    StopDrawing()
  EndIf 
EndProcedure

;-- Pour l'ecran de jeu
Procedure ecran_main()
  DisplaySprite(#spr_Menu,0,0)
EndProcedure

Procedure ecran_jeu()
  DisplaySprite(#Player, 20, 20)
EndProcedure

Start()

;--  Boucle du programme
Repeat 
  Repeat
    Event_Window = WindowEvent()
    Select  Event_Window
      Case #PB_Event_CloseWindow
        End
    EndSelect
  
  Until Event_Window = 0 
  ;--  Partie pour la  2d    
 
  ExamineKeyboard()
  
  ;-- Si on appuie sur la touche Space  on lance le jeux
  If KeyboardPushed(#PB_Key_Space)
    Stage = 1
  EndIf
  
  ClearScreen(RGB(0, 0, 0))
  
  Select Stage 
    Case 0 : ecran_Main()
    Case 1 : ecran_jeu()
  EndSelect
  
  FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Petit soucis avec mon code ..

Message par falsam »

Attention :
- la fonction KeyboardPushed() permet de tester une touche du clavier tant qu'elle est appuyer.
- la fonction KeyboardReleased() permet de tester une touche du clavier tant elle est appuyer et relacher. Tant que le touche est appuyer tu n'auras aucun retour de valeur.

Pour tester le lancement de ton jeu avec la touche Espace, tu dois utiliser KeyboardReleased()

Ceci dit, voici un nouveau code toujours sur le même principe que le code précédent mais les événements clavier sont gérés dans chaque scène. Quand tu es dans le jeu, tu peux bouger le sprite avec les flèches du clavier et tirer avec la touche Espace.

Code : Tout sélectionner

;***********************************************************************
; GALACTIC SHOOTER  2020 
;--Initialisation
EnableExplicit
UseJPEGImageDecoder()
UsePNGImageDecoder()
UseOGGSoundDecoder()

;----
If InitSprite()=0 Or InitKeyboard()=0 Or InitMouse()=0 Or InitSound()=0
  MessageRequester("Erreur", "Impossible d'initialiser le jeu ")
EndIf

;-- Constantes 
Enumeration Fenetres
  #window_0
EndEnumeration  

;--  Sprites
Enumeration Sprites
  #spr_Menu
  #Player
EndEnumeration 

;---  Variables 
Global Event_Window, Stage = 0

Procedure Start()
  OpenWindow(#window_0,0,0,1024,768,"Galactic Shooter",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  OpenWindowedScreen(WindowID(#window_0),0,0,1024,768)
  
  LoadSprite(#spr_Menu,"images/menu.png")
  CreateSprite(#Player, 32, 32)
  If StartDrawing(SpriteOutput(#player))
    Box(0, 0, 32, 32, RGB(255, 0, 0))
    StopDrawing()
  EndIf 
EndProcedure

;-- Pour l'ecran de jeu
Procedure ecran_main()  
  DisplaySprite(#spr_Menu, 0, 0)
  ;-- Si on appuie sur la touche Space  on lance le jeux
  
  If KeyboardReleased(#PB_Key_Space)
    Stage = 1
  EndIf  
  
  If KeyboardReleased(#PB_Key_Escape)
    End
  EndIf  
EndProcedure

Procedure ecran_jeu()
    Static x, y
  
  If KeyboardPushed(#PB_Key_Left)
    x-2
  EndIf
  
  If KeyboardPushed(#PB_Key_Right)
    x+2
  EndIf
  
  If KeyboardPushed(#PB_Key_Up)
    y-2
  EndIf
  
  If KeyboardPushed(#PB_Key_Down)
    y+2
  EndIf
  
  If KeyboardPushed(#PB_Key_Space)
    Debug "Fire"
  EndIf  
  
  If KeyboardReleased(#PB_Key_Escape)
    Stage = 0
  EndIf  

  DisplaySprite(#Player, x, y)
EndProcedure

Start()

;--  Boucle du programme
Repeat 
  Repeat
    Event_Window = WindowEvent()
    Select  Event_Window
      Case #PB_Event_CloseWindow
        End
    EndSelect
  Until Event_Window = 0 
  
  ;--  Partie pour la  2d    
  ExamineKeyboard()
    
  ClearScreen(RGB(0, 0, 0))
  
  Select Stage 
    Case 0 : ecran_Main()
    Case 1 : ecran_jeu()
  EndSelect
  
  FlipBuffers()
ForEver
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
grendizer
Messages : 61
Inscription : mer. 29/mai/2019 6:29

Re: Petit soucis avec mon code ..

Message par grendizer »

un grand merci falsam
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Petit soucis avec mon code ..

Message par venom »

Sympa ces exemples. Merci falsam 8)






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Petit soucis avec mon code ..

Message par Ar-S »

KeyboardPushed ou KeyboardReleased sont contraignant.
L'absence d'un mouseleft/right clic est un grand manque pour la lib 2D
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Petit soucis avec mon code ..

Message par falsam »

Et voila je me suis emballé !! J'ai modifié ton code en ajoutant :
- Des cibles
- Des tirs
- Une gestion de collisions Bullets -> Cible et Player ->Cible
- Restructuration de ton code.

Code : Tout sélectionner

;***********************************************************************
; GALACTIC SHOOTER  2020 
;***********************************************************************

EnableExplicit

Enumeration Fenetres
  #window_0
EndEnumeration  

Enumeration Sprites
  #spr_Menu 
   #Player
  #Bullet ; Modele d'un bullet
  #Target ; Modele d'une cible
EndEnumeration 

Global Event_Window 
Global Stage        ; Indicateur de scene
Global Life         ; Indicateur de vie
Global n            ; Pour boucle de création des cibles et bullets
Global FontGlobal   ; Police de jeu
Global FontStrong   ; Police affichage gros titre
Global x, y         ; Position joueur

Structure NewSprite
  idSprite.i
  x.i
  y.i
EndStructure

Global NewList Bullets.NewSprite() ; Memorisation des tirs
Global NewList Targets.NewSprite() ; Mémorisation des cibles

; Sommaire 
Declare Start()       ; Init et boucle rendering

Declare ecran_main()  ; Scene Accueil
Declare ecran_jeu()   ; Scene Combat

Declare Exit()        ; Sortie de l'application

Start()

; Initialisation du jeu
Procedure Start()
  UseJPEGImageDecoder()
  UsePNGImageDecoder()
  UseOGGSoundDecoder()
  
  FontGlobal = LoadFont(#PB_Any, "Arial", 30)
  FontStrong = LoadFont(#PB_Any, "Arial", 100)
  
  If InitSprite()=0 Or InitKeyboard()=0 Or InitMouse()=0 Or InitSound()=0
    MessageRequester("Erreur", "Impossible d'initialiser le jeu ")
    Exit()
  EndIf
  
  OpenWindow(#window_0,0,0,1024,768,"Galactic Shooter",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  OpenWindowedScreen(WindowID(#window_0),0,0,1024,768)
  
  ; Chargement du sprite d'accueil
  LoadSprite(#spr_Menu,"images/menu.png")
  
  ; Création du player (Ou chargement d'un sprite)
  CreateSprite(#Player, 32, 32)
  If StartDrawing(SpriteOutput(#player))
    Box(0, 0, 32, 32, RGB(255, 0, 0))
    StopDrawing()
  EndIf
  
  ; Création du modele de bullet (Ou chargement d'un sprite)
  CreateSprite(#Bullet, 32, 5)
  If StartDrawing(SpriteOutput(#Bullet))
    Box(0, 0, 32, 5, RGB(255, 0, 0))
    StopDrawing()
  EndIf
  
  ; Création du modele de cible (Ou chargement d'un sprite)
  CreateSprite(#Target, 32, 32)
  If StartDrawing(SpriteOutput(#Target))
    Box(0, 0, 32, 32, RGB(0, 0, 255))
    StopDrawing()
  EndIf  
  
  ; Boucle rendering
  Repeat 
    Repeat
      Event_Window = WindowEvent()
      Select Event_Window
        Case #PB_Event_CloseWindow
          Exit()
      EndSelect
    Until Event_Window = 0 
    
    ExamineKeyboard()
    
    ClearScreen(RGB(0, 0, 0))
    
    Select Stage 
      Case 0 : ecran_main() ; Accueil
      Case 1 : ecran_jeu()  ; Combat
    EndSelect
    
    FlipBuffers()
  ForEver
EndProcedure

;-
;- Scenes

; Scene d'accueil
Procedure ecran_main()  
  DisplaySprite(#spr_Menu, 0, 0)
  
  If KeyboardReleased(#PB_Key_Space)
    
    ; Création des cibles
    ; Les cibles sont disposés à droite en dehors de l'ecran
    x = 100
    y = ScreenHeight()/2
    
    ClearList(Targets())
    ClearList(Bullets())
    
    For n = 1 To 20
      AddElement(Targets())
      Targets()\idSprite = CopySprite(#Target, #PB_Any)
      Targets()\x = ScreenWidth() + Random(2000)
      Targets()\y = Random(ScreenHeight()-128, 128)
    Next
    Life  = 1 ; Attribution du nombre de vie
    Stage = 1 ; Passage à la premiere scene
  EndIf  
  
  If KeyboardReleased(#PB_Key_Escape)
    Exit()
  EndIf  
EndProcedure

; Scene de combat
Procedure ecran_jeu()
  Static LastFire
  Protected Speed = 5, Collision
  
  ; Evenement clavier
  If life
    If KeyboardPushed(#PB_Key_Left)
      x-Speed
    EndIf
    
    If KeyboardPushed(#PB_Key_Right)
      x+Speed
    EndIf
    
    If KeyboardPushed(#PB_Key_Up)
      y-Speed
    EndIf
    
    If KeyboardPushed(#PB_Key_Down)
      y+Speed
    EndIf
  EndIf 
  
  ; Un tir est actionné
  If KeyboardPushed(#PB_Key_Space) And Life
    ; Pas plus d'un tir par demie seconde
    If ElapsedMilliseconds() - LastFire > 500 Or LastFire = 0 
      LastFire = ElapsedMilliseconds() + 1 ; +1 Pour éviter un Lasfire = 0
      AddElement(Bullets())
      Bullets()\idSprite = CopySprite(#Bullet, #PB_Any)
      Bullets()\x = x + SpriteWidth(#Player) + 5
      Bullets()\y = y + SpriteHeight(#Player)/2
    EndIf
  EndIf  
  
  If KeyboardReleased(#PB_Key_Escape)
    Stage = 0
  EndIf  
  
  ; Affichage des sprites
  
  ; Affichage du joueur
  DisplaySprite(#Player, x, y)
  
  ; Affichage des bullet 
  If Life
    ForEach Bullets()
      Bullets()\x + 10
      If Bullets()\x < ScreenWidth()
        DisplaySprite(Bullets()\idSprite, Bullets()\x, Bullets()\y)
      Else
        DeleteElement(Bullets())
      EndIf
    Next
  EndIf
  
  ; Affichages des cibles
  ForEach Targets()
    If life
      Targets()\x - 5
    EndIf
    
    If Targets()\x < SpriteWidth(Targets()\idSprite)
      Targets()\x = ScreenWidth() + Random(1000)
    EndIf
    
    DisplaySprite(Targets()\idSprite, Targets()\x, Targets()\y)
  Next
  
  ; Gestion des collisions
  
  ;- Collision Bullet -> Cible
  ForEach Bullets()    
    ForEach Targets()
      If SpriteCollision(Bullets()\idSprite, Bullets()\x, Bullets()\y, 
                         Targets()\idSprite, Targets()\x, Targets()\y)
        Collision = #True
        DeleteElement(Targets())
      EndIf
    Next
    If Collision
      DeleteElement(Bullets())
    EndIf
  Next
  
  ;- Collision Player -> Cible
  ForEach Targets()
    If SpriteCollision(#Player, x, y, Targets()\idSprite, Targets()\x, Targets()\y) And Life
      Life - 1
    EndIf 
  Next  
  
  ;- Affichage informations
  If StartDrawing(ScreenOutput())
    DrawingMode(#PB_2DDrawing_Transparent)
    
    ; Nombres de cibles restantes
    DrawingFont(FontID(FontGlobal))
    DrawText(20, 20, "Cibles : " + Str(ListSize(Targets())), RGB(255, 0, 0))
    
    ; C'est gagné :)
    If ListSize(Targets()) = 0
      DrawingFont(FontID(FontStrong))
      DrawText(20, 300, "Yeah! Gagné :)", RGB(0, 255, 0))
      
      DrawingFont(FontID(FontGlobal))
      DrawText(20, ScreenHeight() - 50, "[Esc] - Retour à l'écran d'accueil", RGB(255, 0, 0))
    EndIf
    
    ; C'est perdu (:
    If Life = 0 
      DrawingFont(FontID(FontStrong))
      DrawText(400, 300, "Perdu", RGB(255, 0, 0))
      
      DrawingFont(FontID(FontGlobal))
      DrawText(20, ScreenHeight() - 50, "[Esc] - Retour à l'écran d'accueil", RGB(255, 0, 0))
      
    EndIf
    StopDrawing()
  EndIf
EndProcedure

;-
Procedure Exit()
  End  
EndProcedure
Barre d'espacement pour tirer.

J'espére que nous verrons ton jeu final hein ? :wink:
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
grendizer
Messages : 61
Inscription : mer. 29/mai/2019 6:29

Re: Petit soucis avec mon code ..

Message par grendizer »

Merci Falsam 'j’en demandez pas temps
je bosse sur le jeu ...et MERCI
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Petit soucis avec mon code ..

Message par falsam »

grendizer ([i]Sur Discord[/i]) a écrit :Bonjour j'ai un soucis ^pour faire deplacer le vaisseau a droite :
Bonjour grendizer.

:!: Dans ta procédure Gestion_Ship() tu affiches ton vaisseau au milieu puis tu essayes de le déplacer à droite.
Quand tu relâches ta touche, ton vaisseau reviendra de nouveau au milieu.

:!: Tu utilises la fonction KeyboardReleased() pour déplacer ton vaisseau. Dans un commentaire précédent je t'ai déja dit de faire attention avec les fonctions KeyboardReleased() et KeyboardPushed()

Je vais essayer d’être plus simple :wink:
- Avec KeyboardReleased() ton vaisseau fait un déplacement quand la touche est relachée.

- Avec KeyboardPushed() ton vaisseau se déplace tant que tu appuies sur la touche.

■ Les corrections effectuées.
Procédure Gestion_Ship()
- Les instructions inutiles sont commentées
- KeyboardReleased() et remplacée par KeyboardPushed()

Juste avant l'appel de la boucle de rendering
Positionnement du vaisseau en bas de l'ecran et centré horizontalement.

Code : Tout sélectionner

;--  Affiche le vaisseau  centré en bas de l'écran 
ship\sprX = (ScreenWidth() - SpriteWidth(#ship)) / 2 
ship\sprY = (ScreenHeight() - SpriteHeight(#ship)) - 50
■ Le code corrigé.

Code : Tout sélectionner

;***********************************************************************
; GALACTIC SHOOTER 2020
;***********************************************************************

;--  Initialisation 
UseJPEGImageDecoder()
UsePNGImageDecoder()
EnableExplicit
If InitSprite()=0 Or InitKeyboard()=0 Or InitSound() = 0
  MessageRequester("Erreur", "Impossible d'initialiser le jeu ")
EndIf

;-- Constantes 
Enumeration Window
  #Window_Main 
EndEnumeration

Enumeration Sprites
  #spr_Ecran
  #sound_Music
  #Stars0
  #Stars1 
  #Ship 
EndEnumeration

;--  Variables Globale 
Global eventWindow , screen_W = 1024,screen_H = 768 , gstar, Screen

#StarMax =100 ; --  Nombre d'etoiles 

Structure Star ; --  Structure pour une étoile :  position x, postion y, vitesse , indentifiant
  sX.i
  sY.i
  spd.i
  sId.b
EndStructure
Global Dim stars.star(#StarMax) ; --  Tableau qui s'appelle stars 

;-- Struture pour les sprites 
Structure Sprite 
  sprX.i
  sprY.i
  sprW.i
  sprH.i
  sprId.b
EndStructure
;--  Pout le vaisseau 
Global ship.sprite


;--  Declaration des procedures 
Declare Create_Star()
Declare Star_Init()
Declare Scrolling()
Declare Screen_Menu()
Declare Gestion_Ship()

;--  Fenetre du jeu 

OpenWindow(#Window_Main,0,0,screen_W,screen_H,"GALACTIC SHOOTER  ",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#Window_Main),0,0,screen_W,screen_H)
;--  Chargement de l'image du menu 
LoadSprite(#spr_Ecran,"images/menu.png")
;--  Chargement de la musique du menu 
LoadSound(#sound_Music,"sons/music.Wav")
;--  On joue la musique 
PlaySound(#sound_Music)
;--  Chargement du vaisseau 
LoadSprite(#ship,"images/ship.png",#PB_Sprite_AlphaBlending)

;--  Affiche le vaisseau  centré en bas de l'écran 
ship\sprX = (ScreenWidth() - SpriteWidth(#ship)) / 2 
ship\sprY = (ScreenHeight() - SpriteHeight(#ship)) - 50

;--  On appelle  les 2 procedures pour les  étoiles 
Create_Star()
Star_Init()

;-- Boucle du programme 

Repeat
  Repeat 
    eventWindow = WindowEvent()
    Select eventWindow
      Case #PB_Event_CloseWindow
        End
    EndSelect
    
  Until eventWindow = 0
  
  ClearScreen(RGB(0, 0, 0))
  ExamineKeyboard()
  Select Screen
    Case 0 :
      Screen_Menu()
      
    Case 1 :
      Scrolling() 
      Gestion_Ship() 
      
  EndSelect
  
  FlipBuffers()
Until KeyboardReleased(#PB_Key_Escape)
End

;--  Les procedures 

;--  Dessin des etoiles  une blanche et une jaune 
Procedure Create_Star()
  CreateSprite(#Stars0,2,2)
  CreateSprite(#Stars1,2,2)
  StartDrawing(SpriteOutput(#Stars0))
  Box(0, 0, 2, 2, $FFFFFF)
  StopDrawing()
  StartDrawing(SpriteOutput(#Stars1))
  Box(0, 0, 2, 2,  $5BF7FF)
  StopDrawing()
  
EndProcedure  

;--  Initialisation des étoiles  
Procedure Star_Init()
  With stars(gstar)
    For gstar = 0 To #StarMax
      \sY = Random(screen_H)
      \sX = Random(screen_W,0)
      \sId = Random(2,1)
      \spd = Random(8,2)
    Next 
  EndWith
EndProcedure

;--  Procedure pour crée le  scrolling 
Procedure Scrolling()
  For gstar = 0 To #StarMax
    With stars(gstar)
      DisplaySprite(\sId,\sX,\sY)
      \sY + \spd
      If \sY >= screen_W
        \sY - screen_W
      EndIf 
    EndWith
  Next 
  
  
EndProcedure

Procedure Screen_Menu()
  ;-- Affichage     
  DisplaySprite(#spr_Ecran,0,0)
  ;--  Si on appuie sur space on lance le jeu 
  If KeyboardReleased(#PB_Key_Space)
    StopSound(#sound_Music)
    Screen = 1 
  EndIf
  ;
EndProcedure  

Procedure Gestion_Ship()
  ;-- Affichage 
  
  ;-- On recupere la largeur et la hauteur du sprite 
  ;ship\sprW = SpriteWidth(#ship)
  ;ship\sprH = SpriteHeight(#ship)
  
  ;--  Affiche le vaisseau  centré en bas de l'écran 
  ;ship\sprX = (screen_W/2) - (ship\sprW/2) 
  ;ship\sprY = screen_H - ship\sprH -10
  
  DisplayTransparentSprite(#ship,ship\sprX,ship\sprY)
  
  ;-- Deplacement 
  If KeyboardPushed(#PB_Key_Right)
    ship\sprX + 5
  EndIf  
  
  If KeyboardPushed(#PB_Key_Left)
    ship\sprX - 5
  EndIf  
EndProcedure  
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
grendizer
Messages : 61
Inscription : mer. 29/mai/2019 6:29

Re: Petit soucis avec mon code ..

Message par grendizer »

Un grand merci Falsam
j'ai passé beaucoup d'heures dessus c'est qui est dessiner le vaisseau

mon vaisseau bouge dans les 4 directions sans sortir de l'ecran
Répondre