Программирование игровых программ
Рефераты >> Программирование и компьютеры >> Программирование игровых программ

Я предпочел создать в программе только одну задачу, а именно передвижение ладьи из одной клетки в другую. Но так чтобы его не срубили вражеские фигуры.

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

1. Рассматривать каждую клетку по очереди, но это означало то, что ладья не сможет переходить на предыдущую клетку;

2. Использовать математические формулы с присваиваиванием и запретами.

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

Системные требования этой программы – 133 MHz и 32 Mb оперативной памяти. Хотя можно использовать и меньше

Вся программа делится на подпрограммы и в основном блоке объединяется. Я использовал следующие подпрограммы:

1. Закрашивание

procedure zacr(a,q,w,e:integer);

begin

setfillstyle(1,a);

floodfill(q,w,e);

end;

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

2. Рисование ладьи:

procedure lad(z,c,v:integer);

begin

setcolor(5);

rectangle(z-25,c+19,z+25,c+29);

rectangle(z-15,c-5,z+15,c+19);

rectangle(z-25,c-21,z+25,c-5);

rectangle(z-25,c-29,z-5,c-20);

rectangle(z+5,c-29,z+25,c-20);

zacr(v,z-24,c+20,5);

zacr(v,z-10,c,5);

zacr(v,z+10,c-10,5);

zacr(v,z-20,c-25,5);

zacr(v,z+10,c-22,5);

end;

Здесь производится рисование шахматной фигуры – ладьи. Эта подпрограмма использует другие подпрограммы, такие как заливка и подпрограмма перевода вводимых пользователем символов в координаты (рассматривается далее)

Здесь необходимо указывать координаты (в основном блоке программы указываются переменные x и y, так как им уже присвоили координаты), а также цвет ладьи.

3. подпрограмма рисования шахматной доски:

procedure setka;

begin

setcolor(15);

line(0,0,300,0);

line(300,0,300,300);

line(300,300,0,300);

line(0,0,0,300);

line(0,60,300,60);

line(0,120,300,120);

line(0,180,300,180);

line(0,240,300,240);

line(60,0,60,300);

line(120,0,120,300);

line(180,0,180,300);

line(240,0,240,300);

zacr(2,1,1,15);

zacr(2,121,1,15);

zacr(2,241,1,15);

zacr(2,61,90,15);

zacr(2,181,90,15);

zacr(2,1,150,15);

zacr(2,121,150,15);

zacr(2,241,150,15);

zacr(2,61,210,15);

zacr(2,181,210,15);

zacr(2,1,270,15);

zacr(2,121,270,15);

zacr(2,241,270,15);

zacr(4,61,1,15);

zacr(4,181,1,15);

zacr(4,1,91,15);

zacr(4,121,91,15);

zacr(4,241,91,15);

zacr(4,61,150,15);

zacr(4,181,150,15);

zacr(4,1,210,15);

zacr(4,121,210,15);

zacr(4,241,210,15);

zacr(4,61,270,15);

zacr(4,181,270,15);

setcolor(1);

line(65,125,70,175);

line(70,175,110,175);

line(110,175,115,125);

line(115,125,105,145);

line(65,125,75,145);

line(75,145,90,122);

line(105,145,90,122);

zacr(1,90,150,1);

lad(210,150,1);

lad(270,210,1);

settextstyle(0,0,2);

setcolor(15);

outtextxy(310,30,'A');

outtextxy(310,90,'B');

outtextxy(310,150,'C');

outtextxy(310,210,'D');

outtextxy(310,270,'E');

settextstyle(0,0,1);

setcolor(1);

outtextxy(30,5,'1');

outtextxy(90,5,'2');

outtextxy(150,5,'3');

outtextxy(210,5,'4');

outtextxy(270,5,'5');

end;

Эта подпрограмма рисует квадраты, с помощью линий, закрашивает их, а также именует клетки.

4. Подпрограмма «сигнализации» неправильного или недопустимого хода:

procedure signal;

begin

setcolor(3);

settextstyle(0,1,3);

outtextxy(530,150,'Ќ… ЏЋЌ€ЊЂћ');

sound(1000);

delay(1000);

nosound;

delay(1000);

zacr(0,490,1,15);

end;

Эта подпрограмма вставляется в другие процедуры, для оповещения пользователя как визуально так и с помощью звука.

5. Подпрограмма используемая для перевода символов пользователя в координаты точки:

procedure stav(q,w:char; var d,s,s1,d1:integer);

begin

s1:=s;

d1:=d;

if q='a' then

begin

if w='1' then begin

s:=30;

d:=30;

end;

if w='3' then

begin

s:=30;

d:=150;

end;

end;

if q='e' then

begin

if w='1' then begin

s:=270;

d:=30;

end;

if w='3' then

begin

s:=270;

d:=150;

end;

end;

if (s=30) and (d=30) and (s1=270) and (d1=150) then

begin

q:='e';

w:='3';

end;

if (s1<>s) and (d1<>d)then

begin

s:=s1;

d:=d1;

signal;

end;

if (q<>'a') and (q<>'e') and (w<>'1') and (w<>'3') then

signal;

end;

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

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

5. Пример работы программы

При запуске программы в начале указывается наназвание и имя и номер курса написавшего программу (рис.1):

Рис.1 Заставка программы

Дальше при нажатии любой клавиши появляется новое окно, в котором говорится о задании этой игры. Также в этом окне говорится о том как правильно вводить команды (рис.2):

Рис.2 Объяснение

При дальнейшей работе появляется основное рабочее окно (рис.3):

Рис. 3 основное окно

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

Заключение

Во время написания своей курсовой работы по теме: «Программирование игровых программ», я больше освоил язык программирования Паскаль, в виде написания мультимедийных программ и игр. Также я больше узнал о шахматах и в частности о шахматных головоломках.

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

Основополагающими я считаю следующие положения:

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


Страница: