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