Puissance4 > "Empty caracter constant"

Puissance4 > "Empty caracter constant" - C++ - Programmation

Marsh Posté le 24-11-2003 à 17:56:53    

Je taffe en ce moment sur un projet de puissance4 en c++.
il me fait une erreur bizzarre à la compilation :
 
Empty caracter constant (constante caractere vide)
ligne 232, caractere 9...
 
source:
 

Code :
  1. #include <iostream>
  2. #include <string>
  3. #include "ansi.h"
  4. #include "baba.h"
  5. using namespace std;
  6. // variables globales
  7. int mode1=1;       // 1: 1vs1 2: 1vsCPU
  8. int tour;       // 1: Joueur_1 2: Joueur_2 / IA
  9. int Nb_manches; // Nombre de manches
  10. int rejouer=1;
  11. string  nomJ1, nomJ2;
  12. int Score1, Score2;
  13. int grille[6][7];
  14. bool puissance4;
  15. void init_grille()
  16. {
  17.   for (int a=0;a<6;a++)
  18.     for (int b=0;b<7;b++)
  19.       grille[a][b]=0;
  20. }
  21. void affiche()
  22. {
  23.   clrscr();
  24.   gotoXY(4,4);
  25.   cout<<"  1234567 ";
  26.   for(int a=0;a<6;a++)
  27.     {
  28.       gotoXY(4,a+5);
  29.       cout<<"| ";
  30.       for (int b=0;b<7;b++)
  31.          {
  32.       if (grille[a][b]==0)
  33. cout<<" ";
  34.       if (grille[a][b]==1)
  35. cout<<"X";
  36.       if (grille[a][b]==2)
  37. cout<<"O";
  38.          }
  39.   cout<<" |";
  40.     }
  41.   cout<<"\n   -----------\n";
  42.   cout<<"     1234567\n\n";
  43.   if(tour==1)
  44.     cout<<"Joueur 1 : "<<nomJ1<<endl;
  45.   else
  46.     {
  47.       if(mode1==1) cout<<"Joueur 2 : "<<nomJ2<<endl;
  48.       else cout<<"Joueur 2 (CPU)\n"; //ne s'affiche pas visiblement ..
  49.     }
  50.   cout<<"Score : "<<Score1<<"-"<<Score2<<"\n";
  51.   cout<<"Manche "<<Nb_manches-rejouer+1<<"/"<<Nb_manches<<"\n";
  52. }
  53. bool test4(int a, int b, int c, int d)
  54. {
  55.   return ((grille[a+2*c][b+2*d]==tour)&&(grille[a+3*c][b+3*d]==tour));
  56. }
  57. bool Puissance4()
  58. {
  59.   puissance4=0;
  60.   for (int a=0;a<=7;a++)
  61.     {
  62.       for (int b=0;b<=6;b++) // parcours de la grille
  63. {
  64.   if (grille[a][b]!=tour){}
  65.   else
  66.     {
  67.       int c=-1,d=0;
  68.      
  69.       if (grille[a][b]==grille[a+c][b+d]) puissance4+=test4(a,b,c,d);
  70.       d=1;
  71.       if (grille[a][b]==grille[a+c][b+d]) puissance4+=test4(a,b,c,d);
  72.       c=0;
  73.       if (grille[a][b]==grille[a+c][b+d]) puissance4+=test4(a,b,c,d);
  74.       c=1;
  75.       if (grille[a][b]==grille[a+c][b+d]) puissance4+=test4(a,b,c,d);
  76.       d=0;
  77.       if (grille[a][b]==grille[a+c][b+d]) puissance4+=test4(a,b,c,d);
  78.       d=-1;
  79.       if (grille[a][b]==grille[a+c][b+d]) puissance4+=test4(a,b,c,d);
  80.       c=0;
  81.       if (grille[a][b]==grille[a+c][b+d]) puissance4+=test4(a,b,c,d);
  82.       c=-1;
  83.       if (grille[a][b]==grille[a+c][b+d]) puissance4+=test4(a,b,c,d);
  84.     }
  85. }
  86.   }
  87.   return (puissance4!=0);
  88. }
  89. bool grille_pleine()
  90. {
  91.   int b=0;
  92.   for(int a=0;a<7;a++)
  93.     {
  94.   if(grille[0][a]!=0)
  95.     b++;
  96.     }
  97.   if (b>6) return 1;
  98.   else return 0;
  99. }
  100. float evaluation(int x)
  101. {
  102.   float eval=rand()%9+1;
  103.   if (grille[0][x]!=0) eval=0;
  104.   return eval;
  105.  
  106. }
  107. int IA()
  108. {
  109.   int choix, i;
  110.   float coef_colonne[7];
  111.   for (i=0;i<7;i++)
  112.     coef_colonne[i]=evaluation(i);
  113.    
  114.   int rang;
  115.   float max=0;
  116.   for(i=0;i<7;i++)
  117.     if (coef_colonne[i]>=max)
  118.       {
  119.       rang=i;
  120.       max=coef_colonne[i];
  121.       }
  122.   int nbmax=0;
  123.   for(i=0;i<=rang;i++)
  124.     if(coef_colonne[i]==max) nbmax++;
  125.   int a=0;
  126.   int alea=rand()%nbmax+1;
  127.   for(i=0;i<7;i++)
  128.     {
  129.       if (coef_colonne[i]==max) a++;
  130.       if (a==alea) choix=i;
  131.     }
  132.   return choix;
  133. }
  134. int choix()
  135. {
  136.   int choix;
  137.   if ((tour==2)&&(mode1==2)) choix=IA();
  138.   else
  139.     {
  140.     cout<<"Quelle colonne choisissez vous ? [1-7]\n >";
  141.       cin>>choix;
  142.       while ((choix<1)||(choix>7)){
  143.       cout<<"entre 1 et 7 !!!\n >";
  144.       cin>>choix;
  145.       };
  146.     }
  147.   return choix;
  148. }
  149. void anim(int colonne)
  150. {
  151.   colonne--;
  152.   int mini=0;
  153.   while((grille[mini+1][colonne]==0)&&(mini<5)) mini++;
  154.   grille[mini][colonne]=tour;
  155. /*
  156. gotoxy(1,20);
  157. for(int a=0;a<6;a++)
  158. {
  159.     for(int b=0;b<7;b++)
  160.     {
  161.         cout<<grille[a][b];
  162.     }
  163.     cout<<"\n";
  164. }
  165. system("pause" );
  166. */
  167.     gotoXY(colonne+5,mini+5);
  168.     if(tour==1) cout<<"X";
  169.     if(tour==2) cout<<"O";
  170. /*
  171.   for(int ligne=5;ligne<11+mini;ligne++)
  172.     {
  173.       gotoxy(colonne,ligne);
  174.       (tour==1)?cout<<"X":cout<<"O";
  175.       gotoxy(colonne,ligne-1);
  176.       cout<<" ";
  177.     }
  178. */
  179. }
  180. /*********************************************************************/
  181. int main()
  182. {
  183.   srand (time(0));
  184.   mode1=1;
  185.  
  186.   while (mode1==1||mode1==2)
  187.     {
  188.     clrscr();
  189.     Score1=0;Score2=0;
  190.   cout<<"\n      *** PUISSANCE 4 ***\n\n\n";
  191.   cout<<"Menu Principal\n";
  192.   cout<<" 1: 1vs1\n 2: 1vsCPU\n 3: Exit\n >";
  193.   cin>>mode1;
  194.   if (mode1!=3)
  195.     {
  196.   cout<<"\n Nom du joueur 1 :";
  197.   cin>>nomJ1;
  198.   nomJ2='';
  199.   if (mode1==1) // c'est la ligne de l'erreur !!!!!!!!!!!!!!
  200.     {
  201.       cout<<"\n Nom du joueur 2 :";
  202.       cin>>nomJ2;
  203.     }
  204.   cout<<"\n Combien de manches ?";
  205.   cin>>rejouer;
  206.   Nb_manches=rejouer;
  207.   while (rejouer>=1)
  208.     {
  209.   init_grille();
  210.   //Quel joueur commence ?
  211.   tour=rand()%2+1;
  212.   if (tour) cout<<"C'est le joueur 1 qui commence !\n";
  213.   else cout<<"C'est le joueur 2 qui commence !\n";
  214.   affiche();
  215.   // Boucle principale du programme
  216.   do
  217.     {
  218.       anim(choix());
  219.      
  220.       tour++;
  221.       if(tour>2) tour=1;
  222.       affiche();
  223.     }
  224.   while( !(Puissance4()||grille_pleine()) );
  225.     rejouer--;
  226.     }
  227.   if (Puissance4())
  228.     {
  229.     cout<<"Puissance 4 !!!\n";
  230.     (tour==1)?cout<<"Joueur 1 "<<nomJ1<<" gagne\n":cout<<"Joueur 2 "<<nomJ2<<" gagne\n";
  231.     (tour==1)?Score1++:Score2++;
  232.     }
  233.  
  234.   if (grille_pleine()) cout<<"grille pleine :/\n\n  GAME OVER";
  235.   }
  236.   }
  237.   system("pause" );
  238. }


 
merci de votre soutient, je galere depuis une semaine sur cette erreur... :(


---------------
P@F deathlist
Reply

Marsh Posté le 24-11-2003 à 17:56:53   

Reply

Marsh Posté le 24-11-2003 à 18:01:16    

ce n'est pas la ligne que tu indiques qui pose problème, mais la ligne du dessus --> nomJ2='' <--

Reply

Marsh Posté le 24-11-2003 à 18:02:08    

y a pas a dire le C++ bien programmé, c'est proporcpropre et limpide


Message édité par Taz le 24-11-2003 à 18:02:27
Reply

Marsh Posté le 24-11-2003 à 18:02:54    

Sinon tu savais que C++ est un langage objet ?


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 24-11-2003 à 18:04:31    

bool
 
      if (b>6) return 1;
        else return 0;
 
 
moi je dit fortune là

Reply

Marsh Posté le 24-11-2003 à 18:05:33    

Taz a écrit :

bool
 
      if (b>6) return 1;
        else return 0;
 
 
moi je dit fortune là
 


mon stagiaire :love:

Reply

Marsh Posté le 24-11-2003 à 18:06:22    

tiens c'est du C++ ca ? :D

Reply

Marsh Posté le 24-11-2003 à 18:06:35    

Taz a écrit :

bool
 
      if (b>6) return 1;
        else return 0;
 
 
moi je dit fortune là
 

Il aurait du ecrire

Code :
  1. if (b>6) return (bool)1;
  2.         else return (bool)0;



---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 24-11-2003 à 18:07:49    

R3g a écrit :

Il aurait du ecrire

Code :
  1. if (b>6) return (bool)1;
  2.         else return (bool)0;


 


euh, tu trolles j'espère ?
 

Code :
  1. if (b>6) return true;
  2.         else return false;

Reply

Marsh Posté le 24-11-2003 à 18:08:36    

Harkonnen a écrit :


euh, tu trolles j'espère ?


 
Puissant sens de la deduction hein ?

Reply

Marsh Posté le 24-11-2003 à 18:08:36   

Reply

Marsh Posté le 24-11-2003 à 18:09:40    

Harkonnen a écrit :


euh, tu trolles j'espère ?
 

Code :
  1. if (b>6) return true;
  2.         else return false;



:sweat: Comment il m'a pris pour un con là ! tu m'as trop cassé sa race quoi ! :D


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 24-11-2003 à 18:10:39    

R3g a écrit :

:sweat: Comment il m'a pris pour un con là ! tu m'as trop cassé sa race quoi ! :D


 
une lecon de C++ [:aloy]

Reply

Marsh Posté le 24-11-2003 à 18:23:00    

euh harko, quand tu fais des blages avec du code faut que tu mettes un petit symbol (*) par ce que ça fait peur sinon

Reply

Marsh Posté le 25-11-2003 à 09:21:54    

et pourquoi pas plutot return (b>6); ?


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 25-11-2003 à 10:42:46    

BlackGoddess a écrit :

et pourquoi pas plutot return (b>6); ?


 
Yep, c'est ce que j'aurais écrit

Reply

Marsh Posté le 25-11-2003 à 10:43:51    

j'aime pas, c'est moche je trouve

Reply

Marsh Posté le 25-11-2003 à 10:46:26    

chrisbk a écrit :

j'aime pas, c'est moche je trouve


 
Moi je prefere nettement ça. C'est plus clair et ça limite grandement les risques d'erreur.

Reply

Marsh Posté le 25-11-2003 à 10:49:58    

Sinon:
if (b>6) return true;
return false;
 
Il se peut que le compilateur retourne un warning parce que la fonction ne retourne pas un booléen dans tous les cas avec le coup du if () return ... else return ...


Message édité par Vinx le 25-11-2003 à 10:50:18
Reply

Marsh Posté le 25-11-2003 à 11:58:57    

bande de boolay
 
return b>6 ;
 
:o

Reply

Marsh Posté le 25-11-2003 à 12:01:02    

Taz a écrit :

bande de boolay
 
return b>6 ;
 
:o


 
genre apprends a lire [:udok]

Reply

Marsh Posté le 25-11-2003 à 12:17:05    

Pas-sio-nant ce débat ! [:thraell]


---------------
Les Vers Solitaires, on aime ... ou pas !
Reply

Marsh Posté le 01-12-2003 à 08:31:51    

j'ai trouvé la solution sans vous en fait ... :D


---------------
P@F deathlist
Reply

Marsh Posté le 07-12-2003 à 12:02:36    

tiens ça ressemble un peu au projet de notre chère madame anglade :D
 
Je te pique ton IA :p
 

Reply

Marsh Posté le 16-12-2003 à 16:44:49    

mon IA est bidon, c'est juste un choix aléatoire :D


---------------
P@F deathlist
Reply

Marsh Posté le 17-12-2003 à 12:17:40    

Ouais j'avais pas regardé :D

Reply

Marsh Posté le 17-12-2003 à 14:36:47    

Harkonnen a écrit :


euh, tu trolles j'espère ?
 

Code :
  1. if (b>6) return true;
  2.         else return false;




 
 
return (!(b>6))?false:true;
 
[:petrus75]


Message édité par Mr yvele le 17-12-2003 à 14:47:10
Reply

Marsh Posté le 17-12-2003 à 14:44:40    

supair. ce topic (du début à la fin) est assez minable

Reply

Marsh Posté le 20-12-2003 à 16:03:21    

merci du compliment :)


---------------
P@F deathlist
Reply

Marsh Posté le 20-12-2003 à 16:59:15    

oh du C :ouch:
vire les cout et c'est gagné

Reply

Marsh Posté le 21-12-2003 à 01:39:23    

lamentable  :o

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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