IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

prototype casse briques


Sujet :

Delphi

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2011
    Messages : 42
    Points : 4
    Points
    4
    Par défaut prototype casse briques
    Bonsoir.
    Voilà j'ai un nouveau soucis, mais je ne sais pourquoi.
    une fois que la balle a touché une brique, elle disparait, mais près lorsqu'elle touche le PanelGame tout ce bloque. Il reste bloqué ligne 9-11 de ce fragment:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    procedure TFormMain.GestionMurBriques(var NumberOfHits,ValeurHorizontale,ValeurVerticale:Integer);
    var
      I:Integer;
      RectFactice:TRect;
      Flag1:boolean;
    begin
      I:=0;
      Flag1:=FALSE;
      while (not Flag1) and (I<160) do
        begin
          if Briques[I].Visible then
            begin
            //Collision entre la Balle et une Brique
              if InterSectRect(RectFactice,Balle.BoundsRect,Briques[I].BoundsRect) then
                begin
                  Flag1:=TRUE;
                  Inc(NumberOfHits);
                  case DirectionBalle of
                    GaucheHaut:DirectionBalle:=GaucheBas;
                    GaucheBas:DirectionBalle:=GaucheHaut;
                    DroiteHaut:DirectionBalle:=DroiteBas;
                    DroiteBas:DirectionBalle:=DroiteHaut;
                  end;
                  if ((Balle.Left+(Balle.Width div 2))<(Briques[I].Left+(Briques[I].Width div 3))) then
                    begin
                      ValeurHorizontale:=2;
                      ValeurVerticale:=0;
                    end;
                  if (((Balle.Left+(Balle.Width div 2))>(Briques[I].Left+(Briques[I].Width div 3))) and
                            ((Balle.Left+(Balle.Width div 2))<(Briques[I].Left+((Briques[I].Width div 3)*2)))) then
                    begin
                      ValeurHorizontale:=0;
                      ValeurVerticale:=0;
                    end;
                  if((Balle.Left+(Balle.Width div 2))>(Briques[I].Left+((Briques[I].Width div 3)*2))) then
                    begin
                      ValeurHorizontale:=0;
                      ValeurVerticale:=2;
                    end;
                  Briques[I].NumberOfHits:=Briques[I].NumberOfHits+1;
                  if (Briques[I].NumberOfHits=Briques[I].NombresDeFrappes) then
                        Briques[I].Visible:=FALSE;
                end;
                Inc(I);
            end;
        end;
    end;
    pourriez vous m'aider ?
    Merci d'avance.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 457
    Points
    28 457
    Par défaut
    il y a deux problèmes dans ton projet

    1) dès qu'un mur disparaît le programme part dans une boucle sans fin.
    pour trouver pourquoi tu cliques sur le bouton Suspendre et tu fais du pas à pas

    2) le déplacement de ta balle se fait par bonds, du coup tu peux casser une brique de la deuxième rangée en sautant la première

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2011
    Messages : 42
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    il y a deux problèmes dans ton projet

    1) dès qu'un mur disparaît le programme part dans une boucle sans fin.
    pour trouver pourquoi tu cliques sur le bouton Suspendre et tu fais du pas à pas

    2) le déplacement de ta balle se fait par bonds, du coup tu peux casser une brique de la deuxième rangée en sautant la première
    Pour le deuxième problème, je devrai donc plutôt jouer sur l'Interval du timer plutôt que sur la variable Rapidite si je veux par la suite inclure plusieurs niveaux.
    Pour le 1), je continue de cherché. C'était surtout pour ça que j'avais posé le post sur le forum.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2011
    Messages : 42
    Points : 4
    Points
    4
    Par défaut
    j'ai en enlevé le begin et le end; du while, sauf que cette fois ci, la balle continue de monter pour ne plus redescendre une fois le haut de panelgame atteint.

  5. #5
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 457
    Points
    28 457
    Par défaut
    Citation Envoyé par mickl1722 Voir le message
    j'ai en enlevé le begin et le end; du while, sauf que cette fois ci, la balle continue de monter pour ne plus redescendre une fois le haut de panelgame atteint.
    as-tu fais un débugage pas à pas comme je te l'ai indiqué ?

    qu'as-tu constaté ?

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2011
    Messages : 42
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    as-tu fais un débugage pas à pas comme je te l'ai indiqué ?

    qu'as-tu constaté ?
    En fait, je viens juste de le faire.
    C'est l'initialisation de la direction de la balle qui est donc mal placée, mais où la mettre alors ?

  7. #7
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 457
    Points
    28 457
    Par défaut
    Citation Envoyé par mickl1722 Voir le message
    En fait, je viens juste de le faire.
    C'est l'initialisation de la direction de la balle qui est donc mal placée, mais où la mettre alors ?
    tu ne réponds pas à ma question et ta réponse est à côté de la plaque

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2011
    Messages : 42
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    tu ne réponds pas à ma question et ta réponse est à côté de la plaque
    Ben si non.
    J'ai réduit Rapidite pour réduire au maximum les sauts de briques.
    Et puis l'initialisation, je l'ai mis ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TFormMain.DemarrerNouveauJeu(Sender:Tobject);
    begin
      Flag:=CliqueTRUE;
      DemarrerPartie.Visible:=FALSE;
      //Initialisation de la direction de la Balle
      DirectionBalle:=GaucheHaut;
    end;

  9. #9
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Salut

    Ce que dit Paul est vrai. Quand tu teste en pas à pas, tu dis rester bloqué sur les lignes 9 à 11. Pourquoi ? Que devrait faire cette boucle While ? Pourquoi la condition de la boucle while est elle toujours vérifiée ? Pour connaitre la valeur d'une variable pendant le pas à pas, laisse simplement la souris sur cette variable et attends un peu que l'infobulle apparraisse.

    Tu as compris ? Teste et reviens nous dire ce qui ne va pas.

    Bonne chance

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2011
    Messages : 42
    Points : 4
    Points
    4
    Par défaut
    J'ai plusieurs soucis à résoudre.
    1) La balle passe au travers de la brique situé en bas à droite.
    2) Lorsque je clique la balle va super vite et ce malgré que je modifie Interval du Timer correspondent.

    Le futur:
    1) Le temps passé sur le jeu
    2) La gestion des niveaux: rapidité de la balle
    3) Gestion du score à chaque briques touchées
    4) La possibilité de mettre en pause
    5) 3 vies avant de perdre.
    6) La fin de la conception du menu.
    Fichiers attachés Fichiers attachés

  11. #11
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    salut,

    tiens j'avais fait ça y'a longtemps, c'est pas fini ni trés commenté, mais ça pourra te guider dans la méthode d'écriture du code pour créer un jeux de ce genre.
    tu notera que le programme principal (fait à l'arrache) est quasiment vide, tout se trouve dans le moteur du jeux (UBulle.pas).

    en bonus, collision, calcul de score et dessin avec GDI+
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Création d'un casse-briques
    Par psgkiki dans le forum Assembleur
    Réponses: 4
    Dernier message: 02/04/2007, 16h18
  2. Réponses: 5
    Dernier message: 06/09/2006, 09h35
  3. [Source] [SDL] Commencement d'un casse brique
    Par grincheux01 dans le forum Contribuez
    Réponses: 8
    Dernier message: 29/06/2006, 12h27
  4. Button "Start" dans un jeu de casse brique
    Par tex78 dans le forum Interfaces Graphiques en Java
    Réponses: 6
    Dernier message: 24/01/2006, 15h47
  5. [Tkinter] casse brique
    Par mamatt77 dans le forum Tkinter
    Réponses: 6
    Dernier message: 18/04/2005, 09h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo