0

The Game is running correct but now I need/want to print the result from the game to a text file using streamwriter. How do I make that happen?

To extract the info from the result?

Been trying different kinds of things but haven´t been able to do it just yet. So if there is anybody that could help me with this I would be grateful.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace Dartgame.Simulator
{
    class Program
    {   //Här ska simulatorn starta i main för min Simulator, Christopher
        public static void Main(string[] args)
        {
 
            Game mitt_spel = new Game();
            mitt_spel.Run_game();

            Console.Write("Press any key to continue ");
            Console.ReadKey(true);
        }
    }

    class Game
    {
        private List<Player> player_list = new List<Player>();
        private bool keepGoing = true;

        public void Run_game()
        {

            int winner = 301;
            Random slumptal = new Random();
            int turn1;
            int turn2;
            int turn3;

            // Här ska programmet köras

            Console.WriteLine(" Välkommen till Dartspels simulatorn! ");
            Console.WriteLine("**************************************");
            Console.WriteLine("Varje spelare kastar 3 pilar åt gången och får ett slumpat poäng. ");
            Console.WriteLine("Spelet avslutas när någon spelare når 301poäng eller över");
            player_list.Add(new Player("Christopher"));
            player_list.Add(new Player("Suzanne"));

            do
            {
                foreach (var Player in player_list)
                {
                    turn1 = slumptal.Next(0, 20);
                    turn2 = slumptal.Next(0, 20);
                    turn3 = slumptal.Next(0, 20);
                    Player.Add_turns(turn1, turn2, turn3);
                    if (Player.Calculate_Total() >= winner)
                    {
                        keepGoing = false;
                    }
                }
            }
            while (keepGoing);

            foreach (var Player in player_list)
            {
                Player.Print_Turns();
            }
        }
    }

    class Player
    {
        private string name;
        private List<Turns> turns_list = new List<Turns>();

        /* Om inte spelare skriver in ett namn får han ett default namn, en konstruktor är
         skapad för en spelare */
        public Player(string _name = "Zion")
        {
            name = _name;
        }

        // Används för att lägga på omgång/turn i spelet
        public void Add_turns(int turn1, int turn2, int turn3)
        {
            turns_list.Add(new Turns(turn1, turn2, turn3));
        }
        // Används för att beräkna totala poäng.
        public int Calculate_Total()
        {
            int total = 0;
            foreach (var Turns in turns_list)
            {
                total = total + Turns.Get_Score();
            }
            return total;
        }
        // Används för att skriva ut total poäng som lagrats i turns_list  
        public void Print_Turns()
        {
            Console.WriteLine("\n Poäng statistik för spelare {0}: ", name);
            Console.WriteLine("******************************************\n");
            foreach (var Turns in turns_list)
            {
                Console.WriteLine(Turns);
            }
            Console.WriteLine("******************************************\n");
            Console.WriteLine("Totala poängen för spelaren är {0} poäng", Calculate_Total());

        }

        public override string ToString()
        {
            return string.Format("Spelaren {0}", name, "fick poäng");
        }

    }
    class Turns
    {
        private int turnOne;
        private int turnTwo;
        private int turnThree;

        public Turns(int _turnOne, int _turnTwo, int _turnThree)
        {
            turnOne = _turnOne;
            turnTwo = _turnTwo;
            turnThree = _turnThree;
        }

        public int Get_Score()
        {
            int totalt;
            totalt = turnOne + turnTwo + turnThree;
            return totalt;

        }

        /* skriver jag ut ett race object så hämtar den sen infon från private
         * int turnOne , turnTwo osv  från klassen Turns*/
        public override string ToString()
        {
            return string.Format("Kast 1 : {0}, Kast 2 : {1}, Kast 3: {2}", turnOne, turnTwo, turnThree);
        }
    }

}
  • Be careful when you select tags for your questions! It's easy to select the wrong one sometime. Please [edit] your question to correct your mistake. – Some programmer dude Jul 21 '21 at 14:03
  • Instead of calling `Console.WriteLine` directly in your code, you might want to introduce your own custom output object with an interface that you use to output text. Then you can provide an implementation that writes to the console, or to a file, or even both. – Wyck Jul 21 '21 at 14:11
  • Not sure, what you want to write out, but [System.IO.File.WriteAllText()](https://learn.microsoft.com/en-us/dotnet/api/system.io.file.writealltext?view=net-5.0) may help, as questioning, how to write to file... – dba Jul 21 '21 at 14:11
  • You may just want to [_tee_](https://stackoverflow.com/questions/796476/displaying-windows-command-prompt-output-and-redirecting-it-to-a-file) the output of your process externally (to both the console and to a file) without making any code changes. – Wyck Jul 21 '21 at 16:58

1 Answers1

0

There are several ways of doing this, you can construct a string, create a file and print it to it, you can write to a file while playing etc.

Here is an example:

//Output results here
FileStream OutputFile = File.Create(SomeFilePath);
StreamWriter OutPutStream = new StreamWriter(OutputFile);

foreach (var Turns in turns_list)
{
    Console.WriteLine(Turns);
    OutPutStream.WriteLine(Turns.ToString());
}

OutPutStream.WriteLine("**Segrare: Suzanne**");
OutPutStream.Close();
OutputFile.Close();
rjtwins
  • 28
  • 4