Проста компютърна игра "Лабиринт" на етапи на внедряване на езика за програмиране C - 25 декември 2009 г.

. Всичко започна с факта, че когато започнаха часовете по програмиране в осми клас, нашият учител веднага ни забрани да играем компютърни игри. Изключения, според него, могат да бъдат само игри, написани независимо. Тогава реших да напиша моя собствена проста двуизмерна (2D) игра за Windows, базирана на графичната библиотекаTXLib. Защото това е най-лесното нещо, когато започнете да учите програмиране.

Основният алгоритъм на такива аркадни игри е показан на фиг. 1. Много е просто: първо текущото ниво на играта се изчертава като фон, след това враговете се движат и рисуват, след което персонажът се контролира от играча от клавиатурата. След това проверява дали играчът е загубил (в нашия случай, ако персонажът се е блъснал в стена) или е спечелил (ако нивото е завършено, дали враговете са победени и т.н.). В самия край главният герой на играта се показва на екрана.

Този алгоритъм е доста лесен, но това беше първата ми игра и затова беше решено да се работи на етапи, т.е. първо нарисувайте статична картина, след това добавете движението на героите, получавайки анимационен филм и след това, добавяйки реакция към клавишите, превърнете анимационния филм в игра.

Работата започна със създаването на статично изображение (фиг. 2), което беше начертано директно с помощта на функциите на библиотекатаTXLib. За чертане на линии е използвана функциятаtxLine (x1, y1, x2, y2),, която чертае линия от точка с координатиx1, y1до точка с координатиx2, y2.За промяна на цвета е използвана функциятаtxSetColor (цвят),, която задава цвета на рисуваните обекти, а за показване на кръг - функциятаtxCircle (x, y, радиус),която чертае окръжност с даден радиус в дадена точка. (Пълно описание на всички функции на библиотеката е в нейната помощна система и самата неяБиблиотеката е безплатна и достъпна на http://ded32.net.ru.)

проста

проста

На следващия етап беше реализирано движението на героите (фиг. 3), т.е. техните координати започнаха да се променят плавно с времето. Това може да се направи само с цикъл, като например конструкцията на цикълwhile:

В този момент функцията main() вероятно ще стане много голяма и трудна за разбиране и след това програмата ще трябва да бъде разделена на функции.

След това можете да управлявате героя с мишка или клавиатура. Контрол с мишката: необходимо е да използвате функциитеtxMouseX()иtxMouseY(),, които връщат стойностите на координатите на мишката по осите X и Y и използват върнатите стойности като координати за някакъв обект (фиг. 4).

компютърна
лабиринт

Тъй като стана възможно да се контролират действията на героя, написаната програма вече е игра, което означава, че трябва да е възможно да спечелите или загубите в нея. Лесно е да добавите тази функция, като използвате цветовия отговор (функцияtxGetPixel (x, y),връщане на цвета на желания пиксел), т.е. ако например цветът под героя съвпада с цвета на стената, тогава играчът е загубил.

За управление на клавиатурата можете да използвате функциятаGetAsyncKeyState (код на клавиша),която проверява дали посоченият клавиш е натиснат по време на извикването на тази функция.

лабиринт
етапи

Сега можете да добавите прост враг, който ще патрулира определена територия, като въведете още две променливи в програмата, които съхраняват стойностите на нейните координати и ги променят според някакъв закон (фиг. 7).

Можете също да добавите анимация към обекти, като добавите въртящ се бутон, промените го напо един на всеки оборот от цикъла и извежда определено изображение в зависимост от показанията на брояча (например в зависимост от остатъка от деленето на две, фиг. 8). Разбира се, броят на снимките, които ще трябва да бъдат подготвени за рисуване на анимирани герои, ще се увеличи.

проста
компютърна

След това най-накрая можете да започнете да играете в уроците съвсем спокойно. :) Вярно, само в тази игра - разработване и тестване. Но ако ви е омръзнало, винаги можете да започнете да пишете ново!

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