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

C++Builder Discussion :

jeu (problème d'affichage de score)


Sujet :

C++Builder

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 14
    Par défaut jeu (problème d'affichage de score)
    bonjour à tous
    je débute en c++, et je suis entrain de faire un projet sur un jeu vidéo une poule qui traverse la route, je veux que cette application m'affiche le nombre de succès et celui d'échec quand la poule arrive à traverser la route mon problème se situe au niveau d'affichage du score, merci d'avance.
    voici le script HenwayIntegral_fm.cpp
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    #include <vcl.h>
    #include <Math.hpp>
    #pragma hdrstop
    #include "HenwayIntegral_fm.h"
    #include "PremiereDerivationSprites.h"
    //---------------------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    //---------------------------------------------------------------------------------------
    TForm1 *Form1;
    //---------------------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
      : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------------------
    // ----------------------------- // Initialisation // -----------------------------------
    //---------------------------------------------------------------------------------------
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
      TWrapSprite * pWrSpr;
      TSprite     * pSpr;
      int           iNbSpr;
      int           iInd;
     
      // Pour valeurs aléatoires
      Randomize();
      // Init scores
      m_iNbSucces = 0;
      m_iNbEchecs = 0;
     
      // Création d'un moteur de jeu
      m_pSprEng  = new TSpriteEngine();
     
      // Création de la bitmap de fond
      bmpFond   = m_pSprEng->pBmpCreeEtCharge("Bmp_Route");
     
      // Adaptation de la taille de la fenêtre à celle de l'image
      ClientWidth   = bmpFond->Width;
      ClientHeight  = bmpFond->Height;
     
      // Paramétrages du moteur de jeu
      m_pSprEng->setPtBmpFond(bmpFond);
      m_pSprEng->setPtForm(this);
      m_pSprEng->init();
      m_pSprEng->BeforeTimerTimer = TraiterOnTimer;
     
      // Pour le sprite piloté (le ballon)
      // --------------------------------
      m_pSpPoule = new TSprite;
      m_pSprEng->initEtAjouterSprite //   type, Code, x,   y, dx, dy
        ( m_pSpPoule,  "Bmp_Plumes",  "Poulet",     0, 110,  0, 0);
      m_pSprEng->ajouterBmp (m_pSpPoule,  "Bmp_Poule");
      m_pSprEng->ajouterBmp (m_pSpPoule,  "Bmp_PouleRecul");
     
      m_pSprEng->ajouterBmp (m_pSpPoule,  "Bmp_Poule2");
      m_pSprEng->ajouterBmp (m_pSpPoule,  "Bmp_Poule2Recul");
      m_pSpPoule->PfFinCptrPause = TraiterOnFinPause;
     
      // Sprites Cars
      pWrSpr = new TWrapSprite;
      m_pSprEng->initEtAjouterSprite(pWrSpr, "Bmp_Car1", "Auto", 1, XVOIE1,   8, 0, 3);
      pWrSpr = new TWrapSprite;
      m_pSprEng->initEtAjouterSprite(pWrSpr, "Bmp_Car2", "Auto", 2, XVOIE2, 320, 0, 6);
      pWrSpr = new TWrapSprite;
      m_pSprEng->initEtAjouterSprite(pWrSpr, "Bmp_Car3", "Auto", 3, XVOIE3, 200, 0,-7);
      pWrSpr = new TWrapSprite;
      m_pSprEng->initEtAjouterSprite(pWrSpr, "Bmp_Car4", "Auto", 4, XVOIE4, 120, 0,-3);
     
      iNbSpr = m_pSprEng->NombreSprites;
     
      // Compléments pour tous sprites
      for (iInd = 0; iInd < iNbSpr; iInd ++)
      { pSpr = m_pSprEng->pSprIndice(iInd);
    //!!BGS     pSprCrt->setSprEng(m_pSprEng);
        pSpr->setDimensions( pSpr->getPtInstantImage() );
        pSpr->RectBounds = ClientRect;
        pSpr->PfOnBounds = TraiterOnBounds;
        pSpr->PfOnChoc   = TraiterOnChocs;
      }
     
      // Musique de fond
      m_pSprEng->jouerSonMdi("Music.mid");
     
      // Démarrage
      m_pSprEng->runTimer(True);
     
    }
    //--------------------------------------------------------------------------------------
    // ------------------- // Début de chaque cycle du moteur de jeu // --------------------
    //--------------------------------------------------------------------------------------
    void __fastcall TForm1::TraiterOnTimer(TObject *Sender)
    {
      // Remarque :
      //    Lecture du clavier par GetAsyncKey; plus rapide que récupération événement KeyDown
      // Impulsions éventuelles sur m_pSpPilote
      m_pSpPoule->Dx = 0;
      m_pSpPoule->Dy = 0;
      if      ( (GetAsyncKeyState(VK_LEFT)  < 0) && (m_pSpPoule->Dx > - 10) )
        m_pSpPoule->Dx -= I_DEP_CHICKEN;
      else if ( (GetAsyncKeyState(VK_RIGHT) < 0) && (m_pSpPoule->Dx <   10) )
        m_pSpPoule->Dx += I_DEP_CHICKEN;
      //
      if      ( (GetAsyncKeyState(VK_UP)  < 0)   && (m_pSpPoule->Dy > - 10) )
        m_pSpPoule->Dy -= I_DEP_CHICKEN;
      else if ( (GetAsyncKeyState(VK_DOWN) < 0)  && (m_pSpPoule->Dx <   10) )
        m_pSpPoule->Dy += I_DEP_CHICKEN;
    }
    //---------------------------------------------------------------------------------------
    ////////////////////////   Autres gestionnaires événements  /////////////////////////////
    //---------------------------------------------------------------------------------------
    void TForm1::TraiterOnChocs(TSprite * pSprHter, TSprite * pSprHtee)
    {
       if ( pSprHter->Type == "Poulet")
       { if (pSprHter->CptrPause == 0)
         { pSprHter->CptrPause = I_PAUSE;
           m_iNbEchecs ++;
           m_pSprEng->jouerSonWav("Wav_Squish");
         }
         pSprHtee->progresser();
       }
       else
       { if (pSprHtee->CptrPause == 0)
         { pSprHtee->CptrPause = I_PAUSE;
           m_iNbEchecs ++;
           m_pSprEng->jouerSonWav("Wav_Squish");
         }
         pSprHter->progresser();
       }
    }
    //--------------------------------------------------------------------------------------
    void TForm1::TraiterOnFinPause(TSprite * pSprCrt)
    { if (pSprCrt->Type == "Poulet")
      { pSprCrt->init(0, 110, 0, 0);
      }
    }
    //--------------------------------------------------------------------------------------
    void TForm1::TraiterOnBounds(TSprite * pSprCrt)
    { String    sMessage;
     
      // Auto (par haut ou par bas)
      if (pSprCrt->Type == "Auto")
      {
        if ( (pSprCrt->Dy > 0) && (pSprCrt->Dy <= 4)  )
          pSprCrt->Dy = RandomRange( 2,  4);
        if ( (pSprCrt->Dy > 0) && (pSprCrt->Dy > 4)   )
          pSprCrt->Dy = RandomRange( 5,  8);
        if ( (pSprCrt->Dy < 0) && (pSprCrt->Dy < -4)  )
          pSprCrt->Dy = RandomRange(-5, -8);
        if ( (pSprCrt->Dy < 0) && (pSprCrt->Dy >= -4) )
          pSprCrt->Dy = RandomRange(-4, -2);
      }
     
      // Poulet par la droite
      else if ( (pSprCrt->Type == "Poulet") && (pSprCrt->X > 410) )
      {
        m_pSprEng->jouerSonWav("Wav_Celebrate");
    //    pSprCrt->setEnArret(True);
        pSprCrt->X = 400;
        m_iNbSucces ++;
        sMessage  =   "Succès : "
                  +   IntToStr(m_iNbSucces)
                  +   "  Echecs : "
                  +   IntToStr(m_iNbEchecs);
        Application->MessageBox(sMessage.c_str(), "", MB_OK );
        pSprCrt->init(0, 110, 0, 0);
    //    pSprCrt->setEnArret(False);
      }
    }
    HenwayIntegral_fm.h

    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
    #ifndef HenwayIntegral_fmH
    #define HenwayIntegral_fmH
    //---------------------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <ExtCtrls.hpp>
    #include <Graphics.hpp>
    #include <Forms.hpp>
    //---------------------------------------------------------------------------------------
    #include "SpriteEngine.h"    // avec #include "Sprite.h" et #include "ConstEtTypes.h"
    //---------------------------------------------------------------------------------------
    #define I_DEP_CHICKEN    5
    #define I_PAUSE         30
    #define XVOIE1          70
    #define XVOIE2         160
    #define XVOIE3         240
    #define XVOIE4         338
    //---------------------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// Composants gérés par l'EDI
      void __fastcall FormCreate(TObject *Sender);
    	void __fastcall TraiterOnTimer(TObject *Sender);
    private:	// Déclarations de l'utilisateur
      // Gestion du graphisme
      Graphics::TBitmap * bmpFond;          // Fond gris qui sera couvert par route et cars
      TSpriteEngine     * m_pSprEng;        // Moteur de jeu
      // Mémorisation de l'adresse de la poule
      TSprite           * m_pSpPoule;      // La poule (pilotée au clavier)
      // Evaluation du jeu
      int                 m_iNbSucces;
      int                 m_iNbEchecs;
      // Gestionnaires événements
      void TraiterOnChocs(TSprite * pSprHter, TSprite * pSprHtee);
      void TraiterOnFinPause(TSprite * pSprCrt);
      void TraiterOnBounds(TSprite * pSprCrt);
    public:		// Déclarations de l'utilisateur
      __fastcall TForm1(TComponent* Owner);
    };
    //---------------------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------------------
    #endif

  2. #2
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Si tu veux dessiner sur ta Form, tu peux utiliser son Canvas. TCanvas possède une méthode TextRect.

Discussions similaires

  1. Problème d'affichage de chiffres jeu squaro Python
    Par Sebaudi dans le forum Programmation multimédia/Jeux
    Réponses: 0
    Dernier message: 16/03/2014, 16h44
  2. Jeu de la vie, problème d'affichage.
    Par -ezano- dans le forum Débuter
    Réponses: 5
    Dernier message: 22/09/2009, 12h55
  3. Réponses: 12
    Dernier message: 11/05/2008, 22h05
  4. Réponses: 1
    Dernier message: 06/03/2003, 11h57
  5. probléme d'affichage d'une fiche
    Par sb dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 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