Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
готовый отчет курсовая 2011.doc
Скачиваний:
6
Добавлен:
05.12.2018
Размер:
1.18 Mб
Скачать

6. Описание метода privet()

Данный метод отвечает за приветствие, которое пользователь видит на экране при заходе в программу (рис. 6.1). Эффект анимации создан с помощью стандартных функций графического режима, таких как: cleardevice(); – очистка экрана, setbkcolor(); – установка цвета фона экрана, delay(); – задержка, outtextxy(); – вывод текста на экран в зависимости от заданных координат, settextstyle(); – установка стиля текста, setcolor(); – установка цвета текста. За счет того, что функции выполняются в цикле, достигается эффект анимации.

Рис. 6.1. Приветствие игрока

7. Описание методов registration() и enter()

Метод описывают авторизацию игрока при заходе в игру, которая изображена на рисунке 7.1.

Рис. 7. 1. Авторизация пользователя

На экране игроку предоставляется возможность нажать на одну из двух кнопок в зависимости от того, хочет ли он зарегистрироваться под новым ником или сменить ник, либо зайти под уже зарегистрированным ником. Кнопки нарисованы с помощью функции bar();. Считывание нажатия на кнопки происходит с помощью метода подключения мыши mouse(1); и считывания координат мыши mov_mouse(3);. Далее в зависимости от нажатия игрока на кнопку, вызывается метод enter(0);, которой передается значение члена класса authoriz=0, которое указывает на введение старого ника и, соответственно, authoriz=1 на введение нового ника.

Метод enter (int authoriz) рисует экранную клавиатуру пользователю и окно для ввода ника (рис. 7.2) с помощью стандартных функций графического режима.

Рис. 7. 2. Экранная клавиатура для ввода ника

Клавиатура состоит из кнопок с латинскими буквами и двух кнопок – Finish и Back. Максимальная длина ника составляет 10 символов. Кнопка Back позволяет игроку при вводе ника корректировать ошибку набора в случае неверного набора символа.

Затирание символа происходит в массиве old_nick[u] для уже существующего ника или new_nick[u] для нового ника. Член класса ASCII хранит значение символа в таблице ASCII и, если символ введен неверно, то элемент массива затирается пустым символом, для которого установлен цвет с помощью функции setcolor(). Неверный символ закрашивается в цвет окна для ввода. Кнопка Finish предназначена для завершения ввода ника. Переменная Finish принимает значение 1, когда происходит считывание координат кнопки Finish. Это означает, что ввод ника закончен. И далее пользователь переходит в главное меню. Считывание латинских символов осуществляется с помощью оператора switch().

Если пользователь нажимает на кнопку Enter your nick, то есть член класса authoriz==1, то вызывается метод find (u);, члену класса u соответствует длина ника, значение которой передается из метода enter(), в соответствие от значения члена authoriz. Если authoriz==1, то в length_new_nick лежит значение u, иначе, если authoriz==0, то в length_old_nick лежит тоже значение u. То есть в метод find(u); передается длина либо нового ника, либо длина старого ника.

Далее файл открывается для чтения. С помощью файловой переменной f считываются данные из файла: длина ника, количество побед, имя ника.

Когда пользователь вводит новый ник, то длина нового ника сохраняется в length_new_nick, а в символьном одномерном массиве new_nick[j] сохраняется имя нового ника, и далее проверяется условие на совпадение длины ников в файле с новой длиной ника, и чтобы избежать лишних проверок, сразу отсеиваются ники с длиной, которая не соответствует длине нового ника, и тут же ники с совпадающей длиной проверяются посимвольно.

В count накапливается в процессе выполнения цикла количество таких совпавших символов и, если длина нового ника совпадает еще и с количеством совпавших символов ников (count), то тогда на экран выводится сообщение о том, что такой ник уже существует, и следует ввести новый ник (рис. 7.3). В противном случае он ничего не выводит.

Рис. 7.3. Вывод на экран сообщение