Page 1 sur 1

écran de jeux

Publié : jeu. 26/juin/2008 1:10
par nounours
Bonjour,

mon problème et le suivant je débute en programmation et je suis entrain de crée un jeu avec des amis et je dois m'occupais de l'aspect graphique

donc de l'écran avec les menus, un fond et tout le truc

j'ai commencé a programmé ceci

InitSprite()
OpenScreen(800, 600, 32,"mon jeu")

Enumeration
#PB_window_System_Menu
EndEnumeration
InitKeyboard()
KeyboardMode(1)
Repeat unquit #WM_CLOSE

le seul soucis c'est que
Repeat unquit #WM_CLOSE
me dit comme erreur (Garbage at the end of the line)
donc je mes la commende à la fin mais il ne veut toujours pas marché

pourquoi ?

une dernière question comment entré une image en fond et faire apparaitre des menue en plein milieu de mon écran

merci, j'espère avoir était claire

Publié : jeu. 26/juin/2008 1:41
par Ollivier
[+] Forum officiel
[+] [Search]
[+] GUI AND Screen
= Ceci !

Ollivier

Publié : jeu. 26/juin/2008 7:35
par Backup
Ollivier a écrit :[+] Forum officiel
[+] [Search]
[+] GUI AND Screen
= Ceci !

Ollivier
Olivier, tu sera bien sympath de ne pas répondre a coté de la question !!
il n'a pas demandé une usine a Gaz !! !!!

mais juste le minimum pour qu'un ecran marche (boucle d'event comprise ! )

en plus c'est pas la peine d'envoyer les debutants sur le Forum anglais a chaque fois !
d'autant qu'il est français, et que c'est peut etre plus facile pour lui de parler le français ...


;*******************************************************************


@nounours :

pour repondre a ta question va ici:
http://www.purebasic.fr/french/viewtopic.php?t=6664

tu trouvera des Tuto dont un sur le minimum vital pour un ecran de jeux ! :)

Publié : ven. 27/juin/2008 3:17
par Ollivier
Désolé !

Bienvenu Nounours tout d'abord et mille excuses pour ce lien un peu trop garni. C'est une interface graphique qui gère ce que tu demandes. Seulement, comme dit Dobro, elle est complexe.

ça n'est pas une question simple que tu poses. Alors voici un code d'exemple pour te mettre dans le bain.

C'est un simple écran avec 2 carrés rouges. Dès que tu cliques sur le bouton droit de la souris, tu affiches un menu. Voilà.

Code : Tout sélectionner

; Ici, j'indique l'existence des variables qui sont prises en compte dans l'ensemble du code 
Global BureauLargeur.L 
Global BureauHauteur.L 
Global BureauProfeur.L 
Global Fenetre.L       ; Numéro de la fenêtre qui va supporter le graphisme 

; Ici, je déclare l'existence de mes procédures (elles sont après le code principal, plus bas) 
; Ce sont des bouts de code qui m'évitent de réécrire tout ce qu'elle contiennent. 
Declare PrepareEcran(BureauNo.L) 
Declare BouclePrincipale() 
Declare Message(Texte$) 

; Ici, il y a toutes les constantes 
#FenetreSansRebord = $80000000 
Enumeration 
#ItemNewGame 
#ItemLoadGame 
#ItemSaveGame 
#ItemQuitter 
#MenuPrincipal 
EndEnumeration 

  PrepareEcran(0) 
  
  BouclePrincipale() 
  
  End 
  

Procedure PrepareEcran(BureauNo.L) 

  ; On charge DirectX 
  InitSprite() 
  
  ; On charge les commandes du clavier 
  InitKeyboard() 
  
  ; On charge les commandes de la souris 
  InitMouse() 

  ; On interroge le bureau (pour savoir sa taille) 
  ExamineDesktops() 
  
  ; On récupère la largeur, la hauteur et la profondeur (nombre de bits par pixel) 
  BureauLargeur = DesktopWidth(BureauNo) 
  BureauHauteur = DesktopHeight(BureauNo) 
  BureauProfeur = DesktopDepth(BureauNo) 
  
  ; On ouvre une fenêtre de la taille du bureau 
  Fenetre = OpenWindow(-1, 0, 0, BureauLargeur, BureauHauteur, "", #FenetreSansRebord) 
  
  ; On active le mode graphique fenêtré 
  OpenWindowedScreen(WindowID(Fenetre), 0, 0, BureauLargeur, BureauHauteur, 1, 0, 0) 
  
EndProcedure 

Procedure BouclePrincipale() 
  
  ; On indique un déplacement de 8 pixels pour les carrés rouges 
  BoxDeplacement = 8 
  xBoxDeplacement = BoxDeplacement 
 
  
  ; On crée le menu 
  CreatePopupMenu(#MenuPrincipal) 
  MenuItem(#ItemNewGame, "Nouvelle partie") 
  MenuBar() 
  MenuItem(#ItemLoadGame, "Charger une partie") 
  MenuItem(#ItemSaveGame, "Enregistrer la partie en cours") 
  MenuBar() 
  MenuItem(#ItemQuitter, "Quitter") 
  
  ; La boucle commence ici 
  Repeat 
  
    ; On met un délai, car d'autres applications peuvent s'exécuter actuellement 
    ; Alors il est bien urbain de leur laisser un peu de temps pour s'exécuter (20ms) 
    Delay(20) 
    
    ; On regard les événements 
    Evenement = WindowEvent() 
        
    Select Evenement 
    
      ; Le bouton droit a-t-il été cliqué ? 
      Case #WM_RBUTTONDOWN        
        ; Oui, on affiche le menu 
        DisplayPopupMenu(#MenuPrincipal, WindowID(Fenetre) ) 
        
      ; Un item dans le menu a-t-il été cliqué ?  
      Case #PB_Event_Menu 
      
        ; Oui, quel item ? 
        Select EventMenu() 
        
          Case #ItemNewGame 
            Message("La partie commence ici.") 
          Case #ItemLoadGame 
            Message("Ici, on charge une partie") 
          Case #ItemSaveGame 
            Message("Ici, on sauve une partie") 
          Case #ItemQuitter 
            Quitter = 1 
        EndSelect 
    EndSelect 
    
    ; On efface l'écran 
    ClearScreen(0) 
    
    ; On dessine les carrés rouges 
    StartDrawing(ScreenOutput() ) 
      Box(xBox, 100, 100, 100, #Red) 
      Box(BureauLargeur - xBox - 100, BureauHauteur - 200, 100, 100, #Red) 
      xBox + xBoxDeplacement 
      If xBox > BureauLargeur - 100: xBoxDeplacement = -BoxDeplacement: EndIf 
      If xBox < 0: xBoxDeplacement = BoxDeplacement: EndIf    
    StopDrawing() 
    
    ; On demande à afficher ce qu'on a dessiné 
    FlipBuffers() 
    
    ; On examine le clavier 
    ExamineKeyboard() 
    
    ; On veut quitter avec la touche Echap ? Ben, on quitter 
    If KeyboardPushed(#PB_Key_Escape): Quitter = 1: EndIf 
  Until Quitter 
  
EndProcedure 

; Voici un exemple de l'utilité d'une procédure : 
; Pour afficher un message, 
; au lieu d'écrire «MessageRequester», 
; on pourra écrire juste «message» grâce à cette procédure ci-dessous 
Procedure Message(Texte$) 
  MessageRequester("Message", Texte$) 
EndProcedure

Publié : dim. 29/juin/2008 1:45
par nounours
salut,

je tenais à vous remercier, j'ai normalement compris.
en cas de problème je repasserai vous voir

merci