OVH Cloud OVH Cloud

[debutant] jeu morpion sur console

3 réponses
Avatar
ken
bonjour tout l'monde !
j'ai qq petits pbs avec la programmation c++, et les .h on dirait...
je veux faire un jeu de morpion, avec affichage sur la console.

j'ai (entre autres..) ces erreurs qui apparaissent:
ligne 8 D:\C++\MORPION\version_console\Morpion.cpp
ANSI C++ forbids declaration `taille' with no type

ligne 9 D:\C++\MORPION\version_console\Morpion.cpp
ANSI C++ forbids declaration `plateau' with no type

ligne 9 D:\C++\MORPION\version_console\Morpion.cpp
variable-size type declared outside of any function

ligne 10 D:\C++\MORPION\version_console\Morpion.cpp
ANSI C++ forbids declaration `joueurCourant' with no type

je ne vois pas où se trouve le problème....si vous pouviez m'aider
svp...merci !

voici mon code :

////////////////////// MORPION.h \\\\\\\\\\\\\\\\\\\\\\\\\\
#ifndef Morpion_h
#define Morpion_h

class Morpion
{
private:
int taille;
char joueurCourant;
char** plateau;

public:
Morpion();
Morpion(int);
virtual ~Morpion();

virtual void nouvellePartie() ;
virtual char getJoueurCourant();
virtual void setJoueurCourant(char j) ;
virtual void changeJoueurCourant() ;
virtual bool jouer(int l , int c);
virtual bool gagner() ;
virtual void affiche ();
virtual bool plein() ;
};

#endif



/////////////////////// MORPION.cpp (une partie du code)
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

#include <iostream.h>
#include "Morpion.h"

// -------------------------- CONSTRUCTEURS --------------------------
\\
Morpion::Morpion() {
/*ligne 8 */ taille = 3;
/*ligne 9 */ plateau = new char[taille][taille];
/*ligne 10 */ joueurCourant='X';
/*ligne 11 */ nouvellePartie();
}

Morpion::Morpion (int t) {
taille = t;
plateau = new char[taille][taille];
joueurCourant='X';
nouvellePartie();

}

Morpion::~Morpion() {}


// -------------------------- METHODES -------------------------- \\
void Morpion::nouvellePartie() {
for (int i = 0 ; i<taille ; i++)
for ( int j = 0 ; j<taille ; j++)
plateau [i][j] = ' ';
}

3 réponses

Avatar
Serge Paccalin
Le samedi 9 août 2003 à 15:36:19, ken a écrit dans fr.comp.lang.c++ :

bonjour tout l'monde !
j'ai qq petits pbs avec la programmation c++, et les .h on dirait...
je veux faire un jeu de morpion, avec affichage sur la console.

j'ai (entre autres..) ces erreurs qui apparaissent:
ligne 8 D:C++MORPIONversion_consoleMorpion.cpp
ANSI C++ forbids declaration `taille' with no type


[coupe]

je ne vois pas où se trouve le problème....si vous pouviez m'aider
svp...merci !

voici mon code :



/////////////////////// MORPION.cpp (une partie du code) \\\\\\\

#include <iostream.h>
#include "Morpion.h"

// -------------------------- CONSTRUCTEURS --------------------------
Morpion::Morpion() {
/*ligne 8 */ taille = 3;
/*ligne 9 */ plateau = new char[taille][taille];
/*ligne 10 */ joueurCourant='X';
/*ligne 11 */ nouvellePartie();
}


Ton problème, c'est l'esthétique de tes commentaires !
Non, je suis sérieux. Quand une ligne se termine par un '', le
compilateur considère qu'elle se continue sur la ligne suivante...

Autrement dit, ton programme ressemble à ça :

// --- CONST --- Morpion::Morpion() {

/*ligne 8 */ taille = 3;
/*ligne 9 */ plateau = new char[taille][taille];
/*ligne 10 */ joueurCourant='X';
/*ligne 11 */ nouvellePartie();
}

Tu attaques bille en tête avec « taille = 3; » en cachant l'en-tête de
ton constructeur. On est donc au niveau fichier, avec une initialisation
(à 3) d'une variable globale (taille) sans type...

--
___________ 2003-08-09 15:40:12
_/ _ _`_`_`_) Serge PACCALIN -- sp ad mailclub.net
_L_) Il faut donc que les hommes commencent
-'(__) par n'être pas fanatiques pour mériter
_/___(_) la tolérance. -- Voltaire, 1763

Avatar
Christophe Lephay
"ken" a écrit dans le message de
news:3f34f90c$0$27004$
j'ai (entre autres..) ces erreurs qui apparaissent:
ligne 8 D:C++MORPIONversion_consoleMorpion.cpp
ANSI C++ forbids declaration `taille' with no type


Je ne vois pas ce qui cloche. L'erreur se trouve probablement dans le code
que tu n'as pas posté...

ligne 9 D:C++MORPIONversion_consoleMorpion.cpp
ANSI C++ forbids declaration `plateau' with no type
// -------------------------- CONSTRUCTEURS --------------------------

Morpion::Morpion() {
/*ligne 8 */ taille = 3;
/*ligne 9 */ plateau = new char[taille][taille];
/*ligne 10 */ joueurCourant='X';
/*ligne 11 */ nouvellePartie();
}

Morpion::Morpion (int t) {
taille = t;
plateau = new char[taille][taille];
joueurCourant='X';
nouvellePartie();

}


Ce serait mieux que tu fasses un seul constructeur avec un paramètre par
défaut :

Morpion( size_t t = 3 );

Par ailleurs, tu es obligé d'allouer un tableau à deux dimensions en deux
phases :

plateau = new char*[taille];
for( int i = 0; i < taille; ++i )
plateau[ i ] = new char[ taille ] ;

Morpion::~Morpion() {}


Si tu fais des new dans le constructeur, c'est bien de faire les delete
correspondant dans le destructeur :

for( int i = 0; i < taille; ++i )
delete[] plateau[ i ];
delete[] plateau;

Chris

Avatar
ken
"Christophe Lephay" a écrit dans le message
de news:bh2udl$fk1$
"ken" a écrit dans le message de
news:3f34f90c$0$27004$
j'ai (entre autres..) ces erreurs qui apparaissent:
ligne 8 D:C++MORPIONversion_consoleMorpion.cpp
ANSI C++ forbids declaration `taille' with no type


Je ne vois pas ce qui cloche. L'erreur se trouve probablement dans le code
que tu n'as pas posté...

ligne 9 D:C++MORPIONversion_consoleMorpion.cpp
ANSI C++ forbids declaration `plateau' with no type
// --------------------------
CONSTRUCTEURS --------------------------



Morpion::Morpion() {
/*ligne 8 */ taille = 3;
/*ligne 9 */ plateau = new char[taille][taille];
/*ligne 10 */ joueurCourant='X';
/*ligne 11 */ nouvellePartie();
}

Morpion::Morpion (int t) {
taille = t;
plateau = new char[taille][taille];
joueurCourant='X';
nouvellePartie();

}


Ce serait mieux que tu fasses un seul constructeur avec un paramètre par
défaut :

Morpion( size_t t = 3 );

Par ailleurs, tu es obligé d'allouer un tableau à deux dimensions en deux
phases :

plateau = new char*[taille];
for( int i = 0; i < taille; ++i )
plateau[ i ] = new char[ taille ] ;

Morpion::~Morpion() {}


Si tu fais des new dans le constructeur, c'est bien de faire les delete
correspondant dans le destructeur :

for( int i = 0; i < taille; ++i )
delete[] plateau[ i ];
delete[] plateau;

Chris


pour les erreurs que j'avais à la compilation, il s'agissait des

commentaires qui étaient mal écris

et pour l'allocation du tableau, je viens de changer le code en suivant tes
conseils, et...(roulements de tambours)...tout se compile sans erreur !!
:o))

merci à vous 2 !!!
2 réponses rapides et très efficaces, ça me motive pour finir le tout
aujourd'hui , il me reste plus que le main.cpp à faire.
après je v tenter un morpion en mode graphique , mais c une autre histoire,
j'sais même pas quelles librairies utiliser pour faire les fenêtres, la
gestion des évenements souris...mais suis optimiste et j'v chercher ;o)

allez bon w-e à tous !