Enregistrer score dans fichier texte

Signaler
-
Messages postés
14
Date d'inscription
vendredi 14 mai 2021
Statut
Membre
Dernière intervention
31 mai 2021
-
Bien le bonjour, je créer le jeu du Tic-tac-toe, et j'aimerais enregistrer dans un fichier texte le score des joueur gagnant et le joueur perdant pour que lorsque j'entre sur le menu de mon jeu, il va y avoir l'option Score et lorsque nous appuyons sur l'option nous puissions voir les score précédant.

Exemple de fichier txt

Toto Mateo
1 0
0 1

6 réponses

Messages postés
16040
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 juin 2021
711
Le formatage du fichier, en soit n'est pas spécifiquement un problème d'écriture dans le fichier, pour apparaitre sur la console ce serait pareil.
Mais ta question était
Enregistrer score dans fichier texte
donc on t'a orienté sur la partie écriture de fichier...

Bref.

Je suppose que tu as une ou des variables qui stockent les noms de joueurs. Et bien il faut t'en servir pour écrire la première ligne.
Je suppose aussi que tu as une ou des variables qui stockent les résultats des parties, Et bien, il faut t'en servir pour les lignes suivantes
Messages postés
1
Date d'inscription
jeudi 13 mai 2021
Statut
Membre
Dernière intervention
13 mai 2021

Bonjour ,
tu as pu réaliser un jeu mais tu as un problème pour enregistrer un texte ?
tu peux commencer à lire :
https://openclassrooms.com/fr/courses/1894236-programmez-avec-le-langage-c/1896398-lisez-et-modifiez-des-fichiers
C'est pas super compliqué
Messages postés
16040
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 juin 2021
711
Bonjour Kevin,
tu as pu réaliser un jeu mais tu as un problème pour enregistrer un texte ?

si Roboto123 est au début de sa formation, il est tout à fait possible que son cours lui ait appris à faire un morpion en mode console sans avoir abordé la lecture ou l'écriture dans un fichier texte....
Le problème est surtout dans la structure du fichier texte de manière qu'il soit enregistrer d'une telle manière.
Toto Mateo
1 0
0 1
Messages postés
16040
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 juin 2021
711
As tu lu le tuto que Kevin t'as proposé?
>
Messages postés
16040
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 juin 2021

Bien sûr, mais il ne démontre pas comment faire pour structurer le fichier comme mentionné plus haut.
Messages postés
14
Date d'inscription
vendredi 14 mai 2021
Statut
Membre
Dernière intervention
31 mai 2021

Bonjour!

J'ai un programme à vous proposer, je ne suis pas sûr que ce soit le plus optimisé possible, mais ça fonctionne pour moi!


#include <fstream> // <-- Pour lire et écrire dans le fichier "Score.txt"
#include <string> // <-- Pour pouvoir déclarer les variable "string"
#include <iostream> // <-- Pour activer la console

using namespace std; // <-- IMPORTANT

int main()
{
int score1 = 1; // <-- Les variables "int" contenant les scores
int score2 = 0;

std::string joueur1 = "Toto"; // <-- Tes variables "string" (chaîne de caractères) contenant les pseudos
std::string joueur2 = "Mateo";

std::string Texte[100]; // <-- Création d'un tableau comportant un certain nombre de valeurs

int Prenoms = 0;
int Nbr = 0;


// <-- Le code de ton jeu


string const NomFichier = "EMPLACEMENT DU FICHIER"; //Chemin d'accès au fichier

ifstream Score("EMPLACEMENT DU FICHIER"); //Ouverture du fichier en mode "lecture"

if(Score)
{
std::string ligne;

while (getline(Score, ligne))
{
if (ligne == joueur1 + " " + joueur2)
{
Prenoms = 1;
}

Nbr = Nbr + 1;
Texte[Nbr] = ligne;
}
}
else
{
std::cout << "ERREUR: Impossible d'ouvrir le fichier!" << std::endl;
}


ofstream ScoreE(NomFichier.c_str()); //Ouverture du fichier en mode "écriture"

if (ScoreE)
{
if (Prenoms == 1)
{
for (int i = 1; i <= Nbr; ++i)
{
ScoreE << Texte[i] << endl;
}
ScoreE << score1 << " " << score2;
}
else
{
for (int i = 1; i <= Nbr; ++i)
{
ScoreE << Texte[i];

if (Nbr >= 1)
{
ScoreE << endl;
}
}

ScoreE << joueur1 << " " << joueur2 << endl << score1 << " " << score2;
}
}
else
{
std::cout << "ERREUR: Impossible d'ouvrir le fichier!" << std::endl;
}
}


Et si tu veux afficher les scores précédents:


for (int i = 1; i <= Nbr; ++i)
{
std::cout << Texte[i];

if (Nbr >= 1)
{
std::cout << endl;
}
}

std::cin.ignore();
Si j'inclus du sfml est-ce que le fonctionnement reste le même?
Messages postés
14
Date d'inscription
vendredi 14 mai 2021
Statut
Membre
Dernière intervention
31 mai 2021

Je ne sais pas... Je pense que ça ne changera rien.
J'ai remarquer que si j'inclus du sfml l'affichage change comparativement à l'affichage en console. Si nous faisons un affichage ligne par ligne cela affiche par dessus la ligne précédente en sfml. Savez-vous comment arranger ce problème ?
Messages postés
14
Date d'inscription
vendredi 14 mai 2021
Statut
Membre
Dernière intervention
31 mai 2021
> Hilda
Bonjour,
Dans ce cas là, on peut essayer d inverser le programme (en lisant de la dernière à la première ligne)

 for (int i = Nbr; i > 0; ++i)
 {
  std::cout << Texte[i];

  if (Nbr >= 1)
  {
   std::cout << endl;
  }
 }

 std::cin.ignore();