Page 1 sur 1
[Ok]Besoin d'un info pour mon code
Publié : sam. 23/avr./2016 9:40
par Bernie
Bonjour j'ai besoin de savoir où je mets ceci :
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 I
f 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
Re: Besoin d'un info pour mon code
Publié : sam. 23/avr./2016 9:53
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
Re: Besoin d'un info pour mon code
Publié : sam. 23/avr./2016 10:07
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
Re: Besoin d'un info pour mon code
Publié : sam. 23/avr./2016 11:33
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
Re: Besoin d'un info pour mon code
Publié : sam. 23/avr./2016 11:42
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