Aller au menu - Aller au contenu

TP : Plus ou Moins, votre premier jeu


Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page Précédente  1  2  3  ...  12  13  14  15  16  Suivante
Pseudo Commentaire
Page Précédente  1  2  3  ...  12  13  14  15  16  Suivante
Hors ligne Wevo0 # Posté le 19/01/2010 à 13:26:32

Merci beaucoup mais pourrais-tu m'expliquer où les placer en général car je ne sais seulement qu'on les mets pour chaque fonction.
EDIT

D'ailleurs sa ne marche pas ils me disent 75 c'est moins et 74 c'est plus...
Hors ligne yannolecool # Posté le 21/01/2010 à 23:38:43

Voici mon probleme, nom programme marche a la perfection si se n'est qu'il m'arrete deux fois durant l'éxécution en m'envoyant des message d'erreur tel que celui-ci: Run-Time Check Failure #2 - Stack around the variable 'difficulte' was corrupted. Si j'ignore ces erreurs le programme s'execute correctement. Je code sous Visual C++ 2008 express. J'espere que quelqu'un pourra trouver mon probleme.


Probleme résolu
Hors ligne aminovich04 # Posté le 23/01/2010 à 12:11:06

J'ai un petit problème concernant mon code source;lorsque je l'exécute il m'affiche juste le menu du choix du niveau de difficulté, après il me retourne: Process returned...
Voici mon code source:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
const int min=1;
int max,nombreEntre,nombreMystere,compteur=0,nombreJoueurs,continuerPartie=1,niveau;

do // condition sur le booléen pour jouer une nouvelle partie
{
printf("\t*** Jeu du nombre mystere *** \n\n\n");
printf("Choisissez le niveau de difficulté \n");
printf("1. Niveau 1 \n 2. Niveau 2 \n 3. Niveau 3\n");
scanf("%d",niveau);
printf("Veuillez entrer le mode de jeu \n 1. Joueur Solo \n 2.Jouer à 2\n");
scanf("%d",&nombreJoueurs);
switch(niveau)//choix du niveau de difficulté
{
case 1:
max=100;
break;
case 2:
max=1000;
break;
case 3:
max=10000;
break;
default:
printf("Ce choix ne figure pas sur le menu \n");
break;
}


if(nombreJoueurs = 2)
{
printf("Joueur 1,Veuillez entrer le nombre à deviner \n");
scanf("%d",&nombreMystere);
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("Joeuru 2,Veuillez saisir le nombre Mystere \n");
scanf("%d",nombreEntre);
while(nombreEntre>nombreMystere)
{
compteur++;
printf("C'est moins!!\n");
}
while(nombreEntre<nombreMystere)
{
compteur++;
printf("C'est plus !!\n");
}
while(nombreEntre=nombreMystere)
{
compteur++;
printf("Bravo, vous avez trouve le nombre mystere en %d coups",compteur);
}
}
else if (nombreJoueurs=1)
{
srand(time(NULL));
nombreMystere=(rand()%(max-min+1))+min;
printf("Entrez le nombre mystere\n");
scanf("%d",&nombreEntre);

while(nombreEntre > nombreMystere)
{
compteur++;
printf("C'est moins !!\n");
}
while(nombreEntre<nombreMystere)
{
compteur++;
printf("C'est plus !!\n");
}
while(nombreEntre=nombreMystere)
{
compteur++;
printf("Bravo,vous avez trouve le nombre mystere en %d coups",compteur);
}
}
else
{
printf("Desole,pas de mode correspondant à ce numero \n");
}

printf("Voulez-vous jouer une nouvelle partie? \n");
printf("1. Oui \n 2. Non \n");
scanf("%d",continuerPartie);

} while(continuerPartie!=2);

return 0;
}

J'avais un problème concernant la boucle FOR, alors je l'ai enlevé défnitivement.
Merci de votre aide
Hors ligne eeeple # Posté le 24/01/2010 à 00:14:58
Flux RSS

Ligne 15, tu as un léger souci sur ton scanf "scanf("%d",niveau);"
Il te manque le & avant niveau : scanf("%d", &niveau);
Ca devrait déjà aller mieux ^^
Hors ligne Lafrayeur # Posté le 28/01/2010 à 20:07:54
Avatar

Bonjour, c'est que j'ai un petit problème avec mon programme. J'ai commencé par faire le TP normalement et, voyant que j'y arrivais sans trop de difficulté( oh l'hypocrite!!!) je me suis lancé à l'assaut des améliorations. J'y arrivais sans aucun problème jusqu'au mode 1/2 joueurs. Là Code Blocks me lance normalement le programme et je me rend compte qu'il n'a pas sauté de ligne où je lui disais(le vilain).Mais pire, lorsque j'arrivais au scanf pour choisir le nombre de joueur, il lachait tout:je met le nombre, appuie sur entrée...et il me saute une ligne!Donc je ferme le programme mais je ne peux pas le re-compiler, l'icone est grisée.Tout ça pour dire que si quelqu'un avait une solution, ça m'aiderait beaucoup.Voici mon code source(il est long et barbare):
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{

int compteur=0;
int player=0;
printf("Voici un petit jeu appele plus ou moins.Pour y jouer, c'est simple: il suffit de trouver le nombre mystere qui est compris entre 1 et 100.\nVoulez vous jouez a 1 ou a 2: a 1, le nombre est genere aleatoirement par l'ordinateur tandis qu'a deux, l'un des deux joueurs choisi le nombre et l'autre essaye de le deviner.\nSi vous voulez jouer a 1, tapez 1, puis entree, si vous voulez jouer a 2, tapez 2, puis entree!");
scanf("%d", &player);
printf("\n\n %d joueur!Tres bien", player);
int nombreMystere=0, nombreEntre=0;
int MAX=100, MIN=1;
int nouvellePartie=0;
do
{
if(player==1)
{
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
do
{
printf("Quel est le nombre?");
scanf("%d", &nombreEntre);
compteur++;
if(nombreEntre<nombreMystere)
{
printf("C'est plus!\n\n");
}
else if(nombreEntre>nombreMystere)
{
printf("C'est moins!\n\n");
}
else
{
printf("Bravo!Vous avez trouve le nombre mystere en %d coup!\n\n", compteur);
}
}while (nombreMystere != nombreEntre);
}
else if(player==2)
{
printf("Joueur 2, tapez le nombre mystere");
scanf("%d", &nombreMystere);
do
{
printf("Quel est le nombre?");
scanf("%d", &nombreEntre);
compteur++;
if(nombreEntre<nombreMystere)
{
printf("C'est plus!\n\n");
}
else if(nombreEntre>nombreMystere)
{
printf("C'est moins!\n\n");
}
else
{
printf("Bravo!Vous avez trouve le nombre mystere en %d coup!\n\n", compteur);
}
}while(nombreMystere!=nombreEntre);
}
else
{
printf("Il fallait taper 1 ou 2!Si vous voulez jouer, fermer le programme et relancer le.");
}
printf("Voulez vous faire une nouvelle partie?Si vous voulez faire une nouvelle partie, tapez 1, puis entree.Sinon tapez n'importe quelle entre autre touche, puis entree.\n\n");
scanf("%d", &nouvellePartie);
}while(nouvellePartie==1);
return 0;
}

Image utilisateur
 
Hors ligne spika # Posté le 28/01/2010 à 20:45:57
Avatar

Bonjour tout le monde !
Pour le jeu, apres avoir appliqué la consigne, je me suis mis comme vous à l'améliorer
j'ai inclus plusieurs niveaux de difficultés, un mode personnalisable, et j'ai notamment mis une Decrementation à une variable
" NombreDeCoupsRestants " qui pimente un peu le jeu :)
Je m'attaque maintenant au MODE 2 JOUEURS, a ce propos, j'aimerais savoir :
Existe-t-il une fonction permettant de "vider" l'ecran ? Afin que le 2e joueur ne triche pas ? parce que mettre un printf avec une vingtaine de " \n ", c'est une solution, mais c'est pas super super... :(
Alors si quelqu'un connait la fonction...
Merci d'avance :)

Au fait ce site est vraiment super :) les tutos sont très explicites, et ma seule inquiétude et qu'ils disparaissent un jour :D
Un Grand MERCI (en majuscules) a Mateo !!!
Hors ligne ertras # Posté le 31/01/2010 à 03:20:12
Avatar

Ville : Saint augustin
Pays : France métropolitaine

Pour spika, oui tu peux vider ton écran avec : "system("cls");", il y a d'autres options avec system. En fait tu peux mettre les commandes utilisées avec MS-DOS, si tu veux en savoir plus va voir le tutoriel sur les bases du MS-DOS.
Hors ligne spika # Posté le 31/01/2010 à 16:45:09
Avatar

Ok, je vais essayer, merci beaucoup de tes conseils :)
Hors ligne blatman100 # Posté le 31/01/2010 à 18:47:02

Bonjour à tous, j'ai modifié un peu le code donné pour avoir une variable "nombre de coups restants" mais j'aimerais que quand celle ci arrive à 0 le programme affiche "perdu" et s'arrête.
Quelqu'un pourrait-il m'indiquer comment faire ?
Merci d'avance.
Hors ligne blatman100 # Posté le 31/01/2010 à 20:29:26

Finalement j'ai trouvé la solution, c'était pas bien compliqué en fait ^^.
Hors ligne petironaldo # Posté le 02/02/2010 à 19:32:54

salut ! mon probleme c'est quand je tape un nombre plus grand que 100 ou moin que 0 sa m'affiche pas "tape un nombre valide"
Code : C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int jeu ()
{
    int coups =0, nbrEntrer = 0, nbrMystere = 0;
    int const MAX = 100, MIN = 1;

    srand(time(NULL));
    nbrMystere = (rand() % (MAX - MIN + 1)) + MIN;

    while (nbrMystere != nbrEntrer)
    {
        printf("Tape un nombre ?");
        scanf("%d", &nbrEntrer);
        coups ++;

            if (nbrMystere > nbrEntrer)
            printf("C'est plus !\n\n");
            else if (nbrMystere < nbrEntrer)
            printf("C'est moin !\n\n");
            else if (nbrMystere = nbrEntrer)
            printf("Bravo tu as trouver le nombre mystere !\nEn %d coups", coups);
            else if (nbrEntrer > 100 || nbrEntrer < 0)
            printf("tape un nombre valide !\n\n");
    }
}
int main()
{
    int jeux = 0;
    jeux = jeu();
}
Hors ligne nakim # Posté le 05/02/2010 à 20:51:16

Tu n'as pas bien lu le fonctionnement de la boucle while !

si la condition du while est respectée, tu rentres dans la boucle. les conditions seront évaluée dans l'ordre dont tu les as codé. Lorsqu'une condition dans ton while est vérifiée, les autres ne sont plus traitées ;) donc la première condition à être vérifiée est : else if(nbrMystere < nbrEntrer) et même si le nombre entré est supérieur à 100 ... ta derniere condition ne sera donc jamais testé ;)

solution : tu peux mettre cette dernière condition en premier lieux ;)

Xavier
Hors ligne petironaldo # Posté le 06/02/2010 à 10:23:05

Merci beaucoup nakim
Hors ligne matmat76610 # Posté le 07/02/2010 à 20:43:36

Bonjour, voila comment j'ai rediger mon programme pour le TP. Le probleme que j'ai c'est au niveau de rajouter "plusieurs niveau de difficulté". Je n'y arrive pas...j'ai essayer de plusieur façon...en fait c'est avec le générateur du chiffre aléatoire que cela pose un probleme. Ma question serait "Es ce que quelqu'un peut me dire ou et comment il placerait le programme pour pouvoir choisir le niveau de difficulter?". Merci

#include <stdlib.h>
#include <time.h>

int main(int argc, char *argv[])
{
int nombreMystere = 0, nombreEntre = 0, coups = 1, continuerPartie = 1, choixDuMenu = 0, choixDuNiveau = 1;
const int MAX = 100, MIN = 1;

srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) +MIN;

while (continuerPartie)
{

printf("<<< MENU >>>\n\n");
printf("1 . Mode 1 joueur.\n");
printf("2 . Mode 2 joueurs.\n\n");
printf("Quelle est votre choix ?\n");
scanf("%d", &choixDuMenu);

if (choixDuMenu == 1)
{
do
{

printf("Quel est le nombre ?");
scanf("%d", &nombreEntre);

if (nombreMystere > nombreEntre)
printf("C'est plus !\n\n");
else if (nombreMystere < nombreEntre)
printf("C'est moins !\n\n");
else
printf("Bravo, vous avez trouve le nombre mystere en %d coups !!!\n\n", coups);
coups++;
}while (nombreEntre != nombreMystere);

printf("Voulez-vous rejouer ? (Tapez 1 pour Oui sinon tapez 0 pour Non)\n\n");
printf("Oui ou Non\n\n");
scanf("%d", &continuerPartie);

if (continuerPartie == 1)
printf("Super, c'est reparti pour un tour !\n\n");
else
printf("dommage ! A une prochaine fois peut etre\n\n");

}

else

{
printf("Joueur 1, veuillez choisir un nombre mystere !\n");
scanf("%d", &nombreMystere);
printf("\n\n");

do
{
printf("Joueur 2, vous devez trouver le chiffre mystere du joueur 1 !\n\n");
scanf("%d", &nombreEntre);

if (nombreEntre < nombreMystere)
printf("C'est plus !\n\n");
else if (nombreEntre > nombreMystere)
printf("C'est moins !\n\n");
else
printf("Bravo, vous avez gagnez en %d coups !\n\n", coups);
coups++;
}while(nombreEntre != nombreMystere);

printf("Voulez vous rejouer ? (Tapez 1 pour Oui sinon tapez 2 pour Non\n\n");
printf("Oui ou Non\n\n");
scanf("%d", &continuerPartie);

if (continuerPartie == 1)
printf("super, c'est reparti pour un tour !\n\n");
else
printf("Dommage ! A une prochaine fois peut etre !\n");

}

}

return 0;
}
Hors ligne jja # Posté le 09/02/2010 à 10:59:20
Avatar

Bonjour à tous
j'ai comme un problème avec la declaration de Max je déclare et je vérifie la valeur :

int Max=100;
printf("%d",&Max);
et le printf me donne : 22933608 comme valeur de Max !
je suis dessus , j'ai démonter le jeu ligne par ligne pour finir par copier la solution du tp mais ho joie, quand je vire la constante MAX pour la déclarer en int Max ben çà recommence.

quelqu'un a une idée de ce que c'est que ce @?&%@#!!
merci
sinon le tuto vraiment génial, j'ai presque tout compris.
Hors ligne jja # Posté le 09/02/2010 à 11:17:15
Avatar

ouvrant les yeux et après une pause j'ai trouvé l'erreur

printf("%d",Max); et pas printf("%d",&Max);
Hors ligne Steff29 # Posté le 09/02/2010 à 12:24:54
Avatar

Ville : Saint sauveur
Pays : France métropolitaine

Salut,

Voici un code qui gere

1 ou 2 joueurs
le niveau de difficulte
le record du nombre de coups
si on veut rejouer la meme partie
si on veut rejouer une autre partie

Un grand bravo a m@teo pour son tutoriel - je debute et ca va tout seul! (pour l'instant!) :D

(Ca aidera peut etre matmat76610...)

Code : C
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int main(int argc, char *argv[])
{
    const int MIN=1;
    int continuerPartie=1,continuerMemePartie=1,difficulte=1,nombreDeJoueurs=1,nombreMystere=0,maxi=100,joueurEnCours=1;
    int proposition=0,record=0;
    int nombreDeCoups1=0,nombreDeCoups2=0;
    srand(time(NULL));
    do // Boucle pour jouer une partie en modifiant les parametres
    {
        do // Premiere boucle : Selection du nombre de joueurs
        {
            system("CLS");
            printf("== Trouver le nombre mystere ! ==\n\n");
            printf("Entrer le nombre de joueurs (1 ou 2) ");
            scanf("%d",&nombreDeJoueurs);
        } while ( nombreDeJoueurs!=1 && nombreDeJoueurs!=2);
        do // Deuxieme boucle : Selection du niveau de difficulte
        {
            printf("\nNiveau de difficulte\n\n");
            printf("   1- nombre entre 1 et 10\n");
            printf("   2- nombre entre 1 et 100\n");
            printf("   3- nombre entre 1 et 1000\n\n");
            printf("Entrer votre choix : ");
            scanf("%d",&difficulte);
        } while ( difficulte<1 || difficulte>3 );
        record=10000;
        do // Boucle pour rejouer une partie sans changer les parametres
        {
            // Calcul du nombre mystere (10^1=10, 10^2=100, 10^3=1000 !)
            maxi=pow(10,difficulte);
            nombreMystere=(rand()%(maxi-MIN+1))+ MIN;
            nombreDeCoups1=0;
            nombreDeCoups2=0;
            system("Cls");
            // Decider quel joueur commence
            // S'il n'y a qu'un joueur, pas le choix
            if ( nombreDeJoueurs==1)
            {
                joueurEnCours=1;
            }
            // S'il y a deux joueurs, tirage au sort
            else
            {
                printf("Tirage au sort du joueur qui commence...\n");
                joueurEnCours=(rand()%(2))+1;
                printf("C'est le joueur %d qui commence !\n\n",joueurEnCours);
            }
            // Boucle de jeu principale
            do
            {
                printf("Trouver un nombre entre 1 et %d ! ",maxi);
                if (record!=10000)
                    printf("Record a battre : %d coups !",record);
                if ( nombreDeJoueurs==1)
                {
                    printf("\nProposer un nombre [coups:%d] : ",nombreDeCoups1);
                }
                else
                {
                    if ( joueurEnCours==1)
                        printf("\nJoueur 1, proposer un nombre [coups:%d] : ",nombreDeCoups1);
                    if ( joueurEnCours==2)
                        printf("\nJoueur 2, proposer un nombre [coups:%d] : ",nombreDeCoups2);
                }
                scanf("%d",&proposition);
                printf("\n");
                if (joueurEnCours==1)
                    nombreDeCoups1++;
                if (joueurEnCours==2)
                    nombreDeCoups2++;
                if (proposition<nombreMystere)
                {
                    printf("Plus grand !\n");
                }
                else if (proposition>nombreMystere)
                {
                    printf("Plus petit !\n");
                }
                // Changer le joueur si nombre pas trouve et si 2 joueurs
                if (proposition!=nombreMystere && nombreDeJoueurs==2)
                    joueurEnCours=!( joueurEnCours-1)+1;
            // Continuer la boucle tant que le nombre n'a pas ete trouve
            } while (proposition!=nombreMystere);
            // Le nombre a ete trouve
            printf("Vous avez reussi !\n\n");
            // Si c'est le joueur 1 qui a gagne
            if (joueurEnCours==1)
            {
                // Et si le record est battu
                if ( nombreDeCoups1<record)
                {
                    // Actualiser le record
                    printf("Nouveau record : %d coups !\n",nombreDeCoups1);
                    record=nombreDeCoups1;
                }
            }
            // Si c'est le joueur 2 qui a gagne
            else
            {
                if ( nombreDeCoups2<record)
                {
                    // Actualiser le record
                    printf("Nouveau record : %d coups !\n",nombreDeCoups2);
                    record=nombreDeCoups2;
                }
            }
            printf("\n-> Nombre de joueurs : %d\n",nombreDeJoueurs);
            printf("-> Nombre entre 1 et %d\n",maxi);
            printf("Voulez-vous rejouer la meme partie ? (0:non 1:oui) ");
            scanf("%d",&continuerMemePartie);
        } while (continuerMemePartie);
        printf("\nVoulez-vous rejouer une autre partie - avec des parametres differents ? (0:non 1:oui) ");
        scanf("%d",&continuerPartie);
    } while (continuerPartie);
    return 0;
}
Hors ligne Oskawa # Posté le 12/02/2010 à 01:32:54

Bonsoir! J'aurais voulu vous demander un petit truc: je fait le programme basique et quand je le met en marche il ne m'affiche rien et me met "press enter to continue". Et pourtant il n'y a rien de faux... Auriez vous une explication*
Hors ligne Steff29 # Posté le 12/02/2010 à 10:45:42
Avatar

Ville : Saint sauveur
Pays : France métropolitaine

Salut,
If faudrait que tu poste ton code, ca sera plus facile ! :)
Hors ligne pegaz # Posté le 12/02/2010 à 11:13:03

Bonjour a tous! Steff29 une question importante sur le programme de m@teo.
Au niveau du choix de la difficulte je ne comprend pas comment juste avec sa cela nous permet de choisir le niveau de difficulte.

do // Deuxieme boucle : Selection du niveau de difficulte
{
printf("\nNiveau de difficulte\n\n");
printf(" 1- nombre entre 1 et 10\n");
printf(" 2- nombre entre 1 et 100\n");
printf(" 3- nombre entre 1 et 1000\n\n");
printf("Entrer votre choix : ");
scanf("%d",&difficulte);
} while ( difficulte<1 || difficulte>3 );
record=10000;

Ou est la declaration du MAX ?
Et a quoi sert le "record" ?

Merci pour les reponses.
Hors ligne Oskawa # Posté le 12/02/2010 à 13:18:51

Voila le code par rapport à mon message plus haut ^^ Et jpeux jamais faire d'espace Jsuis obligé d'utiliser la touche tab. C'est normal* ^^

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int main()

{

int main ( int argc, char** argv )
{
int nombreMystere = 0, nombreEntre = 0;
const int MAX = 100, MIN = 1;

srand(clock());
int nb = ((float)rand()/RAND_MAX)*(MAX-MIN+1)+MIN;

while(nombreEntre != nombreMystere)

{
printf("===Plus ou Moins===\n");
printf("\n");
printf("Trouver le chiffre");
scanf("%d", &nombreEntre);

if (nombreMystere > nombreEntre)
printf("C'est plus !\n");
else if (nombreMystere < nombreEntre)
printf("C'est moins !\n");
else
printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");

}
return 0;
}
}
Hors ligne pegaz # Posté le 12/02/2010 à 13:32:27

ok 2 choses

1: tu a des int main redondants quel en est l'utilite?
2: comme petironaldo tu n'as peut-etre pas bien compris le systeme du "while" et du "do....while"

Je pense que je dois te laisser trouver par toi meme et si vraiment tu ne me comprend pas ou tu ne trouve pas je serais ravi de t'aider pour ce pb.
Hors ligne Oskawa # Posté le 12/02/2010 à 14:01:52

J'ai relu ce que Mateo avait fait donc j'ai pris son modèle et sa marche mais maintenant il ne choisit que le chiffre 0... Pourtant j'ai bien mis les nombres aléatoires. C'est quoi le problème* ^^

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int main()

{
int nombreMystere = 0, nombreEntre = 0;
const int MAX = 100, MIN = 1;
srand(clock());
int nb = ((float)rand()/RAND_MAX)*(MAX-MIN+1)+MIN;

printf("===Plus ou Moins===\n");

do
{
printf("\n");
printf("Trouver le chiffre mystère:");
scanf("%d", &nombreEntre);

if (nombreMystere > nombreEntre)
printf("C'est plus !\n");
else if (nombreMystere < nombreEntre)
printf("C'est moins !\n");
else
printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");

} while (nombreEntre != nombreMystere);

}
Hors ligne pegaz # Posté le 12/02/2010 à 14:15:55

srand(clock());
int nb = ((float)rand()/RAND_MAX)*(MAX-MIN+1)+MIN;

Ton pb c que tu declare ton rand dans un int.
Puis si tu le retire de ton int, "nb" n'est plus declarer. hors on cherche nombreMystere et pas nb.
Ensuite le srand je ne connais pas cette facon de l'ecrire mais dans l'enonce ce n'est pas ecrit de cette facon.

test plutot cela

srand(time(NULL));
nombreMystere = ((float)rand()/RAND_MAX)*(MAX-MIN+1)+MIN;
Hors ligne pegaz # Posté le 12/02/2010 à 14:17:15

meme si dans l'enonce ce n'est ecrit exactement de la meme maniere. Ou a tu eu cette ecriture?
Hors ligne Oskawa # Posté le 12/02/2010 à 14:53:36

Ah oui... Je n'avais pas remarqué, en fait je sais pas ou j'ai eu sa, sa doit être une mauvaise manip avec le logiciel, je ne sais pas du tout pourquoi il y a cette formule...
Merci beaucoup, j'espère que sa va marcher :p
Hors ligne Steff29 # Posté le 12/02/2010 à 18:09:02
Avatar

Ville : Saint sauveur
Pays : France métropolitaine

Bonjour!

Pour Pegaz:

- la boucle en elle meme ne sert qu'a initialiser la variable 'difficulte' sur 1,2 ou 3.

le calcul du maxi se fait quelques lignes plus loin, dans la boucle de jeu :
Code : C
1
2
3
4
5
6
record=10000;
do // Boucle pour rejouer une partie sans changer les parametres
{
// Calcul du nombre mystere (10^1=10, 10^2=100, 10^3=1000 !)
maxi=pow(10,difficulte);
...

- Pour chaque partie jouee, je compare le nombre de coups au record
je memorise le nombre minimum dans record.
Si j'avais initialiser le record sur 0, il aurait ete imbattatable ! (car il faut au minimum 1 coup pour trouver le nombre. Du coup je l'ai mis sur une valeur assez haute pour etre sur qu'il soit battu.
(j'espere que personne ne mets plus de 10000 coups pour trouver le nombre :-° )
Il est place la pour etre remis a 0 (10000!) pour chaque nouvelle partie.

:)
Hors ligne james d'esterbrook # Posté le 15/02/2010 à 19:09:55
Avatar

bonjour^^
moi, fait mon code source normalement,( enfin je penseXD)
et au moment de faire "build and run" il me dit qu'il y a une erreur et me marque
"undefined reference to'_winMain@16'"
si quelqu'un pouvais m'expliquer ce que je dois faire ce serais très gentil^^ :D
si c'est utile, j'utilise code::blocks
Hors ligne pegaz # Posté le 17/02/2010 à 18:01:27

okok! Mon tout premier programme en 23 ans. Moi qui haissais la programmation car je n'y comprenais strictement rien et avais des profs vraiment incompetents d'apres ce que je vois.

Merci le Site de Zero ainsi que ses "Professeurs".

Voici mon programme. Tout d'abord il fonctionnait pour 1 joueurs et 2 joueurs l'un contre l'autre.
Je l'ai modifie en voyant l'autre methode du mode 2 joueurs.

J'ai vraiment eu du mal a tout adapte en gardant mes caracteristique de depart.
Donc si vous voyez quelque chose d'inutile, de stupide, d'excelent(lol), enfin n'importe quoi, n'hesitez pas merci a tous. Et si mon programme a peut aide quelqu'un j'en tirerais une joie inimaginable.

Bouteille de champagne ouverte for my first programme....... :D :lol: ;) :p


Code : C
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>

int main()
{
    int nombreMystere = 0, nombreEntre = 0, difficulte = 1, record = 0;
    const MIN = 1;
    int MAX = 100, continuerPartie = 1, nombreJoueur = 0, bonnedifficulte = 1, joueurEnCours=1, bonNombreJoueur=1, continuerMemePartie=1;

    do // Boucle principale du programme pour jouer une nouvelle partie avec de nouveau parametre.
    {
        int nombreCoups = 0,nombreCoupsJ1 = 0,nombreCoupsJ2 = 0;
        srand(time(NULL));

        printf("\n\t\t\t    ----------------");
        printf("\n\t\t\t    Nouvelle Partie! ");
        printf("\n\t\t\t    ----------------\n\n");

        do // Boucle de selection du nombre de joueurs.
        {
            printf("\nNombre de Joueurs\n");
            printf("-----------------\n\n");
            printf(" 1. Un Joueur vs Ordinateur.\n");
            printf(" 2. Deux Joueurs l'un contre l'autre.\n");
            printf(" 3. Deux Joueurs vs Ordinateur.\n\n");
            printf("\nEntrez votre choix : ");
            scanf("%d",&nombreJoueur);
// Ce qui suis a juste ete rajoute pour l'orthographe du mot "joueur(s)".
            if(nombreJoueur==1)
            {
                printf("\n\nVous allez jouer a %d joueur.", nombreJoueur);
            }

            else
            {
                printf("\n\nVous allez jouer a %d joueurs.", nombreJoueur);
            }

            printf("\n\n\nVoulez-vous modifier votre choix ? [0 = non 1 = oui] : ");
            scanf("%d", &bonNombreJoueur);
            system("Cls");
        }while (nombreJoueur!=1 && nombreJoueur!=2 && nombreJoueur!=3 ||bonNombreJoueur);

        do // Boucle de Selection du niveau de difficulte
        {
            printf("\n\nNiveau de difficulte\n");
            printf("--------------------\n\n");
            printf(" 1 - Nombre Mystere compris entre 0 et 10\n");
            printf(" 2 - Nombre Mystere compris entre 0 et 100\n");
            printf(" 3 - Nombre Mystere compris entre 0 et 1000\n\n");
            printf("\nEntrez votre choix : ");
            scanf("%d",&difficulte);
            printf("\n\nVous allez jouer au niveau %d de difficulte.", difficulte, MIN, MAX);
            printf("\n\n\nVoulez vous modifier votre choix ? [0 = non 1 = oui] : ");
            scanf("%d", &bonnedifficulte);
            system("Cls");
        }while (difficulte < 1 || difficulte > 3 || bonnedifficulte);

        do // Boucle pour rejouer une partie avec les meme parametre.
        {
            MAX = pow(10,difficulte);
            nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
            system("Cls");
            nombreCoups=0;
            nombreCoupsJ1=0;
            nombreCoupsJ2=0;

            if(nombreJoueur == 1)
            {
                joueurEnCours=1;
                printf("\n\t\t    Trouvez le NOMBRE MYSTERE entre 1 et %d.", MAX);
                printf("\n\t\t    ----------------------------------------\n");
            }

            else if(nombreJoueur == 2)
            {
                do // Boucle de tirage au sort et de choix du Nombre Mystere
                {
                    printf("Tirage au sort........ ");
                    joueurEnCours=(rand()%(2))+1;
                    printf("C'est le joueur %d qui commence !\n",joueurEnCours);
                    printf("\n\tJoueur %d veuillez choisir le NOMBRE MYSTERE entre 1 et %d : ",joueurEnCours, MAX);
                    scanf("%d", &nombreMystere);
                    system("Cls");
                }while(nombreMystere>MAX ||nombreMystere<MIN);

                printf("\n\t\t    Trouvez le NOMBRE MYSTERE entre 1 et %d.", MAX);
                printf("\n\t\t    ----------------------------------------\n");
            }

            else if(nombreJoueur == 3)
            {
                printf("Tirage au sort........ ");
                joueurEnCours=(rand()%(2))+1;
                printf("C'est le joueur %d qui commence !\n",joueurEnCours);
                printf("\n\t\t    Trouvez le NOMBRE MYSTERE entre 1 et %d.", MAX);
                printf("\n\t\t    ----------------------------------------\n");
            }

            do // Boucle du Jeu
            {

                if(nombreJoueur == 1)
                {
                    printf("\nProposez un nombre [%d coups] : ", nombreCoups);
                    nombreCoups++;
                }

                else if(nombreJoueur == 2)
                {
                    if(joueurEnCours==1)
                    {
                        printf("\nJoueur 2, proposez un nombre [%d coups] : ", nombreCoupsJ2);
                        nombreCoupsJ2++;
                    }

                    if(joueurEnCours==2)
                    {
                        printf("\nJoueur 1, proposez un nombre [%d coups] : ", nombreCoupsJ1);
                        nombreCoupsJ1++;
                    }
                }

                else if(nombreJoueur == 3)
                {
                    if(joueurEnCours==1)
                    {
                        printf("\nJoueur 1, proposez un nombre [%d coups]: ",nombreCoupsJ1);
                        nombreCoupsJ1++;
                    }

                    if(joueurEnCours==2)
                    {
                        printf("\nJoueur 2, proposez un nombre [%d coups]: ",nombreCoupsJ2);
                        nombreCoupsJ2++;
                    }
                }

                scanf("%d", &nombreEntre);

                if(MAX < nombreEntre || MIN > nombreEntre)
                {
                    printf("\nErreur! Veuillez dorenavant entrer un nombre compris entre 1 et %d\n", MAX);
                }

                else if(nombreMystere<nombreEntre)
                {
                    printf("\nLe NOMBRE MYSTERE est plus petit.\n");
                    //nombreCoups++;
                }

                else if(nombreMystere>nombreEntre)
                {
                    printf("\nLe NOMBRE MYSTERE est plus grand.\n");
                    //nombreCoups++;
                }
                // Changer de joueur si nombre mystere pas trouve et si on joue a 2 joueurs vs ordinateur.
                if(nombreEntre!=nombreMystere && nombreJoueur==3)
                {
                    joueurEnCours=!( joueurEnCours-1)+1;
                }
            }while (nombreMystere!=nombreEntre); //Faire tant que le nombre n'a pas ete trouve.
            // Differents affichage quand le Nombre Mystere a ete trouve.
            if(nombreJoueur==1)
            {
                printf("\n\n################################################################################");
                printf("\n         Vous avez GAGNER en [%d] coups. Le NOMBRE MYSTERE etait bien %d      ", nombreCoups, nombreMystere);
                printf("\n\n################################################################################\n\n");
            }

            else if(nombreJoueur==2)
            { // Le joueurEnCours est celui qui a choisit le Nombre Mystere.
                if(joueurEnCours==1)
                {
                    printf("\n\n################################################################################");
                    printf("\n     Joueur 2 vous avez GAGNER en [%d] coups. Le NOMBRE MYSTERE etait bien %d      ", nombreCoupsJ2, nombreMystere);
                    printf("\n################################################################################\n\n");
                }

                if(joueurEnCours==2)
                {
                    printf("\n\n################################################################################");
                    printf("\n     Joueur 1 vous avez GAGNER en [%d] coups. Le NOMBRE MYSTERE etait bien %d      ", nombreCoupsJ1, nombreMystere);
                    printf("\n################################################################################\n\n");
                }
            }

            else if(nombreJoueur==3)
            {
                if(joueurEnCours==1)
                {
                    printf("\n\n################################################################################");
                    printf("\n     Joueur 1 vous avez GAGNER en [%d] coups. Le NOMBRE MYSTERE etait bien %d      ", nombreCoupsJ1, nombreMystere);
                    printf("\n################################################################################\n\n");
                }

                if(joueurEnCours==2)
                {
                    printf("\n\n################################################################################");
                    printf("\n     Joueur 2 vous avez GAGNER en [%d] coups. Le NOMBRE MYSTERE etait bien %d      ", nombreCoupsJ2, nombreMystere);
                    printf("\n################################################################################\n\n");
                }
            }

            printf("\n-> Nombre de joueurs : %d\n",nombreJoueur);
            printf("-> Nombre entre 1 et %d\n",MAX);
            printf("Voulez-vous rejouer la meme partie ? (0:non 1:oui) ");
            scanf("%d",&continuerMemePartie);
        }while (continuerMemePartie);

        printf("\n\nVoulez-vous rejouer une nouvelle partie ? [0 = non 1 = oui] : ");
        scanf("%d", &continuerPartie);
        system("Cls");
    }while (continuerPartie);

    return 0;
}
Hors ligne Vasiliz # Posté le 17/02/2010 à 22:58:19

Ton programme assure bien ( je suis débutant aussi j'ai commencé à programmer y a 3 jours) donc comparé au mieu de jeu le tien déchire... J'ai quand meme reperé un souci lorsque tu demandes le nombre de joueur et que je choisi ( par erreur) 7 la phrase suivant est: Vous allez jouer à 7 joueurs ( impossible) puis on recommence a la selection erronnée tu devrais mettre un else if plus petit que 3 max , sinon (else) et la tu recommence au debut ? (donc on ne devra pas confirmer les 7 joueurs impossible ... J'espere que tu m'as compris sinon vraiment bon. D'ailleur tu m'as appris la fonction system("Cls");
A bientot
Pour accéder à cette section
Connectez-vous !
connexion_rpx