Ejemplo n.º 1
0
        //Старт игры
        public void Start()
        {
            Console.WriteLine("   GAME WITH WORDS!   \n");
            string[] text;
            string[] example;
            //Читаем из файлов
            //Проверим наличие файлов
            if (!System.IO.File.Exists("text.txt") || !System.IO.File.Exists("top10.txt"))
            {
                Console.WriteLine("Требуемые файлы text.txt или top10.txt отсутствуют!");
                return;
            }; ;

            //Потоки для чтения
            //Текст с примерами строк: text.txt
            StreamReader sr1 = new StreamReader("text.txt", Encoding.GetEncoding(1251));//Encoding - для корректного считывания с файла
            //Текст top10.txt
            StreamReader sr2 = new StreamReader("top10.txt", Encoding.GetEncoding(1251));//Encoding - для корректного считывания с файла


            //Считываем всё
            text = sr1.ReadToEnd().Split('\n');//Считываем все числа в массив строк. Как разделитель - берется знак пробела ' ';
            example = sr2.ReadToEnd().Split('\n');
            //Файлы ссчитали, закрываем файлы для чтения
            //Закрываем потоки.
            sr1.Close();
            sr2.Close();
            //Переводим из temp всех участников-победителей в массив структуры Members
            Member[] members = new Member[11];
            //Инициализируем переменную по умолчанию
            int memLength = 0;

            //Преобразуем в данные об участнике для структуры Members 
            for (int i = 0; i < example.Length && i < 10; i++)
            {
                if (example[i].CompareTo("") == 0) break;
                string[] m = example[i].Split(' ');
                members[i] = new Member(m[0], int.Parse(m[1]));
                memLength++;
            }

            //Запускаем игру
            ToGame(members, text, memLength);
        }
Ejemplo n.º 2
0
        //Функция проверки на продолжение игры
        private static bool ContinueGame(Member[] members, int memLength)
        {
            string word;
            Console.WriteLine("\n ПРОДОЛЖАТЬ ИГРУ? (Введите: Да = 1, Нет = 0) \n");
            //Флаг правильного ввода 0 или 1
            bool b = true;
            while (b)
            {
                word = Console.ReadLine();

                if (word.CompareTo("0") == 0)
                {
                    Console.WriteLine(" ВЫХОД! Нажмите Enter.. \n");
                    b = false;

                    //Реализуем выход из программы и запись в top10.txt
                    StreamWriter sw = new StreamWriter("top10.txt", false, Encoding.GetEncoding(1251));//false - перезапись, Encoding - для корректного считывания с файла

                    for (int i = 0; i < 10 && i < memLength; i++)
                    {
                        sw.WriteLine(members[i].FIO + " " + members[i].time);
                    }

                    sw.Close();
                    //Выходим
                    Console.ReadKey();
                    return false;

                }
                else if (word.CompareTo("1") == 0)
                {
                    Console.WriteLine(" ПРОДОЛЖАЕМ ИГРУ! \n");
                    b = false;
                }
                else
                {
                    Console.WriteLine(" Введите или 0=Нет, или 1=Да \n");
                }

            }

            return true;
        }
Ejemplo n.º 3
0
        //Функция самой игры
        private static void ToGame(Member[] members, string[] text, int memLength)
        {
            Random r = new Random();
            //Бесконечный цикл с уловием выхода
            while (true)
            {

                //Просим ввести слово и считаем время написания слова
                Console.WriteLine("\n ВВЕДИТЕ ПРИВЕДЕННЫЙ ТЕКСТ через Enter:");
                string word_result = text[r.Next(text.Length - 1)];
                Console.WriteLine(word_result);  //Рандомно выдергиваем строку из нашего текста

                DateTime start = new DateTime();
                start = DateTime.Now;

                string word = Console.ReadLine();

                DateTime finish = new DateTime();
                finish = DateTime.Now;

                int result = (finish - start).Milliseconds;//Переводим в миллисекунды
                //Если слово введено верно - проводим проверку в массиве структур Members

                word_result = word_result.Remove(word_result.Length - 2);
                if ((word_result).CompareTo(word) == 0)
                {
                    //Проверка - есть ли элементы больше заданного и и если есть - то добавляем человека в список
                    bool proverka = false;//Проверка наличия в списке больших результатов
                    //Сначала отсортируем наш список, если в нем элементов больше 1
                    if (memLength > 1)
                    {
                        for (int i = 0; i < 10 - 1 && i < memLength - 1; i++)
                            for (int j = 0; j < 10 - i - 1 && j < memLength - i - 1; j++)
                            {
                                if (members[j].time > members[j + 1].time)
                                {
                                    Member tmp = members[j];
                                    members[j] = members[j + 1];
                                    members[j + 1] = tmp;
                                }
                            }
                    }; ;
                    //Ищем результат меньше нашего или же пустое место, если оно существует
                    int poz = 0;
                    for (; poz < memLength && poz < 10; poz++)
                    {
                        if (members[poz].time >= result)
                        {
                            proverka = true; break;//Выходим из цикла, если нашли
                        }
                    }
                    if (poz < 10) proverka = true; ;
                    //Если можно записать результат - то записываем!
                    if (proverka == true)
                    {
                        //Сначала найдем элемент, который нужно "потеснить" и вставляем наш результат. Т.е. 3 этапа
                        //Вставляем результат
                        Console.WriteLine("Вы вошли в ТОП10! Введите своё ФИО в формате ФАМИЛИЯ_ИМЯ:");
                        string fio = Console.ReadLine();

                        //Проверим на правильность ФАМИЛИЯ_ИМЯ, если с пробелом - это ошибка
                        while ((fio.Contains(' ') == true))
                        {
                            Console.WriteLine("Неправильный ввод фамилии с пробелом! Введите идентификатор формата ФАМИЛИЯ_ИМЯ!");
                            fio = Console.ReadLine();
                        }

                        //Записываем пользователя и сохраняем того пользователя, на место которого его записали
                        Member tmp = members[poz];
                        members[poz] = new Member(fio, result);
                        memLength++;


                        //Cдвигаем
                        for (int j = poz + 1; j < 10 && j < memLength; j++)
                        {
                            Member tmp2 = members[j];
                            members[j] = tmp;
                            tmp = tmp2;
                        }

                        //    }
                        //}
                    }
                }
                else
                    Console.WriteLine("Неверный ввод! \n");
                //Иначе - спрашиваем, продолжать или нет игру?
                //Спрашиваем о продолжении игры

                if (ContinueGame(members, memLength) == false) return;//Выходим, если игру не нужно продолжать

            }

        }