Probleme en C
Dernière réponse : dans Programmation
bonjour a tous, je rencontre actuellement un léger problème sur mon jeu que je n'arrive pas à resoudre depuis 3 jours. Le jeu consiste à trouver le nombre de l'ordinateur generer au hasard .
Pour etre precis, j'ai un probleme avec le score.
Lorsque je trouve le nombre mystere, on m'affiche bien le bon score, alors je l'enregistre dans un fichier.
Mais quand je charge le score, il m'affiche, 4900 a chaque fois, je regarde le fichier dans lequel le score est affiché, et je vois 4900, alors qu'il est censé enregistré le vrai score du joueur. Je ne sais pas d'ou viens se 4900 et je ne sais pas non plus comment regler se probleme car pour moi il n'y en a pas.
C'est pourquoi je fais appelle a vous, en vous remerciant d'avance pour l'aide que vous m'apporterez.
voici le codesource :
Pour etre precis, j'ai un probleme avec le score.
Lorsque je trouve le nombre mystere, on m'affiche bien le bon score, alors je l'enregistre dans un fichier.
Mais quand je charge le score, il m'affiche, 4900 a chaque fois, je regarde le fichier dans lequel le score est affiché, et je vois 4900, alors qu'il est censé enregistré le vrai score du joueur. Je ne sais pas d'ou viens se 4900 et je ne sais pas non plus comment regler se probleme car pour moi il n'y en a pas.
C'est pourquoi je fais appelle a vous, en vous remerciant d'avance pour l'aide que vous m'apporterez.
voici le codesource :
// on inclue les bibliotheques standards
#include <stdio.h>
#include <stdlib.h>
// directive de preprocesseur qui inclut le fichier .header crée par le programmeur
#include "carte_joueur_nombre_mystere.h"
int main()
{
/* déclaration de variable */
const int maximum = 7000, minimum = 0;
int nombre_mystere = 0, chiffre_mystere_joueur = 0, recommencer = 0, coupsjoueur = 0, score_joueur, meilleur_score = 0;
carte_joueur personne;
/*------------------------------------------------------------------------*/
printf (" nous allons vous demandez des informations avant de commencer le jeu !\n");
printf ("votre prenom : ");
scanf ("%s", &personne.prenom);
printf ("\n");
printf ("lieu : ");
scanf ("%s", &personne.ville);
printf ("\n");
printf ("vous pouvez commencez ... bonne chance !\n");
printf ("\n");
while (recommencer == 0)
{
FILE *fichier = NULL;
fichier = fopen("D://score.txt", "r+");
if (fichier != NULL)
{
fscanf(fichier, "%d", &meilleur_score); /*on fait sortir le score du fichier que l'in stock ensuite dans une variable appelé meilleurscore */
rewind(fichier);
fclose(fichier);
}
printf ("Voici votre meilleur score : %d \n", meilleur_score);
/* generateur de nombres */
srand (time(NULL));
nombre_mystere = (rand() % (maximum - minimum + 1)) + minimum;
score_joueur = 5000;
coupsjoueur = 0;
/*-----------------------------------------------------------------------------*/
while (chiffre_mystere_joueur != nombre_mystere) // tant que le " chiffre_mystere_joueur " est different du "nombre_mystere",
// boucle est toujours active //
{
printf ("\n");
printf ("inserez un nombre \n");
scanf ("%d", &chiffre_mystere_joueur);
coupsjoueur++;
printf ("\n");
if (chiffre_mystere_joueur < nombre_mystere)
{
printf (" c'est plus ! \n");
score_joueur = score_joueur - 100;
}
else if (chiffre_mystere_joueur > nombre_mystere)
{
printf (" c'est moins ! \n");
score_joueur = score_joueur - 100;
}
else
{
printf (" bien joue tu as trouve le nombre mystere %s !!!!!! \n", personne.prenom);
printf (" Et cela en %d coups\n",coupsjoueur);
printf ("pour un score total de %d pts ta ville : (%s) te fait honneur ! \n", score_joueur, personne.ville);
}
if (score_joueur > meilleur_score) /* si scorejoueur sup au meilleurscore, alors meilleurscore = scorejoueur */
{
meilleur_score = score_joueur;
FILE *fichier = NULL;
fichier = fopen("D://score.txt", "r+");
if (fichier != NULL)
{
fprintf (fichier, "%d", meilleur_score);
rewind(fichier);
fclose(fichier);
}
}
}
printf ("\n");
recommencer = 9;
while (recommencer != 1 && recommencer != 0)
{
printf ("Veux tu recommencer ?\n");
printf (" tape 0 : oui ou tape 1 : non\n");
scanf ("%d", &recommencer);
printf ("\n");
}
}
printf ("au revoir\n");
return 0;
}
Autres pages sur : probleme
Lassé par la pub ? Créez un compte
Bonjour,
J'ai regardé vite fait, donc je ne sais pas si je me trompes
; mais si j'ai bien compris le but de ton jeu (trouver le nombre mystère), et tu inscris en fin de partie le nouveau score.
Ce que je vois là, c'est qu'à chaque test, tour de boucle... (ligne 58), tu inscris le nouveau score, ce que je trouve bizarre... tu fais des écritures inutiles, pourquoi ne pas l'écrire à la fin de partie ?
Car tu fais 5000-100= 4900, puis au nouveau tour de boucle, quand tu te plantes (ligne 73), tu fais de nouveau une soustraction... du coup au nouveau test (ligne 86), forcément l'écriture ne va pas se faire.
Il faudrait juste ajuster l'ordre des instructions (après je ne sais pas si tu as fais d'autres erreurs au niveau code)
++
J'ai regardé vite fait, donc je ne sais pas si je me trompes
; mais si j'ai bien compris le but de ton jeu (trouver le nombre mystère), et tu inscris en fin de partie le nouveau score.Ce que je vois là, c'est qu'à chaque test, tour de boucle... (ligne 58), tu inscris le nouveau score, ce que je trouve bizarre... tu fais des écritures inutiles, pourquoi ne pas l'écrire à la fin de partie ?
Car tu fais 5000-100= 4900, puis au nouveau tour de boucle, quand tu te plantes (ligne 73), tu fais de nouveau une soustraction... du coup au nouveau test (ligne 86), forcément l'écriture ne va pas se faire.
Il faudrait juste ajuster l'ordre des instructions (après je ne sais pas si tu as fais d'autres erreurs au niveau code)
++
c'est normal qu'il y ait des soustractions puisqu'au fur et a mesure, le score du joueur diminue, lorsque le joueur trouve le nombre mystere, le score du joueur s'affiche et on l'enregistre. Toutefois, ce n'est pas le score du joueur qui est enregistrer mais 4900, or le score du joueur qui est dans score_joueur est bien celui que j'enregistre mais bizarrement, c'est ce 4900 qui s'enregistre.
J'ai tout verifier et je ne vois pas ce qui cloche meme pour l'ordre des instructions, il n'y a rien qui cloche.
Par contre un truc qui m'echappe, tu parles de choses inutiles, j'aimerai savoir de quoi parle tu car le problème pourrait bien venir de la.
Merci
J'ai tout verifier et je ne vois pas ce qui cloche meme pour l'ordre des instructions, il n'y a rien qui cloche.
Par contre un truc qui m'echappe, tu parles de choses inutiles, j'aimerai savoir de quoi parle tu car le problème pourrait bien venir de la.
Merci
Quand je parle de choses inutiles, je voulais en venir à cette remarque (désolé si je me suis mal exprimé)
Tu es censé écrire le meilleur score dans le fichier, c'est bien ça ?
Alors pourquoi enregistrer le score alors que la partie n'est pas terminée ?
A ta place, je l'aurais fait dès que la personne trouve le résultat
Je veux dire que ce morceau de code (enregistrement) doit se faire en dehors de cette boucle, ou bien faire un test avec un break si égal, mais bon c'est pas l'top.
Si tu déroules ton code, tu te rendras compte qu'au départ que si le chiffre n'est pas égal, tu tombes sur une des 2 premières conditions (ligne 68 ou 73)
Tu fais ensuite la soustraction.
Puis tu enregistre 4900, jusque là OK.
Mais c'est au prochain tour que ça foire...
Tu referas peut être une de ces 2 conditions, mais au moment de l'écriture, quelle comparaison fais-tu ? (ligne 86)
c'est à dire:
Du coup, pas d'enregistrement et d'où ton "4900"
Je sais pas si j'ai été plus clair
++
Tu es censé écrire le meilleur score dans le fichier, c'est bien ça ?
Alors pourquoi enregistrer le score alors que la partie n'est pas terminée ?
A ta place, je l'aurais fait dès que la personne trouve le résultat
Je veux dire que ce morceau de code (enregistrement) doit se faire en dehors de cette boucle, ou bien faire un test avec un break si égal, mais bon c'est pas l'top.
Si tu déroules ton code, tu te rendras compte qu'au départ que si le chiffre n'est pas égal, tu tombes sur une des 2 premières conditions (ligne 68 ou 73)
Tu fais ensuite la soustraction.
Puis tu enregistre 4900, jusque là OK.
Mais c'est au prochain tour que ça foire...
Tu referas peut être une de ces 2 conditions, mais au moment de l'écriture, quelle comparaison fais-tu ? (ligne 86)
if (score_joueur > meilleur_score)
c'est à dire:
avec meilleur_score égal à 4900 ?
if (4800 > meilleur_score)
Du coup, pas d'enregistrement et d'où ton "4900"
Je sais pas si j'ai été plus clair
++
"Alors pourquoi enregistrer le score alors que la partie n'est pas terminée ?
A ta place, je l'aurais fait dès que la personne trouve le résultat
Je veux dire que ce morceau de code (enregistrement) doit se faire en dehors de cette boucle " : en plein dedans, tu avais tout a fait raison, je n'avais pas mis cette partie du code au bon endroit. Je l'ai simplement sorti de la boucle et sa marche nickel.
La prochaine fois je ferai beaucoup plus attention a sa.
Je te remercie pour ton conseil, j'avais pas du tout fais gaffe à sa et j'avais pourtant bien regarder le code .... enfin bon tu as resolu mon probleme je te remercie beaucoup !
A ta place, je l'aurais fait dès que la personne trouve le résultat
Je veux dire que ce morceau de code (enregistrement) doit se faire en dehors de cette boucle " : en plein dedans, tu avais tout a fait raison, je n'avais pas mis cette partie du code au bon endroit. Je l'ai simplement sorti de la boucle et sa marche nickel.
La prochaine fois je ferai beaucoup plus attention a sa.
Je te remercie pour ton conseil, j'avais pas du tout fais gaffe à sa et j'avais pourtant bien regarder le code .... enfin bon tu as resolu mon probleme je te remercie beaucoup !
et pour aller plus loin .. chaque utilisateur utilise le meilleur score de tous les autres?
(lecture/écriture dans un seul fichier ..) ?
printf ("Voici votre meilleur score : %d \n", meilleur_score);
Du coup, ce serait plutot "voici LE meilleur score" ... et la variable de personnalisation (prenom) ne sert donc pas à grand chose!
(lecture/écriture dans un seul fichier ..) ?
printf ("Voici votre meilleur score : %d \n", meilleur_score);
Du coup, ce serait plutot "voici LE meilleur score" ... et la variable de personnalisation (prenom) ne sert donc pas à grand chose!
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- ForumProbleme avec cs
- ForumProbleme de fps sur cs 1.6
- ForumProbleme ping cs
- ForumProbleme lancement cs
- ForumProbleme pseudo cs unnamed
- ForumCs 1.6 probleme de choke
- ForumProbleme avec ping dans cs 1.6
- solutionsProbleme installation cs 1.6
- solutionsProbleme souris cs 1.6
- ForumProbleme de choke cs
- Voir plus