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

8. Описание метода menu()

Метод menu() описывает графический интерфейс главного меню. Меню состоит из 4 кнопок: Begin, Record, Spravka, Exit (рис .8.1).

Кнопки рисуются с помощью функций bar(); в цикле. Управление меню осуществляется мышкой. Считываются соответствующие координаты при нажатии на кнопку с помощью метода mov_mouse(3);, пользователь попадает в соответствующее подменю.

Рис. 8. 1. Главное меню игры

9. Описание метода record()

Метод record() содержит описание графики и запись файл ника, введенного во время авторизации, за которую отвечает метод registration(). Подменю Record состоит из окна, где содержится ник и соответствующие количество побед данного ника (рис. 9.1.). Причем, если в файле хранится несколько ников, то выводится на экран 10 самых лучших, отсортированных по убыванию количества побед.

Рис. 9. 1. Вывод в окне рекордов ника игрока и его количество побед

Рисуется окно так же с помощью функции в графическом режиме bar();. Так же есть кнопка выхода в главное меню. Она создана тоже с помощью функции bar();. Реализация выхода осуществляется при помощи цикла, в котором происходит считывание координат при нажатии на кнопку с помощью метода mov_mouse(3); и проверяется условие нажатия мыши в данную область кнопки, если условие верно, то происходит завершение выполнения метода record() с помощью функции return();.

Количество ников, длина ника, идентификатор ника, количество побед содержатся в файле, но в окне рекордов отображается только идентификатор ника и количество побед. Nick[i][j] – символьный двумерный массив ников, winer[i] – одномерный массив количества побед игрока, переменная n отвечает за количество ников в файле, length[i] – одномерный массив длин ников, при этом длина не превосходит 10. Считывание в файле данных происходит с помощью файловой переменной f. При этом ifstream f ("data.txt"); – означает связывание потоковой переменной с файлом, при этом в скобках указывается имя файла.

После считывания данных из файла, в цикле проверяется условие на неравенство количества побед в файле, то есть у разных ников различное количество побед, тогда, если это выполняется, то вызывается метод swap (winer[i],winer[i+1]), в котором передаются значения winer[i] и winer[i+1] из метода record(), которым соответствуют s и d и, далее в самой этой функции происходит сортировка обменом по убыванию количества побед. Для этого создаются дополнительные члены bufer, t. И, собственно, при помощи них в цикле происходит обмен значениями переменных.

Далее рассматривается случай, когда победы совпадают, но имена ников разные, то есть проверяется условие на равенство количества побед и, если они равны, то сортируются ники посимвольно в алфавитном порядке. Сортировка используется простая обменная. Создается дополнительный массив buf [k], который необходим для такого типа сортировки и хранит промежуточные значения, при этом одновременно сортируется и длина ника для того, чтобы правильно определять границы массива.