begin process at 2012 02 09 15:47:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

morpion


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

morpion

mardi 11 novembre 2003 à 19:29:41 | morpion

charon123

Bon, 1), je suis débutant et je viens de commencer il y a une semaine. 2)j'utilise dev-cpp es ce que c'est bien? 3)alors voila, j'essaye de faire un morpion en utilisant un tableau et des pointeurs mais il y a un probleme a la declaration des pointeurs sa dit:
12(ligne) C:\Dev-Cpp\morpion1.1.cpp
ISO C++ forbids declaration of `aa' with no type
et:
12(ligne) C:\Dev-Cpp\morpion1.1.cpp
redefinition of `int aa'
et:
5 C:\Dev-Cpp\morpion1.1.cpp
`int aa' previously declared here
et sa recommence pour tous les pointeurs

voila la source, je me doute que c'est pas parfait et il manque encore quelque fontions au programme mais j'essaye déja d'arranger les merdes qu'il y a déja.

#include <iostream.h>
int grille[3][3];
int play1xy;
int play2xy;
int *aa, *ab, *ac, *ba, *bb, *bc, *ca, *cb, *cc;
void jeu();
void refresh();
void commandep1();
void commandep2();
void xxx();
void yyy();
aa=grille[0][0];
ab=grille[0][1];
ac=grille[0][2];
ba=grille[1][0];
bb=grille[1][1];
bc=grille[1][2];
ca=grille[2][0];
cb=grille[2][1];
cc=grille[2][2];

int main(void)
{
{
do
{
commandep1;
xxx;
commandep2;
yyy;
}
while (a1!=0; a2!=0; a3!=0; b1!=0; b2!=0; b3!=0; c1!=0; c2!=0; c3!=0;)
}
}

void commandep1() //interface p1
{
refresh();
jeu();
cout << "Joueur 1, entrez x suivi de y (ex: a3): ";
cin >> play1xy;
}

void commandep2 //interface p2
{
refresh();
jeu();
cout << "Joueur 2, entrez x suivi de y (ex: a3) :";
cin >> play2xy;
}

void refresh() //fonction pour effacer
{
system("cls");
}

void jeu() //affichage tableau
{
cout << "\n\n";
cout << grille[0][0] << " | " << grille[0][1] << " | " << grille[0][2] << "\n";
cout << "---------\n";
cout << grille[1][0] << " | " << grille[1][1] << " | " << grille[1][2] << "\n";
cout << "---------\n";
cout << grille[2][0] << " | " << grille[2][1] << " | " << grille[2][2] << "\n\n";
}

void xxx //modification de le valeur de la grille par p1
{
switch(play1xy)
{
case aa: *aa+1;
break;
case ab: *ab+1;
break;
case ac: *ac+1;
break;
case ba: *ba+1;
break;
case bb: *bb+1;
break;
case bc: *bc+1;
break;
case ca: *ca+1;
break;
case cb: *cb+1;
break;
case cc: *cc+1;
break;
default: cout <<"Erreur, entrée non valide, recommencer svp.";
commandep1;
}
}

void yyy //modification de le valeur de la grille par p2
{
switch(play2xy)
{
case aa: *aa+2;
break;
case ab: *ab+2;
break;
case ac: *ac+2;
break;
case ba: *ba+2;
break;
case bb: *bb+2;
break;
case bc: *bc+2;
break;
case ca: *ca+2;
break;
case cb: *cb+2;
break;
case cc: *cc+2;
break;
default: cout <<"Erreur, entrée non valide, recommencer svp.\n";
commandep2;
}
}

Alors sa serai simpa de m'aider a trouver tout ce qui ne va pas, pkoi, et comment l'arranger. Merci.
mardi 11 novembre 2003 à 19:37:26 | Re : morpion

BruNews

Administrateur CodeS-SourceS
a un pointeur on affecte une adresse memoire.
BruNews, ciao...
mardi 11 novembre 2003 à 21:08:56 | Re : morpion

D1m3x

Si tu as réussi à compiler ce code avec si peui d'erreur je comprend plus rien, voici les premières erreurs:


do
{
commandep1;
xxx;
commandep2;
yyy;
}


des appels de fonction de cette manière sont interdit, tu dois placer les parenthèses derrière les noms :) donc tu devras appeler tes fonctions de cette manière:


do
{
commandep1( );
xxx( );
commandep2( );
yyy( );
}


je crois que si tu as au moins oser apprendre les bases du C++ cela devrais être stocké dans le cerveau, ce n'est tout de même pas tellement compliqué... Continuons à amélioré (réparer) ton code:


while (a1!=0; a2!=0; a3!=0; b1!=0; b2!=0; b3!=0; c1!=0; c2!=0; c3!=0;)


serait-il possible de me dire où sont déclarée les variables ? parce que la je les vois pas !!!!

Donc essaye avec ceci:


int a1, a2, a3, b1, b2, b3, c1, c2, c3;
do
{
...
}
while (
( a1 != 0 ) && ( a2 != 0 ) && ( a3 != 0 ) &&
( b1 != 0 ) && ( b2 != 0 ) && ( b3 != 0 ) &&
( c1 != 0 ) && ( c2 != 0 ) && ( c3 != 0 )
);


Voilà pour ce petit problème. Prochaine erreur, ce n'est pas vraiment une erreur mais c'est plutôt du code inutile:


void refresh( )
{
system( "cls" );
}


Pourquoi ne pas utiliser la fonction system() directement. Ou bien te programmer une fonction qui fait la même chose que system( "cls" ); mais qui n'utilise pas celle-ci, mais tu n'as pas l'air de t'y connaître à fond et pour faire ça faudrait connaître les structures... !



void xxx //modification de le valeur de la grille par p1
{
...
}

et

void yyy //modification de le valeur de la grille par p2
{
...
}


Je ne comprend pas où tu as trouver ton tutoriel C++ mais là c'est plus normal!!! tu ne peux pas déclarer de fonction sans y mettre des paranthèses puisque celles-ci permettent d'introduire des paramètre si cette fonction en demande. Même si la fonction ne demande pas de paramètre, tu dois mettre les parenthèses!

Bon je crois que c'est tout, je n'ai pas eu le temps de regarder tout tout tout. Mais je crois que c'est déjà assez, si après remplacement des choses que tu avais avant par mes choses, il y a toujours des erreurs repose une deuxième petite question :)

Allez a+ et j'espère que ton jeu sera bientôt fini :p


[DmX]
mardi 11 novembre 2003 à 23:44:16 | Re : morpion

ymca2003


aa=&grille[0][0];
...
mercredi 12 novembre 2003 à 13:45:04 | Re : morpion

charon123


OK, merci tt le monde.
D1m3x, dsl, qd les pointeurs ne marchaient pas (a1, ...) j'ai essayer de les remplacer par aa, ab... et j'ai oublié de tout modifié dsl. Effectivement, je vais essayer de me trouver un autre tutoriel...
ps: je n'avait pas réussi a le compiler ^^.
mercredi 12 novembre 2003 à 14:07:47 | Re : morpion

charon123

Voila, alors j'ai essayé de corrigé tout ce que je pouvais mais j'ai toujours les problemes avec les pointeurs a la compilation.

#include <iostream>
int *a1, *a2, *a3, *b1, *b2, *b3, *c1, *c2, *c3;
int tab[3][3];
int play1xy;
int play2xy;
void jeu();
void refresh();
void commandp1();
void commandp2();
a1=&tab[0][0];
a2=&tab[0][1];
a3=&tab[0][2];
b1=&tab[1][0];
b2=&tab[1][1];
b3=&tab[1][2];
c1=&tab[2][0];
c2=&tab[2][1];
c3=&tab[2][2];

void jeu() //affichage tableau
{
cout << "\n\n";
cout << tab[0][0] << " | " << tab[0][1] << " | " << tab[0][2] << "\n";
cout << "---------\n";
cout << tab[1][0] << " | " << tab[1][1] << " | " << tab[1][2] << "\n";
cout << "---------\n";
cout << tab[2][0] << " | " << tab[2][1] << " | " << tab[2][2] << "\n\n";
}

int main(void)
{
{
do
{
commandp1();
xxx();
commandp2();
yyy();
}
while ( ( a1 != 0 ) && ( a2 != 0 ) && ( a3 != 0 ) &&( b1 != 0 ) && ( b2 != 0 ) && ( b3 != 0 ) &&( c1 != 0 ) && ( c2 != 0 ) && ( c3 != 0 ));
}
}

void commandep1() //interface p1
{
refresh();
jeu();
cout << "Joueur 1, entrez x suivi de y (ex: a3): ";
cin >> play1xy;
}

void commandep2() //interface p2
{
refresh();
jeu();
cout << "Joueur 2, entrez x suivi de y (ex: a3) :";
cin >> play2xy;
}

void refresh() //fonction pour effacer
{
system("cls");
}

void xxx() //modification de le valeur de la grille par p1
{
switch(play1xy)
{
case aa: *a1+1;
break;
case ab: *a2+1;
break;
case ac: *a3+1;
break;
case ba: *b1+1;
break;
case bb: *b2+1;
break;
case bc: *b3+1;
break;
case ca: *c1+1;
break;
case cb: *c2+1;
break;
case cc: *c3+1;
break;
default: cout <<"Erreur, entrée non valide, recommencer svp.";
commandp1();
}
}

void yyy() //modification de le valeur de la grille par p2
{
switch(play2xy)
{
case aa: *a1+2;
break;
case ab: *a2+2;
break;
case ac: *a3+2;
break;
case ba: *b1+2;
break;
case bb: *b2+2;
break;
case bc: *b3+2;
break;
case ca: *c1+2;
break;
case cb: *c2+2;
break;
case cc: *c3+2;
break;
default: cout <<"Erreur, entrée non valide, recommencer svp.\n";
commandp2();
}
}
mercredi 12 novembre 2003 à 14:35:28 | Re : morpion

D1m3x

Pourquoi veux-tu absolument utiliser des pointeur de int? je ne veux pas t'en empêcher, mais si tu pouvais me donner la raison pour laquelle tu utilise absolument des pointeurs ce serait pas mal :). Juste une ou deux petites remarques:


int main(void)
{
{
do
{
commandp1();
xxx();
commandp2();
yyy();
}
while ( ( a1 != 0 ) && ( a2 != 0 ) && ( a3 != 0 ) &&( b1 != 0 ) && ( b2 != 0 ) && ( b3 != 0 ) &&( c1 != 0 ) && ( c2 != 0 ) && ( c3 != 0 ));
}
}


entre le '{' du main et '}' du main tu met encore deux '{}' tu n'es pas obligé de placer ce code dans ces {}, car le code est déjà dans une fonction, si tu aurait mit ce code en dehors des fonctions tu aurais du placer les {} mais elle ne sont pas utile ici, encore je me demande s'il est possible de faire un do while hors d'une fonction, ça n'aurait pas trop de sens... :) Remplace donc par:


int main(void)
{

do
{
commandp1();
xxx();
commandp2();
yyy();
}
while ( ( a1 != 0 ) && ( a2 != 0 ) && ( a3 != 0 ) &&( b1 != 0 ) && ( b2 != 0 ) && ( b3 != 0 ) &&( c1 != 0 ) && ( c2 != 0 ) && ( c3 != 0 ));

}


Ce n'est qu'un conseil ;)

Ensuite c'est un FAUTE qui intervient, en incluant la lib standard du C++ (iostream) tu as oublié le:

using namespace std;


qui est indispensable si tu ne met pas le .h derrière iostream. Si tu ne le met pas tu sera obligé d'utiliser les fonctions de la STL de cette manière:


int main ( void )
{
int nmb;
std::cout << "entrez un nombre : ";
std::cin << nmb;

std::cout << "Le nombre entré est: " << nmb << sdl::endl;

return 0;
}


Je ne trouve pas ça très beau..!

Ensuite je vois que tu as changé les prototype de commandep1(); en commandp1( ); mais que quand tu les implémente tu laisse le vieux prototype... !

Je crois que c'est tout essaye de changer cela et recompile :)

Ciao ;)


[DmX]
mercredi 12 novembre 2003 à 14:40:23 | Re : morpion

charon123

bah un pointeur c'est ce qui me parait le plus simple non?
en fait je suis peut etre un peu trop con...
mercredi 12 novembre 2003 à 16:56:23 | Re : morpion

D1m3x

lol, non rien avoir avec trop con. Les pointeurs c'est pas tout à fait le plus simple, le plus simple c'est tout simplement d'utiliser des simple int, car tu n'est pas obligé de leur attribué une adresse mémoire, tu peux simplement leur donné une valeur...

JE TIENS ENCORE A MEXCUSER POUR LE DOUBLE POST! JAVAIS UN PROBLEME AVEC IE!! excusez moi ^^


[DmX]
mercredi 12 novembre 2003 à 17:24:26 | Re : morpion

charon123

Bon, maintenan j'ai fait sa:


#include <iostream.h>
int tab[3][3];
char play1xy;
char play2xy;
void jeu();
void refresh();
void commandp1();
void commandp2();
void xxx();
void yyy();

int main(void)
{
do
{
commandp1();
xxx();
commandp2();
yyy();
}
while ( ( tab[0][0] != 0 ) && ( tab[0][1] != 0 ) && ( tab[0][2] != 0 ) &&( tab[1][0] != 0 ) && ( tab[1][1] != 0 ) && ( tab[1][2] != 0 ) &&( tab[2][0] != 0 ) && ( tab[2][1] != 0 ) && ( tab[2][2] != 0 ));
}

void jeu() //affichage tableau
{
cout << "\n\n";
cout << tab[0][0] << " | " << tab[0][1] << " | " << tab[0][2] << "\n";
cout << "---------\n";
cout << tab[1][0] << " | " << tab[1][1] << " | " << tab[1][2] << "\n";
cout << "---------\n";
cout << tab[2][0] << " | " << tab[2][1] << " | " << tab[2][2] << "\n\n";
}

void commandp1() //interface p1
{
refresh();
jeu();
cout << "Joueur 1, entrez x suivi de y (ex: a3): ";
cin >> play1xy;
}

void commandp2() //interface p2
{
refresh();
jeu();
cout << "Joueur 2, entrez x suivi de y (ex: a3) :";
cin >> play2xy;
}

void refresh() //fonction pour effacer
{
system("cls");
}

void xxx() //modification de le valeur de la grille par p1
{
switch(play1xy)
{
case a1: tab[0][0]+1;
break;
case a2: tab[0][1]+1;
break;
case a3: tab[0][2]+1;
break;
case b1: tab[1][0]+1;
break;
case b2: tab[1][1]+1;
break;
case b3: tab[1][2]+1;
break;
case c1: tab[2][0]+1;
break;
case c2: tab[2][1]+1;
break;
case c3: tab[2][2]+1;
break;
default: cout <<"Erreur, entrée non valide, recommencer svp.";
commandp1();
}
}

void yyy() //modification de le valeur de la grille par p2
{
switch(play2xy)
{
case a1: tab[0][0]+2;
break;
case a2: tab[0][1]+2;
break;
case a3: tab[0][2]+2;
break;
case b1: tab[1][0]+2;
break;
case b2: tab[1][1]+2;
break;
case b3: tab[1][2]+2;
break;
case c1: tab[2][0]+2;
break;
case c2: tab[2][1]+2;
break;
case c3: tab[2][2]+2;
break;
default: cout <<"Erreur, entrée non valide, recommencer svp.\n";
commandp2();
}
}

a la compilation, le seul probleme je croi c'est qu'il me dit que dans

void yyy() //modification de le valeur de la grille par p2
{
switch(play2xy)
{
case a1: tab[0][0]+2;
break;
case a2: tab[0][1]+2;
break;
case a3: tab[0][2]+2;
break;
case b1: tab[1][0]+2;
break;
case b2: tab[1][1]+2;
break;
case b3: tab[1][2]+2;
break;
case c1: tab[2][0]+2;
break;
case c2: tab[2][1]+2;
break;
case c3: tab[2][2]+2;
break;
default: cout <<"Erreur, entrée non valide, recommencer svp.\n";
commandp2();
}
}

et bien a1, a2... ne sont pas déclaré. de ce que j'ai compris, dans cet exemple c'est en fonction de la valeur de play2xy on execute la fonction tab[0][0]+2... et donc je ne vois pas pkoi il me dit que a1, a2, a3... ne sont pas déclaré...

comme play1xy contient une valeur a1, a2... il faut le déclaré en "char"?


1 2 3

Cette discussion est classée dans : grille, case, break, void, cout


Répondre à ce message

Sujets en rapport avec ce message

randomize [ par niconico ] salut à tous, je débute en C++ et j'utilise VC++ pour compiler mes prog :le prob :avec ce petit programe (plus bas)il me sort 2 erreurs :error C2065: Dumb debutant [ par akumageorges ] Bonjour tout le monde,je suis nouveau dans le site et debutant en programmation(utilisant C++).J'ecris juste pour demande de l'aide dans la constructi help me !!! [ par pascal13 ] j arrive pas a compiler mon programme...je sais que g qlq que souccis au niveau de la sauvegarde des données sur le fichier toutes remarques seront le menu en c/c++ avec un switch [ par sev622 ] bonjour, voilà, je voudrai faire un menu tout simple avec un switch dans un boucle while...mais j'y arrive pas. Voilà ce que j'ai fait : void main() Creation et ecriture dans un fichier en C++ [ par bjipowa ] Bonjour,voila je suis une noob en c++ mais je dois faire un prog pour mon BTS dans ce language, et je dois pour cela utiliser les fichiers.J'ai donc c Problème avec cin.getline() [ par monstor_rox ] Bonjour a tousJ'ai un gros problème sur le code suivant : char* menu() {    cout    cout    cout<<"[3] -  Ajouter DATE MACHINE en C++ [ par eishtein ] bonjour tout la monde; pouvez vous m'aidez à optimiser la classe suivante de telle sorte à ce qu'elle nous donne la date courante: [code=cpp] class d Touches clavier [ par F0ra ] Salut,Mon problème c'est que ça ne fonctionne pas quand j'appuie sur la touche de droite et bas en même temps par exemple.Que faire ?case WM_KEYDOWN:s Affichage 0 et 1... [ par extremOne ] Bonjour à tous, voilà je débute un peu en langage C..Je me casse un peu la tete pour réaliser le jeu de la vie de Conway! J'ai fait des tas de recherc logiciel Borland C++ et DevC++ [ par waldomania ] Bonjour, j'ai un grand problème car j'ai programmé un mini projet sur un Dev C++ mais ça marche pas à Borland C++ le projet est en langage c (!=C++)


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,217 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales