Смекни!
smekni.com

Игровая программа 15 (стр. 2 из 5)


Когда пользователь нажимает ввод, то происходит выход из цикла и, то значение, которое имеет параметр-переменная процедуры menu передается в оператор варианта.Итак, если значение параметра 0,то начинается игра.


В этом случае осуществляется очистка экрана. Числу шагов, сделанных пользователем присваивается значение ноль. Далее следует создание интерфейсной части игры. В частности печать на

экране различных сообщений (как выйти из игры, число ходов, сделанных игроком), заливка фона экрана, рисование коробочки с последующей ее раскраской. До тех пор пока игрок не сделал ни одного перемещения число шагов равно нулю и на экране просто печатается значение 0.

Как только игрок поизведет первую перестановку, колличество шагов увеличивается на единицу и это сразу отображатся на экране. Для этого каждый раз приходится обновлять ту область экрана, где осуществляется печать результата. Это достигается путем рисования в это области каждый раз нового графического объекта, в данном случае прямоугольной области. Цвет последней на порядок светлее, чем цвет, которым выводится число перестановок. Так как колличество перемещений постоянно изменяется, то данная операция(обновление области) должна осуществляться циклически, Поэтому она находится в основном цикле с постусловием, который будет описан чуть позже. Отмечу еще одну не мало важную деталь, для того, что бы вывести результат на экран необходимо предварительно преобразовать число в последовательность символов.

После того как разработана интерфейсная часть игры(хотя по ходу будут некоторые дополнения) производится заполнение массива случайными числами. Для этого сначала осуществляется инициализация генератора случайных чисел. Непосредственно после этого происходит заполнение массива. Последний элемент массива задается равным 0.

Mas[16]:=0

Первый элемент массива задается до выполнения цикла следующим образом:

Mas[1]:=random[14]+1

Так как процедура random в данном случае выбирает целое число в интервале от 0 до 14, то необходимо добавление к этому числу 1, что бы избежать значение 0. Заполнение остальных элементов массива осуществляется посредством цикла с постусловием. В цикле происходит задание очередного элемента массива с помощью процедуры random и проверка не равен ли данный элемент предыдущим элементам. Если оказывается, что

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

ря работает до тех пор, пока не будет заполнен весь массив.

Цикл с параметром используется для того, чтобы перебрать все элементы массива до n-1 и проверить, нет ли среди них элемента, значение которого совпадает со значением n-ого элемента. Если такового не оказывается, то n-ому элементу присваивается текущее значение.

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

В качестве фишки игрового поля используется параллелепипед, координаты которого меняются с помощью двух циклов с параметром. Таким образом, вырисовываются все 16 фишек.

После того как ‘оформлено‘ игровое поле, случайным образом сформирован массив чисел, следует этап, на котором происходит обработка результата нажатия пользователем клавиши. Игрок активизирует одну из фишек при помощи клавиш UP, DOWN, LEFT,

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

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

Если обмен произошел, то число шагов увеличивается на единицу и производится печать на экране нового числа (данная процедура была описана на начальной стадии алгоритмизации).

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

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

Вывод таблицы рекордов

Прежде всего, осуществляется считывание результатов из файла.

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

Вывод помощи

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

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

данные распечатываются блоками по 24 строки. Каждый раз проверяется условие, закончен ли файл и не нажал ли игрок Esc.После каждого блока пользователь должен подтвердить продолжение вывода помощи, нажав клавишу Enter, либо прервать вывод, нажав клавишу Esc. И в первом и во втором случае игрок попадает в меню программы <15>.