Guardar puntuación en archivo de texto

Roboto123 -  
 Elecsupchi -
Hola, voy a crear el juego de Tic-tac-toe y me gustaría guardar en un archivo de texto el puntaje del jugador ganador y del jugador perdedor para que, al entrar en el menú de mi juego, haya la opción "Score" y al pulsarla podamos ver los puntajes anteriores.

Ejemplo de archivo txt

Toto Mateo
1 0
0 1

6 respuestas

  1. Usuario anónimo
     
    El formato del archivo, en sí, no es un problema específico de escribir en el archivo; para que aparezca en la consola sería lo mismo.
    Pero tu pregunta era
    Guardar puntuación en archivo de texto
    así que te orientaron hacia la parte de escritura de archivos...

    En fin.

    Supongo que tienes una o varias variables que almacenan los nombres de los jugadores. Y bien, debes usarlas para escribir la primera línea.
    También supongo que tienes una o varias variables que almacenan los resultados de las partidas. Y bien, debes usarlas para las líneas siguientes

    --
    Cuando era pequeño, el mar de Morte no era sino enfermo.
    George Burns
    1
  2. kevinG73 Mensajes publicados 1 Estado Miembro
     
    Hola ,
    ¿has logrado hacer un juego pero tienes un problema para guardar un texto?
    puedes empezar a leer:
    https://openclassrooms.com/fr/courses/1894236-programmez-avec-le-langage-c/1896398-lisez-et-modifiez-des-fichiers
    No es muy complicado
    0
    1. Usuario anónimo
       
      Hola Kevin,
      ¿pudiste realizar un juego pero tienes un problema para guardar un texto?

      Si Roboto123 está al comienzo de su formación, es totalmente posible que su curso le haya enseñado a hacer un tic-tac-toe en modo consola sin haber abordado la lectura o escritura en un archivo de texto....
      0
  3. Roboto123
     
    El problema está principalmente en la estructura del archivo de texto de modo que se registre de esa manera.
    Toto Mateo
    1 0
    0 1
    0
    1. Usuario anónimo
       
      ¿Has leído el tutorial que te propuso Kevin?
      0
      1. Laurent > Usuario anónimo
         
        Claro, pero no demuestra cómo hacerlo para estructurar el archivo como se mencionó arriba.
        0
  4. Elecsupchi
     
    ¡Hola! Tengo un programa para proponerte, no estoy seguro de que sea lo más optimizado posible, ¡pero funciona para mí!
    #include <fstream> // <-- Para leer y escribir en el archivo "Score.txt"
    #include <string> // <-- Para poder declarar las variables "string"
    #include <iostream> // <-- Para activar la consola
    
    using namespace std; // <-- IMPORTANTE
    
    int main()
    {
     int score1 = 1; // <-- Las variables "int" que contienen las puntuaciones
     int score2 = 0;
    
     std::string jugador1 = "Toto"; // <-- Tus variables "string" (cadena de caracteres) que contienen los pseudónimos
     std::string jugador2 = "Mateo";
    
     std::string Texte[100]; // <-- Creación de un arreglo que contiene varias valores
    
     int Prenoms = 0;
     int Nbr = 0;
    
    
    
     // <-- El código de tu juego
    
     string const NomFichier = "EMPLACEMENT DU FICHIER"; // Ruta del archivo
    
     ifstream Score("EMPLACEMENT DU FICHIER"); // Apertura del archivo en modo "lectura"
    
     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()); // Apertura del archivo en modo "escritura"
    
     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();
    
    0
  5. Laurent
     
    Si incluyo SFML, ¿el funcionamiento permanece igual?
    0
  6. Elecsupchi
     
    No sé… Creo que no cambiará nada.
    0
    1. Hilda
       
      Me he dado cuenta de que si incluyo SFML, la visualización cambia en comparación con la consola. Si mostramos la salida línea por línea, en SFML se escribe por encima de la línea anterior. ¿Sabes cómo solucionar este problema?
      0
      1. Elecsupchi > Hilda
         
        Hola,
        En este caso, podemos intentar invertir el programa (leyéndolo de la última a la primera línea)

         for (int i = Nbr; i > 0; ++i) { std::cout << Texte[i]; if (Nbr >= 1) { std::cout << endl; } } std::cin.ignore(); 
        0