Вывод таблицы результатов мини-игры в текстовый файл

372
28 февраля 2017, 14:35

Здравствуйте! Такая проблема. Хочу вывести таблицу результатов примитивного вида: Ниже мой недописанный код. Получается, что каждый раз файл перезаписывается, не пойму почему. Только начал изучать файлы, не все методы знаю. Было бы хорошо, если бы вы показали, как такую таблицу получить.

using System;
using System.IO;
namespace GuessNumber
{
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Как вас зовут? ");
        StringReader sr = new StringReader(Console.ReadLine());
        StreamWriter sw = new StreamWriter("out.txt");
        sw.WriteLine(sr.ReadToEnd());
        int min = int.Parse(Console.ReadLine());
        int max = int.Parse(Console.ReadLine());    

        int maxCount = (int)Math.Log(max - min + 1, 2)+1;
        int count = 0;
        Random rnd = new Random();
        int guessNumber = rnd.Next(min, max);
        Console.WriteLine("Компьютер загадал число от {0} до {1}. Попробуйте угадать его за {2} попыток", min, max, maxCount);
        int n;
        do
        {
            count++;
            Console.Write("{0} попытка. Введите число:", count);
            n = int.Parse(Console.ReadLine());
            if (n > guessNumber) Console.WriteLine("Перелет!");
            if (n < guessNumber) Console.WriteLine("Недолет!");
        }
        while (count < maxCount && n!=guessNumber);
        if (n == guessNumber) { Console.WriteLine("Поздравляю! Вы угадали число за {0} попыток", count); }
        else { Console.WriteLine("Неудача. Попробуйте еще раз. Это было число: {0}", guessNumber); }
        sw.Write("{0", count);
        sr.Close();
        sw.Close();
        Console.ReadKey();
    }
}
}

В файл попадает только имя и на следующей строчке количество попыток.

Answer 1

По-умолчанию StreamWriter переписывает данные в файле. Для того, что бы дописывать в конец файла, нужно выставить флаг append в конструкторе в true. Как уже сказали выше:

StreamWriter sw = new StreamWriter("out.txt", append: true);

Для того, что бы у вас получилась форматированная таблица, воспользуйтесь составным форматированием. При запуске приложения проверяйте файл на существование. Если файла нет, то создайте его и допишите в него заголовок, а при сохранении результата дописывайте строку.

В этой строчке код выкинет исключение System.FormatException так как у вас потерялась }:

sw.Write("{0", count);
READ ALSO
Спрайты, Тайтлы и их разрешение в Unity 3d

Спрайты, Тайтлы и их разрешение в Unity 3d

Приветствую! Клепаю 2D игрушку на небезызвестном двигателе Unity3DВозник вопрос сразу же после отрисовки первого уровня

327
Как удалить используемый файл

Как удалить используемый файл

Я пишу на C# программу, которая с помощью библиотеки log4net ведет лог в отдельный файлКогда лог-файл переполняется, он должен быть удален

238
ComboBox с элементом &ldquo;Не выбрано&rdquo;

ComboBox с элементом “Не выбрано”

Мне нужен ComboBox с постоянным элементом "Не выбрано", который означает, что SelectedValue равно null

373
Main возвращает неверное значение

Main возвращает неверное значение

Есть программа, которая по выполнению должна вернуть 0 или 1 в случае успеха/отказаОперации можно прервать сочетанием клавиш

255