juste une petite question svp

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

juste une petite question svp

Message par bernard13 »

bonjour
juste une petite question

je vois que la plus des jeux on est obliger de passer en plein ecran
mais comment creer un jeux pour qu'utlise le system de fenetre de window avec menu ...
et je recherche un tutorial pour crée un casse brique ...



bonne week end

bernard13
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Ca fais plaisir de voir que tu es toujours copain avec l'aide :lol:

OpenWindowedScreen :roll: :twisted:
Dernière modification par Le Soldat Inconnu le sam. 12/mars/2005 11:03, modifié 1 fois.
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

je cherche a crée un casse brique mais j'ai pas de base si tu peux m'ecrire une base de casse brique svp

merci regis

bernard13
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

Utilise OpenWindowedScreen()
Exemple :

Code : Tout sélectionner

InitSprite()

OpenWindow(1, 0, 0, 800, 600, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "WindowedScreen")
  CreateMenu(1, WindowID())
    MenuTitle("Fichier")
      MenuItem(1, "Quitter")
  OpenWindowedScreen(WindowID(), 0, 0, 800, 600, 0, 0, 0)
  
  Repeat
    
    ; Partie du code pour la fenetre
    wEvent = WindowEvent()
    
    If wEvent
    
      Select wEvent
      
        Case #PB_Event_Menu
          Select EventMenuID()
          
            Case 1
              Quit = #True
          
          EndSelect
      
        Case #WM_Close
          Quit = #True
      
      EndSelect
    
    EndIf
    
    ; Partie du code pour le windowedscreen
    ClearScreen(80, 120, 255)
      
      StartDrawing(ScreenOutput())
      
        Box(Random(800), Random(600), Random(800), Random(600), Random(#White))
        
      StopDrawing()
      
    FlipBuffers()
    
  Until Quit = #True
  
End
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

devancer par le soldat (connu ^^) mais lui sans code :P
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

merci cederavic
peux m'ecrire les base d'un casse brique je veux juste que tu m'expliquer comment en crée un svp
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

c'est en cours...
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

j'attends tes base
merci bien
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

Pour le déplacement de la balle, il te suffit pour faire le rebond, de faire :
Sachant que la droite de déplacement est y=ax+b, pour faire repartir la balle, il te faut simplement faire y=-ax+b (fonctions affines)
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

Voilas, je t'ai bricoler ça en une petite heure

Code : Tout sélectionner

; Auteur : Cederavic
; Version PB : 3.93
; Date : 12/03/05
; Description : un casse brique basic commenté

; Initialisation de DirectX
If InitSprite() = 0
  ; Si l'initialisation echoue, on ferme
  MessageRequester("Casse Brique", "Impossible d'initialiser DirectX", 0)
  End
EndIf

; déclaration des procédures
Declare InitBox()

; Position de la raquette
Player.POINT

; Position de la balle
BallPos.POINT

; Direction de la balle
BallDir.POINT

; Position du curseur
Cursor.POINT

; liste des briques
Dim BoxList(10, 15)

; Ouverture de la fenetre principale
If OpenWindow(1, 0, 0, 800, 617, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Casse Brique")
  ; Création du menu
  If CreateMenu(1, WindowID())
    MenuTitle("Fichier")
      MenuItem(1, "Nouvelle partie")
      MenuItem(2, "Quitter")
  Else
    ;Si la creation du menu echoue, on ferme
    MessageRequester("Casse Brique", "Impossible de créer le menu", 0)
    End
  EndIf
  ; Ouverture de l'ecran
  If OpenWindowedScreen(WindowID(), 0, 0, 800, 600, 0, 0, 0) = 0
    ; Si l'ouverture de l'écran echoue, on ferme
    MessageRequester("Casse Brique", "Impossible d'ouvrir l'écran", 0)
    End
  EndIf
  
  ; Création des sprites
  CreateSprite(0, 80, 10) ; Le joueur
    StartDrawing(SpriteOutput(0))
      DrawingMode(0)
        Box(0, 0, 80, 10, RGB(40, 255, 80))
      DrawingMode(4)
        Box(0, 0, 80, 10, RGB(32, 32, 32))
    StopDrawing()
    
  CreateSprite(1, 20, 20) ; La balle
    StartDrawing(SpriteOutput(1))
      DrawingMode(0)
        Circle(10, 10, 10, RGB(160, 160, 40))
      DrawingMode(4)
        Circle(10, 10, 10, RGB(32, 32, 32))
    StopDrawing()
    
  CreateSprite(2, 80, 20) ; Une brique
    StartDrawing(SpriteOutput(2))
      DrawingMode(0)
        Box(1, 1, 78, 18, RGB(255, 80, 40))
      DrawingMode(4)
        Box(1, 1, 78, 18, RGB(32, 32, 32))
    StopDrawing()
    
    ; Positionement de la balle
    BallPos\x = 400
    BallPos\y = 500
    BallDir\y = 1

  ; Boucle principale
  Repeat
    
    ; Partie du code pour la fenetre
    wEvent = WindowEvent()
    
    If wEvent
    
      Select wEvent
        
        ; L'utilisateur choisi un menu
        Case #PB_Event_Menu
          Select EventMenuID()
            ; Menu Nouvelle partie
            Case 1
              ; Initialisation des briques
              InitBox()
              Play = #True
              
              ; Positionement de la balle
              BallPos\x = 400
              BallPos\y = 500
              BallDir\y = 1
              
            ; Menu Quitter
            Case 2
              Quit = #True
          
          EndSelect
        
        ; L'utilisateur ferme la fenetre
        Case #WM_Close
          Quit = #True
      
      EndSelect
    
    EndIf
    
    ; Partie du code pour le windowedscreen
    ; Récuperation de la position du curseur
    GetCursorPos_(@Cursor)
    
    ; Positionnement du joueur
    Player\x = Cursor\x - WindowX()
    
    ; si le joueur sort de l'écran, on le repositionne
    If Player\x < 40  : Player\x = 40  : EndIf
    If Player\x > 760 : Player\x = 760 : EndIf
    
    ; Gestion de la balle
    ; Deplacement suivant la direction si la partie est lancée
    If Play = #True
      If BallDir\x = 0
        BallPos\x + 2
      Else
        BallPos\x - 2
      EndIf
      
      If BallDir\y = 0
        BallPos\y + 2
      Else
        BallPos\y - 2
      EndIf
    EndIf
    
    ; Collision avec les bords de l'ecran
    If BallPos\x < 11
      BallPos\x = 11
      BallDir\x = 0
    EndIf
    
    If BallPos\x > 795
      BallPos\x = 795
      BallDir\x = 1
    EndIf
    
    If BallPos\y < 11
      BallPos\y = 11
      BallDir\y = 0
    EndIf
    
    If BallPos\y > 595
      Play = #False
    EndIf
    
    ; Collision avec le joueur
    If SpritePixelCollision(1, BallPos\x - 10, BallPos\y - 10, 0, Player\x - 40, 590)
      BallDir\y = 1
    EndIf
    
    ClearScreen(80, 120, 255)
      
      Win = #True
      
      ; Affichage des briques
      For x = 0 To 9
        For y = 0 To 15
        
          ; Collision avec la brique si elle existe
          If BoxList(x, y) = 1
            
            If SpritePixelCollision(1, BallPos\x - 10, BallPos\y - 10, 2, x * 80, y * 20)
            
              If BallDir\y = 0
                If BallPos\x > x * 80 + 80
                  BallDir\x = 0
                ElseIf BallPos\x < x * 80
                  BallDir\x = 1
                Else
                  BallDir\y = 1
                EndIf
                BoxList(x, y) = 0
              ElseIf BallDir\y = 1
                If BallPos\x > x * 80 + 80
                  BallDir\x = 0
                ElseIf BallPos\x < x * 80
                  BallDir\x = 1
                Else
                  BallDir\y = 0
                EndIf
                BoxList(x, y) = 0
              EndIf
                
            EndIf
            
          EndIf
          
          ; si la brique existe on l'affiche
          If BoxList(x, y) = 1
            Win = #False
            DisplayTransparentSprite(2, x * 80, y * 20)
          EndIf
          
        Next
      Next
      
      ; Si win = #True c'est que toutes les briques sont detruite
      If Win = #True
        Play = #False
      EndIf
      
      ; Affichage du joueur
      DisplayTransparentSprite(0, Player\x - 40, 590)
        
      ; Affichage de la balle
      DisplayTransparentSprite(1, BallPos\x - 10, BallPos\y - 10)
      
    FlipBuffers()
    
  Until Quit = #True
  
; Si l'ouverture de la fenetre principale echoue, on ferme
Else
  MessageRequester("Casse Brique", "Impossible d'ouvrir la fenetre principale", 0)
  End
EndIf

; Fermeture du programme
End

; Initialisation des briques
Procedure InitBox()

  For x = 0 To 10
    For y = 0 To 15
      
      BoxList(x, y) = Random(1)
      
    Next
  Next

EndProcedure
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

merci beaucoup
j'ai recuperer celui de comtois aussi

je vais etudier afin de crée mon propre casse brique ...

merci
Répondre