[Ok]Besoin d'un info pour mon code

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Bernie
Messages : 282
Inscription : mar. 22/mars/2016 10:12
Localisation : En France

[Ok]Besoin d'un info pour mon code

Message par Bernie »

Bonjour j'ai besoin de savoir où je mets ceci :

Code : Tout sélectionner

DisplayTransparentSprite(#Ship, ShipX, ShipY)
si on appuie sur la barre d'espacement on lance le jeu et le vaisseau apparait
mais je sais pas si il faut le mettre après Examine keyboard ou avant dans un If DebutJeu = #true endif

merci d'avance

Code : Tout sélectionner

Repeat
  Repeat
    gEvent=WindowEvent()
    Select gEvent
      Case #PB_Event_CloseWindow
        End
    EndSelect
  Until gEvent=0
  ;--- Partie 2D
  ClearScreen(RGB(0, 0, 0))
  Deplacement()
  ;---Si le jeux n'as pas commencé 
  If DebutJeu = #False
    ;---Affichage du logo 
    DisplayTransparentSprite(#Titre,95,210)
    
    ;--On fait clignoter le texte "Press SpaceBar"
    If TextOn
      DisplayTransparentSprite(#Text_PressBar, 230, 480)
    EndIf
    If (ElapsedMilliseconds()-gTimeElapsed)>500
      If TextOn
        TextOn=#False
      Else
        TextOn=#True
      EndIf
      gTimeElapsed=ElapsedMilliseconds()
    EndIf
  EndIf
  
  ExamineKeyboard()
  ;--- Si on presse la touche Space bar on coupe la musique et on lance le jeu 
  If KeyboardPushed(#PB_Key_Space)
    StopSound(#Music)
    DebutJeu = #True
  EndIf
  
  ;--- Début du jeu 
  If DebutJeu = #True
  EndIf
  
    FlipBuffers()
  Until KeyboardReleased(#PB_Key_Escape)
  End
Dernière modification par Bernie le sam. 23/avr./2016 14:25, modifié 1 fois.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Besoin d'un info pour mon code

Message par Ollivier »

Tu le mets exactement comme DisplaySprite(). (add: avant un FlipBuffers(), ça c'est le plus important, et après un ClearScreen si tu n'as pas de gestion autre d'effacement d'écran)

Ce n'est pas un attributeur, mais une méthode (façon) d'afficher un sprite.

C'est dans la boucle principale d'affichage, et son ordre dans la liste des instructions du programme sert juste à indiquer le plan où il se trouve (de l'arrière-plan à l'avant-plan).

Exemple :
0. Efface l'écran puis
1. affiche le Ciel puis
2. affiche l'horizon puis
3. les objets du 1er plan.
4. flippe les buffers
Bernie
Messages : 282
Inscription : mar. 22/mars/2016 10:12
Localisation : En France

Re: Besoin d'un info pour mon code

Message par Bernie »

Ollivier a écrit :Tu le mets exactement comme DisplaySprite(). (add: avant un FlipBuffers(), ça c'est le plus important, et après un ClearScreen si tu n'as pas de gestion autre d'effacement d'écran)

Ce n'est pas un attributeur, mais une méthode (façon) d'afficher un sprite.

C'est dans la boucle principale d'affichage, et son ordre dans la liste des instructions du programme sert juste à indiquer le plan où il se trouve (de l'arrière-plan à l'avant-plan).

Exemple :
0. Efface l'écran puis
1. affiche le Ciel puis
2. affiche l'horizon puis
3. les objets du 1er plan.
4. flippe les buffers
merci mais c'est pas ce que je voulais savoir j'ai crée une variable globale : DebutJeu = #False
dans ma boucle j'ai mis if DebutJeu = #False : Affichage du logo , puis du texte endif ensuite E

Code : Tout sélectionner

xamineKeyboard puis If KeyboardPushed(#PB_Key_Space)
    StopSound(#Music)
    DebutJeu = #True
  EndIf
 
  ;--- Début du jeu <-------------- c'est là que je savoir si je mets ceci  avant examine keyborad ou aprés  ? 
  If DebutJeu = #True
  EndIf
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Besoin d'un info pour mon code

Message par Ollivier »

Pense à placer ExamineKeyboard() avant toute condition If KeyboardPushed(Touche lambda) et à ne mettre qu'un seul ExamineKeyboard() dans la boucle.

Exemple :

Examen clavier
Si Touche(Echap) Alors ... EndIf
Si Touche(Entrée) Alors ... EndIf
Si Touche(Espace) Alors ... EndIf

; L'essentiel c'est de respecter l'ordre d'affichage : de ce qui est derrière d'abord à ce qui est devant ensuite.
Si Deco(ArrierePlan) Alors ... EndIf
Si Deco(Titre) Alors ... EndIf
Si Deco(Souris) Alors ... EndIf
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Besoin d'un info pour mon code

Message par microdevweb »

Voila un petit code qui t'aidera peut-être

Code : Tout sélectionner

EnableExplicit
InitSprite()
InitKeyboard()
#MainForm=0
#sprWelcome=0
#sprStartGame=1
#Font=0
; Ouverture de la fenêtre de jeux
OpenWindow(#MainForm,0,0,800,600,"teste",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(#MainForm),0,0,800,600)
Global Event,Exit.b=#False,StartGame.b=#False
; Ici je charge un police
LoadFont(#Font,"Arial",32,#PB_Font_HighQuality|#PB_Font_Bold)
; Ici je crée mes sprites
;Le sprite d'acceuil
Procedure DrawWelcome()
    Protected X,Y
    Protected txt.s="Welcome press SPACE for START"
    CreateSprite(#sprWelcome,800,600)
    StartDrawing(SpriteOutput(#sprWelcome))
    DrawingFont(FontID(#Font))
    DrawingMode(#PB_2DDrawing_Transparent)
    ; Pour centre le texte
    X=400-(TextWidth(txt)/2)
    Y=300-(TextHeight(txt)/2)
    DrawText(X,Y,txt)
    StopDrawing()
EndProcedure
; Le sprite du jeu
Procedure DrawStartGame()
    Protected X,Y
    Protected txt.s="Game STARTED"
    CreateSprite(#sprStartGame,800,600)
    StartDrawing(SpriteOutput(#sprStartGame))
    DrawingFont(FontID(#Font))
    DrawingMode(#PB_2DDrawing_Transparent)
    ; Pour centre le texte
    X=400-(TextWidth(txt)/2)
    Y=300-(TextHeight(txt)/2)
    DrawText(X,Y,txt)
    StopDrawing()
EndProcedure
; Initialisasion du jeu je crée mes sprites
DrawWelcome()
DrawStartGame()
; Main loop suivant le principe de double boucle
Repeat
    ; La boucle de gestion des événements WINDOWS
    Repeat
        Event=WindowEvent() ; Relève les évenements de la fenêtre
        ; Clique sur la croix de fermeture de fenêtre
        If Event=#PB_Event_CloseWindow
            Exit=#True
        EndIf
    Until Event=0  ; Si pas d'évenement windows on sort de la boucle
    ClearScreen(RGB(0, 0, 0)); j'efface l'écran en noir
    Select StartGame
        Case #False
            ; J'attend l’appui sur espace donc j'affiche l'écran d'accueil
            DisplaySprite(#sprWelcome,0,0)
        Case #True 
            ; Le jeu a démarrer donc je lance mon jeux, dans ce cas je n'afficherais qu'un sprite
            ; Mais dans le cas d'un vrai jeux je lancerai une procédure qui s'occuperais de mon jeux
            DisplaySprite(#sprStartGame,0,0)
    EndSelect
    ; Gestion du clavier
    ExamineKeyboard() ; je regarde les évenement du clavier
    If KeyboardPushed(#PB_Key_Space)
        ; La touche ESPACE je lance le jeu
        StartGame=#True
    EndIf
    If KeyboardPushed(#PB_Key_Escape)
        ; La touche ESCAPE je quitte le jeu
        Exit=#True
    EndIf
    If Exit
        End
    EndIf
    FlipBuffers() ; J'inverse les buffers et ainsi affiche les sprites
Until Exit=#True
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Répondre