Problem de loop ds un jeu [svp regarder]

Problem de loop ds un jeu [svp regarder] - C++ - Programmation

Marsh Posté le 03-11-2004 à 04:01:02    

voici une parti de mon jeu ou j'ai problem:
 

Code :
  1. while(mode!=GAMEOVER)
  2. {
  3.  // introduction
  4.  if(mode==INTRO){mode=introScreen();}
  5.  // start the single player game from first level
  6.  if(mode==SINGLE){
  7.   // initialise level variables
  8.   initSprites();
  9.   housesDestroyed=0;
  10.   currentTotalHouses=10;
  11.   totalHousesDestroyed=0;
  12.   level=1;
  13.   // call the game loop to play first level
  14.   mode=game1();
  15.  }
  16.  // start the multi player game from first level
  17.  if(mode==MULTI){
  18.   // initialise level variables
  19.   initSprites();
  20.   housesDestroyed=0;
  21.   currentTotalHouses=20;
  22.   totalHousesDestroyed=0;
  23.   level=1;
  24.   // call the game loop to play first level
  25.   mode=game2();
  26.  }
  27.  // Single player level completed
  28.  if(mode==LEVELCOMPLETE1){
  29.   // initialise levelvariables
  30.   level++;
  31.   misileCounter=0;explodeCounter=0;housesDestroyed=0;
  32.   // increase number of houses
  33.   currentTotalHouses+=5;
  34.   // keep number of houses <= arhero size
  35.   if(currentTotalHouses>=60)currentTotalHouses=60;
  36.   // display inter-level screen
  37.   interLevelScreen(level);
  38.   rcImpact.top=5;
  39.   DXUSetFontAttributes(&impactFont,&rcImpact,DT_LEFT|DT_WORDBREAK,DXURGB(250,250,100));
  40.   initSprites();
  41.   // call the game loop to play next level
  42.   mode=game1();
  43.  }
  44.  // Multi player level completed
  45.  if(mode==LEVELCOMPLETE2){
  46.   // initialise levelvariables
  47.   level++;
  48.   misileCounter=0;explodeCounter=0;housesDestroyed=0;
  49.   // increase number of houses
  50.   currentTotalHouses+=6;
  51.   // keep number of houses <= arhero size
  52.   if(currentTotalHouses>=60)currentTotalHouses=60;
  53.   // display inter-level screen
  54.   interLevelScreen(level);
  55.   rcImpact.top=5;
  56.   DXUSetFontAttributes(&impactFont,&rcImpact,DT_LEFT|DT_WORDBREAK,DXURGB(250,250,100));
  57.   initSprites();
  58.   // call the game loop to play next level
  59.   mode=game2();
  60.  }
  61.  // if thegameisover display the introscreen and last score
  62.  if(mode==GAMECOMPLETE){
  63.   //initSprites();
  64.   housesDestroyed=0;
  65.   currentTotalHouses=10;
  66.   level=1;
  67.   mode=introScreen();
  68.   lives=10;
  69.   totalHousesDestroyed=0;
  70.  }
  71. }


 
je ne sais pas pkoi mais je ne peu pas afficher me menu multi joueur, quand j'appui "m" sur le clavier, le jeu me prend comme si il j'avais presser "s"
 
es ce que j'ai fais une erreur ds la loop?
 
ma function multi joueur a d'autre sprite qui doivent s'afficher mais le jeu se passe comme si j'avais presser "s" donc il ne me montre pas mon autre sprite
 
SVP aider moi, je suis stresser comme tous.
Merci d'avance
 
A+


---------------
NEC 3500 | YAMADA 6600 | NIMO_CORP
Reply

Marsh Posté le 03-11-2004 à 04:01:02   

Reply

Marsh Posté le 03-11-2004 à 04:06:12    

c'est l'intro qui annonce le menu:
 

Code :
  1. int introScreen()
  2. {
  3. // DXURunMedia();
  4. int t = rand()%9;
  5. DXUPlayMusic(m[t].x);
  6. while (DXUProcessMessages()) // Process system Messages
  7. { // read key board  
  8.  DXUReadKeyboard();
  9.  // if Q is pressed return game over
  10.  if (dxuKeyState[DIK_Q] )
  11.   DXUDestroyWindow() ;
  12.  // if S is pressed return SINGLE player game
  13.  if (dxuKeyState[DIK_S])
  14.   return SINGLE;
  15.  // if M is pressed return MULTI player game
  16.  if (dxuKeyState[DIK_M])
  17.   return MULTI;
  18.  // Other wise draw the background  
  19.  DXURenderPrepare();
  20.  DXUDrawSpriteFast(&sprIntro);
  21.  DXUPlaySFX(SN6);
  22.  strcpy(str,"" );
  23.  rcImpact.top=5;
  24.  DXUSetFontAttributes(&impactFont,&rcImpact,DT_LEFT|DT_WORDBREAK,DXURGB(250,250,100));
  25.  wsprintf(str,"Score: %-4d ",totalHousesDestroyed);
  26.  DXUDrawText(&impactFont,str);
  27.  DXURenderFinish();
  28. }
  29. // if there was error processing system messages return MESSAGEERROR
  30. return GAMEOVER;
  31. }


---------------
NEC 3500 | YAMADA 6600 | NIMO_CORP
Reply

Marsh Posté le 03-11-2004 à 22:19:29    

person? :(


---------------
NEC 3500 | YAMADA 6600 | NIMO_CORP
Reply

Marsh Posté le 03-11-2004 à 22:39:46    

Tu peux pas tracer ton code en debug ? C'est tellement plus rapide pour trouver ce genre de problème.  
A priori, le binz viendrai de DXUReadKeyboard(). Vérifie que les entrées non enfoncées sont bien remises à 0.
 
Et puis stp, enlève la ligne 24 de introScreen, elle ne sert à rien. Et il faut mieux faire str[0] = '\0'; si tu veux initialiser une chaine vide. Et puis c'est pas propre une variable globale avec un tel nom :o.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed