using System;
using System.IO;
using System.Text;
namespace GameNumeric
{
class Program
{
const int size = 100;
const int timeLimitGame = 60;
static void Main(string[] args)
{
// Объявление переменных
#region Variables
// Объявление переменных первого и второго числа
int [] firstNumber = new int[size];
int [] secondNumber = new int[size];
// Объявление переменых суммы и разности
int[] amount = new int[size];
int[] difference = new int[size];
// Ответ пользователя
int[] ans = new int[size];
string s = "";
// Служебные переменые
int count = 0;
int countUseFile = 0;
int theBestCount = 0 ;
string theBestTime = "";
string fileName = "log.txt";
// Массив для работы с логом файла
string[] dataFile;
#endregion
// Указываем лимит времени работы программы
DateTime timeLimit = DateTime.Now.AddSeconds(timeLimitGame);
// Наполение масивов случайными числами
#region RandomNumbers
Random rand = new Random();
for (int i = 0; i < firstNumber.Length; i++)
{
// Наполняем переменые значениями
firstNumber[i] = rand.Next(10, 100);
secondNumber[i] = rand.Next(10, 100);
// Получаем разность, если она отрицательна то перезаписываем
while (firstNumber[i] < secondNumber[i])
{
firstNumber[i] = rand.Next(10, 100);
secondNumber[i] = rand.Next(10, 100);
difference[i] = firstNumber[i] - secondNumber[i];
}
difference[i] = firstNumber[i] - secondNumber[i];
// Получаем сумму
amount[i] = firstNumber[i] + secondNumber[i];
}
#endregion
// Начало исполнения программы
for (int i = 0; i < firstNumber.Length && DateTime.Now < timeLimit; i++)
{
// Зачем то завел переменую для выполнения случайного
// арифметической операции, в данном случае + или -
int j = rand.Next(0, 2);
switch (j)
{
case 0:
{
// Игра сумма
Console.Write("{0} + {1} = ", firstNumber[i], secondNumber[i]);
s = Console.ReadLine();
ans[i] = int.Parse(Test(s));
if (ans[i] == amount[i])
{
Console.WriteLine("Верно");
Console.WriteLine("");
count++;
}
break;
}
case 1:
{
// Игра Разность
Console.Write("{0} - {1} = ", firstNumber[i], secondNumber[i]);
s = Console.ReadLine();
ans[i] = int.Parse(Test(s));
if (ans[i] == difference[i])
{
Console.WriteLine("Верно");
Console.WriteLine("");
count++;
}
break;
}
default:
Console.WriteLine("Что то пошло не так, наверное рандом затупил");
break;
}
if (i == count)
break;
}
// Работа с файлом, Проверка на существование
if (File.Exists(fileName))
{
// Считываем все строки из файла в масив строк
dataFile = File.ReadAllLines(fileName);
/* Содержание файла:
*
* dataFile[0]) Время лучшей игры
* dataFile[1]) Рекорд отгадываний в минуту
* dataFile[2]) Количество запусков программы
*
*/
// Парсим количество запуской приложения
countUseFile = int.Parse(dataFile[2]);
countUseFile++;
// Парсим время лучшей игры
theBestTime = dataFile[0];
// Парсим количество успешных решений
theBestCount = int.Parse(dataFile[1]);
if (theBestCount < count)
{
theBestCount = count;
theBestTime = timeLimit.ToString();
}
}
else
{
dataFile = new string[3];
countUseFile = 1;
theBestTime = timeLimit.ToString();
}
// Перезаписываем в файл
dataFile[0] = theBestTime.ToString();
dataFile[1] = theBestCount.ToString();
dataFile[2] = countUseFile.ToString();
File.WriteAllLines(fileName, dataFile);
// Вывод Лучшей информации
/* Console.WriteLine(" Лучшее время: " + dataFile[0]);
Console.WriteLine(" Рекорд: " + dataFile[1]);
Console.WriteLine(" Игра по счету: " + dataFile[2]); */
Console.Clear(); ;
Console.WriteLine(" Финиш! Поздравляем! ");
Console.WriteLine();
Console.WriteLine("Успешных решений в этой игре : {0}", count);
Console.WriteLine("Время игры {0}:{1} " , timeLimit.Hour.ToString() , timeLimit.Minute.ToString() );
Console.WriteLine();
Console.BackgroundColor = ConsoleColor.White;
Console.WriteLine(" -------------------------------------");
Console.WriteLine("| |");
Console.WriteLine("| Лучшее время: {0} |", dataFile[0]);
Console.WriteLine("| |");
Console.WriteLine("| Рекорд: {0} |", dataFile[1]);
Console.WriteLine("| |");
Console.WriteLine("| Игра по счету: {0} |", dataFile[2]);
Console.WriteLine("--------------------------------------");
Console.ReadKey();
}
public static String Test(string s)
{
if (String.IsNullOrEmpty(s))
return s = "0";
else
return s;
}
}
}