Création d'un jeu de memoires

Fermé
walidus51 Messages postés 9 Date d'inscription vendredi 11 avril 2014 Statut Membre Dernière intervention 2 mai 2014 - Modifié par walidus51 le 11/04/2014 à 13:23
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 12 avril 2014 à 13:12
Bonjour a tous , voila en fet je doit créer un jeu sans graphisme qui consiste un créer une matrice selon le niveau de difficulté exemple si c un niveau facile la matrice sera composé de 3 ligne et 4 colonnes , si le niveau est moyen la matrice sera composé de 5 ligne et 6 colonnes et si il est difficile il sera composé de 6 ligne et 8 colonne.
ensuite je doit remplir chaque matrice de façon aléatoire par des chiffre qui se répètent trois fois chacun mais le tableau va m'afficher que des X affin que je ne vois pas les chiffre qui se cachent a l'intérieure et le but de jeu est de trouvé chaque chiffre 3 fois si je les devine il reste visible sinon il disparaissent et redevienne des X , il peut se jouer a 2 joueur , celui qui gagne c'est celui qui termine la matrice ( elle devient entièrement visible ) a une duré très courte ( on intègre un chronométré ) time
exemple : si je choisie le niveau de difficulté facile la matrice apparaît comme suit :
XXXX
XXXX
XXXX
et ensuite si je devine les 3 premier chiffre elle affiche comme suite:
4XX4
XX4X
X4XX
jusqu'a ce que je termine la matrice .
j'ai vraiment besoin d'aide pour cet exercice SVP
veuillez me répondre aussitôt que possible et merci .
A voir également:

4 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 843
11 avril 2014 à 19:37
Bonjour,

Je n'ai pas tout lu, mais pas besoin. Pour qu'on puisse t'aider, montre-nous ce que tu as commencé à faire, dis-nous là où tu bloques précisément. Il y a forcément des choses que tu sais faire :-).

Cdlt,
0
walidus51 Messages postés 9 Date d'inscription vendredi 11 avril 2014 Statut Membre Dernière intervention 2 mai 2014
12 avril 2014 à 12:55
Merci , maid mon plus grand probleme c'est que j'ai pas reussi a remplir le tableau de façon aleatoir et a ce que chaque chiffre se répetent 3 fois .
Exemple si je prend une matrice de taille 3,3 il faut qu'il ait 3 chiffre qui se repetent 3 fois , j'ai essayé avec rand()%4 mais le probleme comment repeter le meme chiffre 3 fois
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 843
12 avril 2014 à 13:12
Fais attention à bien regarder le dernier post que j'ai fait. Ce n'était pas celui-là...
De plus, pour ton problème, tu remplis la matrice et puis tu la mélanges.
Tu tires des indices aléatoires (i et j) et tu permutes les éléments d'indice i et j.
Tu fais ceci plusieurs fois et le tableau sera mélangé comme tu le veux.
Cdlt,
0
walidus51 Messages postés 9 Date d'inscription vendredi 11 avril 2014 Statut Membre Dernière intervention 2 mai 2014
12 avril 2014 à 00:13
#include <cstdlib>
#include <iostream>
#include <ctime>
#include <conio.h>

using namespace std;

int main(int argc, char *argv[])
{
printf("\t\t Bienvenue \n\n " );


string prenom, prenom2;
double nombreMystere(0), nombreEssaye(0);
int max(0),min(1), difficulte(0), joueur(0), coups(0),i,j,X;
int t[i][j];

printf( "le but de jeu est de trouvé chaque chiffre 3 fois"
"si tu les devine il reste visible sinon il disparaissent
"et redevienne des X , celui qui gagne c'est celui qui
"termine la matrice( elle devient entièrement visible ) a"
"une duré très courte ( \n\n" );
do
{
printf( "Veuillez choisir le niveau de difficulte:\n" );
printf("Facile(entre 1 et 100), tapez 1\n" );
printf("Moyen(entre 1 et 1000, tapez 2\n" );
printf( "Difficile (entre 1 et 2000), tapez 3\n" );
scanf ("%d",&difficulte);

/* definir le niveau de difficulté toute en créant la matrice */
if (difficulte==1)
{
for (i=0;i<4;i++)
{ for (j=0;j<3;i++)
{
t[i][j]="X";
}}
for (i=0;i<3;i++)
{ for (j=0;j<4;i++)
{ printf("%d", t[i][j]);
}}
X=rand()%4}

else if (difficulte==2)
{
for (i=0;i<5;i++)
{ for (j=0;j<6;i++)
{
t[i][j]="X";
}}
for (i=0;i<5;i++)
{ for (j=0;j<6;i++)
{ printf("%d", t[i][j]);
}}
X=rand()%10}

else if (difficulte==3)
{
for (i=0;i<6;i++)
{ for (j=0;j<8;i++)
{
t[i][j]="X";
}}
for (i=0;i<6;i++)
{ for (j=0;j<8;i++)
{ printf("%d", t[i][j]);
}}
X=rand()%16}

} while(difficulte!=1 && difficulte!=2 && difficulte!=3);

do
{

printf( "Choisissez un mode de jeu:\n");
printf( "1- 1 joueur \n" );
printf("2- 2 joueurs\n" );
scanf("%d",&joueur);

}while(joueur>2);

if (joueur==1)
{
srand(time(NULL));



printf("Indiquez votre prenom");
scanf("%s",prenom);
printf( "A vous de jouer" ,prenom);

}


else if(joueur==2)
{
printf( "Veuillez rentrer le prenom du premier joueur" );
scanf("%s", prenom);
printf("Veuillez rentrer le prenom du second joueur" );
scanf("%s",prenom2);
printf( " A vous de jouer",prenom2,prenom);
}
ce que j'ai pas réussi est de remplir le tableau avec des chiffre mais qu'il apparaissent que sous forme de X sans qu'on voit les chiffre a l'intérieur et chaque chiffre doit ce répéter 3 fois et le remplir de façon aléatoire
merci de bien m'aider
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 843
12 avril 2014 à 00:37
Bonjour,

Pour les prochaines fois, merci de mettre ton code entre les balises <code c>bla bla</code c>. Cela augmentera la visibilité.

Sinon mes remarques sur ton code :
#include <cstdlib>
#include <iostream>
#include <ctime>

Ce ne sont pas des headers C mais C++...
Il faut plutôt inclure stdlib.h, stdio.h et time.h

#include <conio.h>
Ce n'est pas un header standard.

using namespace std;
Ce n'est pas du C...

string prenom, prenom2;
Il n'y a pas de type string en C. Il faut utiliser des chaînes de caractères (soit un char prenom[TAILLE] par exemple, soit une allocation dynamique).
De même pour les erreurs similaires.

double nombreMystere(0), nombreEssaye(0);
Ce n'est pas bon en C. Il faut mettre : double nombreMystere=0;
De même pour les erreurs similaires.

printf( "le but de jeu est de trouvé chaque chiffre 3 fois"
"si tu les devine il reste visible sinon il disp

Il faut seulement 2 guillemets (le début de la chaîne et la fin de chaîne). Si tu veux afficher des guillemets, il faut les échapper à l'aide du backslash \.

for (j=0;j<3;i++)
Il faut mettre j++ et non i++...

t[i][j]="X";
t est un tableau d'entier. Et tu mets une chaîne. Il faut de la cohérence. De plus, il faut utiliser strcpy() pour copier une chaîne dans une autre.
De même pour les erreurs similaires.

X=rand()%4
Tu as oublié un point virgule ";"
De même pour les erreurs similaires.

srand(time(NULL));
Il vaut mieux ne l'appeler qu'une fois. Donc à mettre après la déclaration des variables dans le main().

printf( "A vous de jouer" ,prenom);
Il faut indiquer un %s dans pour afficher "prenom".
De même pour les erreurs similaires.

Tu as oublié le return 0; à la fin du main.

Voilà, corrige déjà tout ça. Je te conseille également de relire le tuto https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c

car il y a vraiment beaucoup de fautes.

N'hésite pas à corriger tout ça, à reposter ton code.

Cdlt,
0
walidus51 Messages postés 9 Date d'inscription vendredi 11 avril 2014 Statut Membre Dernière intervention 2 mai 2014
12 avril 2014 à 00:46
je n'ai pas saisie de quelle code tu parle :/
svp pourriez vous me renvoyé le corrigé en entier comme ci tu le créer de toi même , je sait c'est beaucoup demander mais je suis vraiment en retard .
merci de votre compréhension
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 843
Modifié par fiddy le 12/04/2014 à 01:00
De quel code je parle ? Du tien...
svp pourriez vous me renvoyé le corrigé en entier comme ci tu le créer de toi même
Non. On n'est pas là pour faire les devoirs mais pour aider à faire.
J'ai déjà bien détaillé la plupart de tes erreurs. Tu peux quand même faire l'effort de corriger par toi-même...
0
walidus51 Messages postés 9 Date d'inscription vendredi 11 avril 2014 Statut Membre Dernière intervention 2 mai 2014
12 avril 2014 à 01:46
vous avez raison , désolé
0
walidus51 Messages postés 9 Date d'inscription vendredi 11 avril 2014 Statut Membre Dernière intervention 2 mai 2014
12 avril 2014 à 01:34
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>


int main(int argc, char *argv[])
{
printf("\t\t Bienvenue \n\n " );


char prenom[20] , prenom2[20],X,M[3][4],N[5][6],L[6][8];
int difficulte, joueur, coups,i,j,t,m;
int T[3][4],U[5][6],V[6][8];
m=time(0);
srand(m);

printf( "le but de jeu est de trouvé chaque chiffre 3 fois ,si tu les devine il reste visible sinon il disparaissent et redevienne des X , celui qui gagne c'est celui qui termine la matrice( elle devient entièrement visible ) a une duré très courte ( \n\n" );

<choisir le niveau de difficulté>

do
{
printf( "Veuillez choisir le niveau de difficulte:\n" );
printf("Facile, tapez 1\n" );
printf("Moyen, tapez 2\n" );
printf( "Difficile, tapez 3\n" );
scanf ("%d",&difficulte);

<definir le niveau de difficulté toute en créant la matrice >

if (difficulte==1)
{
for (i=0;i<3;i++)
{ for (j=0;j<4;j++)
{ scanf("%d",&T[3][4]);
M[i][j]=X;
}}
for (i=0;i<3;i++)
{ for (j=0;j<4;i++)
{ printf("%s", M[i][j]);
}}
T[3][4]=rand()%4;}

else if (difficulte==2)
{
for (i=0;i<5;i++)
{ for (j=0;j<6;j++)
{ scanf("%d",&U[5][6]) ;
N[i][j]=X;
}}
for (i=0;i<5;i++)
{ for (j=0;j<6;j++)
{ printf("%s", N[i][j]);
}}
U[5][6]=rand()%10;}

else if (difficulte==3)
{
for (i=0;i<6;i++)
{ for (j=0;j<8;j++)
{ scanf("%d",&V[6][8]);
L[i][j]=X;
}}
for (i=0;i<6;i++)
{ for (j=0;j<8;j++)
{ printf("%s", L[i][j]);
}}
V[6][8]=rand()%16;}

} while(difficulte!=1 && difficulte!=2 && difficulte!=3);

<choisir le mode de jeu >

do
{

printf( "Choisissez un mode de jeu:\n");
printf( "1- 1 joueur \n" );
printf("2- 2 joueurs\n" );
scanf("%d",&joueur);

}while(joueur>2);

if (joueur==1)
{printf("Indiquez votre prenom");
scanf("%s",prenom);
printf( "A vous de jouer" ,prenom);

}


else if(joueur==2)
{
printf( "Veuillez rentrer le prenom du premier joueur" );
scanf("%s", prenom);
printf("Veuillez rentrer le prenom du second joueur" );
scanf("%s",prenom2);
printf( " A vous de jouer %s%s",prenom2,prenom);
}

system("PAUSE");
return 0;
}
y a t'il encore des fautes ?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 843
12 avril 2014 à 12:45
Tu as oublié d'utiliser la balise "code" comme dit plus haut.
Pour les prochaines fois, merci de mettre ton code entre les balises <code c>bla bla</code c>. Cela augmentera la visibilité.
Ou alors, tu cliques sur le bouton à droite du bouton "souligné" et sélectionne "C" dans la liste déroulante.

Pour les fautes, tu peux le voir toi-même en prenant un compilateur...
#include <conio.h>
Ce n'est toujours pas standard... A enlever...

m=time(0);
srand(m);

Pourquoi changer ? Je t'ai dit de laisser srand(time(NULL));

M[i][j]=X;
C'est 'X'; au lieu de X. Enfin cela dépend de ce que tu veux faire.

Ensuite ton code a beaucoup changé par rapport à la dernière fois. Pourquoi ?

Pour le reste, cela manque de commentaire, c'est illisible sans l'utilisation de la balise "code". Mais compile par toi-même, tu verras les erreurs :-).

Cdlt,
0