/Materials Пн, 25.11.2024, 16:10

Сайт методики довузовского обучения программированию
и проектной деятельности в информатике


Главная страница, Контакты, RSS
 
> Меню сайта

> Разделы новостей
Семинар [36]
Семинар по системному и прикладному программированию
Etc [15]
Разное
Конференция [16]
Открытая конференция исследовательских и проектных работ

> Архив новостей

> Партнеры

> Поиск

> Статистика

Главная » 2009 » Декабрь » 25 » Простая компьютерная игра «Лабиринт» на языке программирования С++: этапы реализации
Простая компьютерная игра «Лабиринт» на языке программирования С++: этапы реализации
Алексей Куликов
8 класс

Автор: Алексей Куликов, 8 класс
Руководитель: Дединский И.Р., МФТИ

...Началось все с того, что когда в восьмом классе начались уроки программирования, наш учитель сразу запретил нам играть в компьютерные игры. Исключения, по его словам, могли составлять лишь игры, написанные самостоятельно. Тогда я решил написать собственную простую двумерную (2D) игру под Windows на основе графической библиотеки TXLib. Потому что это самое простое, что можно было сделать, начиная изучать программирование.

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

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

Работа была начата с создания статического изображения (рис. 2), которое рисовалось непосредственно с помощью функций библиотеки TXLib. Для рисования линий была исполь-зована функция txLine (х1, у1, х2, у2), которая рисует линию из точки с координатами х1, у1 в точку с координатами х2, у2. Для изменения цвета была использована функция txSetColor (цвет), которая устанавливает цвет рисующихся объектов, а для вывода на экран круга - функция txCircle (х, у, радиус), которая рисует круг заданного радиуса в заданной точке. (Полное описание всех функций библиотеки есть в ее системе помощи, а сама библиотека бесплатна и доступна на сайте http://ded32.net.ru.)


Рис. 1. Основной алгоритм.

Рис. 2. Рисование изображения.

На следующем этапе было реализовано движение персонажей (рис. 3), т.е. их координаты начали плавно изменяться с течением времени. Это можно сделать только с помощью цикла, например, конструкции цикла while:

    while (условие)
    {   
    /* действия, которые выполняются, если условие верно */
    }

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

После этого можно реализовать управление героем мышью или клавиатурой. Управление мышью: необходимо использовать функции txMouseX() и txMouseY(), которые возвращают значения координат мыши по осям Х и Y, и возвращаемые значения использовать как координаты для какого-то объекта (рис. 4).


Рис. 3. Движение персонажей.

Рис. 4. Управление мышью.

Поскольку появилась возможность управлять действиями персонажа, то написанная программа - уже игра, и значит, в ней должна быть возможность выиграть или проиграть. Легко добавить эту возможность, использовав реакцию на цвет (функцию txGetPixel (х, у), возвращающую цвет нужного пикселя), т.е. если, например, цвет под персонажем совпадает с цветом стены, то игрок проиграл.

Для управления с клавиатуры можно использовать функцию GetAsyncKeyState (код клавиши), которая проверяет, нажата ли указанная клавиша в момент вызова этой функции.

В игре должна быть приятная графика, а то играть будет совсем не интересно. Рисовать эту "приятную графику" геометрическими фигурами по координатам очень сложно. Поэтому изображения можно заранее нарисовать в любом графическом редакторе, сохранить в формате .bmp, после этого загрузить их в программу функцией txLoadImage (имя файла изображения) и вывести на экран с помощью функции txBitBlt. В конце загруженное изображение надо обязательно удалить, чтобы оно не занимало место в оперативной памяти компьютера и не отнимало ресурсы у Windows (рис. 6).


Рис. 5. Управление клавиатурой.

Рис. 6. Графика.

Теперь можно добавить простейшего врага, который будет патрулировать ту или иную территорию, путем введения в программу ещё двух переменных, хранящих значения его координат, и их изменения по какому-то закону (рис 7).

Можно также добавить анимацию объектов путем добавления счетчика, изменения его на единицу каждый ход цикла и вывода определенного изображения в зависимости от показаний счетчика (например, в зависимости от остатка от деления на два, рис. 8). Само собой, количество картинок, которые нужно будет заготовить для отрисовки анимированных персонажей, увеличится.


Рис. 7. Добавление врагов.

Рис. 8. Реализация простой анимации.

После этого можно, наконец, начать играть на уроках совершенно спокойно. :) Правда, только в эту игру - развивая ее и тестируя. Но, если она надоела, всегда можно начать писать новую!


Категория: Конференция | Просмотров: 5322 | Добавил: ded32
> Инструменты

Orphus


О рекламе на сайте ↑

Сайт рас­по­ло­жен на бес­плат­ном хос­тин­ге, пра­ви­ла ко­то­ро­го за­пре­ща­ют вы­ре­зать ре­к­ла­му, встав­ляе­мую авто­ма­ти­чес­ки, в том чис­ле в ви­де авто­ма­ти­чес­ко­го от­кры­тия стра­ниц дру­гих сай­тов. Ав­тор это­го сай­та не име­ет ни­ка­ко­го отно­ше­ния к этой ре­кла­ме.


> Загрузить

> Основные материалы

> Примеры проектов



Copyright (c) И.Р. Дединский, 2006-2024
Никакая часть материалов данного сайта или его подразделов не может быть прямо или косвенно процитирована или упомянута без действующей активной ссылки на данный сайт
...

Хостинг от uCoz

MasterHost Orphus