Bonjour,

Je développe actuellement pour ma fin d'année, un projet jeu vidéo en C++

J'ai déja demadner de l'aide sur le forum,je m'excuse d'avance de ne pas avoir donné de mes nouvelles,et remercie la personne qui m'avait répondu

Le développement se passe plutot bien,j'ai un début d'animation,les combats ont l'air de marché (du moins au nveau console) et niveau délai cela avance lentemetn mais surement

Mais je commence à avoir un problème qui sera genant pour mon prof,j'utilise beaucoups de variable globals. Ce sera très mal vu par le prof mais je ne vois pas comment je pourrais m'en passer.. voici quelques lignes de mon programme où je ne vois pas comment m'en passer

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
unsigned AshFace1,AshFace2,AshFace3,AshDos1,AshDos2,AshDos3,AshGauche1,AshGauche2,AshGauche3,AshDroite1,AshDroite2,AshDroite3;
unsigned AshDebout,AshVictoire,AshSort1,AshSort2,AshDegat,AshMort;
unsigned MaronaDebout,MaronaVictoire,MaronaSort1,MaronaSort2,MaronaSort3,MaronaDegat,MaronaMort;
unsigned WalnutDebout,WalnutVictoire,WalnutSort1,WalnutSort2,WalnutSort3,WalnutDegat,WalnutMort;
unsigned WraithDebout,WraithAttaque1,WraithAttaque2,WraithAttaque3,WraithDegat;
unsigned DragonDebout,DragonAttaque1,DragonAttaque2,DragonAttaque3,DragonDegat;
unsigned AshPortrait,MaronaPortrait,WalnutPortrait;
unsigned SireneDebout,SireneSort1,SireneSort2,SireneDegat;
 
void init(void){
 
 
  AUX_RGBImageRec *texture[60];
 
    glClear(GL_COLOR_BUFFER_BIT);
    glClearColor(1,1,1,0);
    //on active le test de profondeur
    glDisable(GL_DEPTH_TEST);
    //on actives les texutres
    glEnable(GL_TEXTURE_2D);
    //On charge les textures a partir de leurs emplacements
    texture[0] = auxDIBImageLoad("C:/Users/nico/Desktop/Personnage/Ash_Face.bmp");
    glGenTextures (1, &AshFace1);
    glBindTexture (GL_TEXTURE_2D, AshFace1);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
    glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_LINEAR);
    glTexImage2D(GL_TEXTURE_2D, 0, 3, texture[0]->sizeX, texture[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture[0]->data);
 
    texture[1] = auxDIBImageLoad("C:/Users/nico/Desktop/Personnage/Ash_Face2.bmp");
    glGenTextures (2, &AshFace2);
    glBindTexture (GL_TEXTURE_2D, AshFace2);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
    glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_LINEAR);
    glTexImage2D(GL_TEXTURE_2D, 0, 3, texture[1]->sizeX, texture[1]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture[1]->data);
 
//ainsi de suite
 
}
 
void display(){
 
 glEnable(GL_TEXTURE_2D);
        glBindTexture (GL_TEXTURE_2D,MaronaPortrait);
        glColor3d(1,1,1);
        glTranslated(4,0,0);
        glBegin(GL_QUADS);
         glTexCoord2i(1,0);glVertex2i(-1,-1);
         glTexCoord2i(1,1);glVertex2i(-1,1);
         glTexCoord2i(0,1);glVertex2i(1,1);
         glTexCoord2i(0,0);glVertex2i(1,-1);
        glEnd();
        glTranslated(0,4,0);
        glBindTexture (GL_TEXTURE_2D,AshPortrait);
        glBegin(GL_QUADS);
         glTexCoord2i(1,0);glVertex2i(-1,-1);
         glTexCoord2i(1,1);glVertex2i(-1,1);
         glTexCoord2i(0,1);glVertex2i(1,1);
         glTexCoord2i(0,0);glVertex2i(1,-1);
        glEnd();
 
}
Bien sur je ne met pas tout mon programme mais c'est pour representer le probleme..Je ne peux pas déclarer unsigned nomdelatexture dans init car il ne sera pas à la porté de display..

Meme chose que pour quand je crée la classe des personnages

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
 int main(){
Soigneur M(2,"Marona",350,mpmaxMagicien[0],10,5,15,17,20,1,0,hpmaxMagicien,mpmaxMagicien,plafondexp);
    Guerrier A(1,"Ash",0,mpmaxMagicien[0],10,5,15,19,20,1,0,hpmaxMagicien,mpmaxMagicien,plafondexp);
    Magicien W(3,"Walnut",350,mpmaxMagicien[0],10,5,18,15,20,1,0,hpmaxMagicien,mpmaxMagicien,plafondexp);
    Monstre D(4,"Dragon",0,mpmaxMonstre[0],5,2,8,8,2,1,0,hpmaxMonstre,mpmaxMonstre,plafondexp,100);
    Monstre S(5,"Sirene",0,50,5,2,8,10,2,1,0,hpmaxMonstre,mpmaxMonstre,plafondexp,10);
    Combat c(1); 
}
 
void subdisplay(){
 
  sprintf (label, " MARONA  %2d /100 ",M.getHP());
  glRasterPos2f (0.40F, 0.50F);
  drawStringBig (label);
 
  sprintf (label, " HP :  100 /100 ");
  glRasterPos2f (0.60F, 0.50F);
  drawStringBig (label);
 
}
l'objet m n'étant que déclaré dans le main impossible de l'appeller ailleurs,il n'est également pas possible de le passer en paramètre..

Serai -je obligé de tout mettre en variable globale ou il y a une meilleure solution?


Merci de votre aide.