Программирование игровых программРефераты >> Программирование и компьютеры >> Программирование игровых программ
Я предпочел создать в программе только одну задачу, а именно передвижение ладьи из одной клетки в другую. Но так чтобы его не срубили вражеские фигуры.
Передо мной стала такая задача, как осуществять вставку фигуры в нужную клетку. У меня было 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. Ролевые игры необходимо отделять от неролевых, т.к. эти они существенно различаются по мотивации игровой деятельности, причинам формирования зависимости в силе влияния на психику человека.