50449 (Разработка компьютерной игры "Змейка"), страница 2

2016-07-30СтудИзба

Описание файла

Документ из архива "Разработка компьютерной игры "Змейка"", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "50449"

Текст 2 страницы из документа "50449"

Рис.8.7 - Игровой процесс

После того как игрок проиграет (столкнется со границей игрового поля или с "собственным хвостом") появится соответствующее сообщение (Рис.8.8).

Рис.8.8 - Конец игры

Далее, в случае того, если был набран результат выше результата, который занимал 10 место в списке рейтинга, вам предложат ввести своё имя (Рис.8.9).

Рис.8.9 - Ввод имени для сохранения результатов

Ваше имя можно будет увидеть в списке рейтинга при переходе по вкладке "Рекорды" главного меню. Ваше имя будет стоять на соответствующей, занятой вами, позиции (Рис. 8.10).

Рис. 8.10 - Вкладка "Рекорды" (После сохранения нового результата)

Выход из программы осуществляется кнопкой главного меню "Выход".


Заключение

В ходе выполнения курсовой работы были изучены основы программирования на языке Pascal. Написание программы способствовало закреплению теоретического материала на практике.

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


Текст программы

Program Sme;

uses crt;

type

reca=record

name:string[10];

resultat:integer;

end;

var

aa:reca;

Xz,Yz:array [1..40] of byte;

us:array [1..11] of reca;

i,j,a,k,k2,kk,och,z:integer;

H,W,hl,hr,Ww,Wn,PlayE,Play:ShortInt;

X1,Y1,x,y,d:byte;

Kno,onk:Char;

SL,Schot:Word;

Ax,Ay,Bx,By,Ex,Ey,as,sa:Byte;

f1:text;

f2:file of integer;

f3:text;

f4:text;

namen:string[10];

resul:string[20];

prav:string;

q,wq,qq,qw:string[15];

Procedure stolknovenie;

begin

for i:=2 to d-2 do

begin

if (Xz[i]=Xz[i+2]) and (Yz[i]=Yz[i+2]) then

as:=0 else as:=1;

sa:=sa*as;

end;

for i:=1 to d-3 do

begin

if (sa<>0) and (xz[1]=xz[i+3]) and (yz[1]=yz[i+3]) then Play:=0;

end;

if (Xz[1]=3) or (Xz[1]=57) or (Yz[1]=3) or (Yz[1]=22) Then Play:=0;

end;

Procedure Ramka(Xr,Yr:Byte; tt: string; c:byte);

begin

TextColor(c);

GotoXY (Xr,Yr+1);

write (tt);

For i:=Xr to Xr+20 do

begin

GotoXY (i,Yr);

write ('*');

GotoXY (i,Yr+2);

write ('*');

end;

For i:=Yr to Yr+2 do

begin

GotoXY (Xr,i);

write ('*');

GotoXY (Xr+20,i);

write ('*');

end;

end;

Procedure Izm(vv:byte);

Begin

Ax:=Bx; Ay:=By;

Bx:=Xz[vv]; By:=Yz[vv];

Xz[vv]:=Ax; Yz[vv]:=Ay;

End;

Procedure menu2 (q,qq,wq,qw:string);

begin

Clrscr;

TextBackground (0);

TextColor (15);

For X1:=25 to 55 do

Begin

GotoXY (X1,4);

Write ('*');

GotoXY (X1,22);

Write ('*');

end;

For Y1:=4 to 22 do

begin

GotoXY (25,Y1);

Write ('*');

GotoXY (55,Y1);

Write ('*');

end;

GotoXY (31,7);

Write (q);

K2:=0;

repeat

K2:=k2+kk;

kk:=0;

If k2=0 Then Ramka (30,10,qq,128) else

Ramka (30,10,qq,15);

If k2=1 then Ramka (30,14,wq,128) else

Ramka (30,14,wq,15);

IF K2=2 Then Ramka (30,18,qw,128) else

Ramka (30,18,qw,15);

Kno:=ReadKey;

If Kno=#80 then Begin if k2<2 then kk:=1 else kk:=0; end else

if Kno=#72 then Begin if k2>0 then kk:=-1 else kk:=0; end;

until Kno=chr(13);

end;

Procedure Spravka;

begin

menu2(' СПРАВКА',' ПРАВИЛА ИГРЫ ',' РАЗРАБОТЧИК ',' НАЗАД ');

if k2=0 then

begin

clrscr;

assign(f4,'d:\kkk\pravila.pas');

reset(f4);

i:=3;

While not EOF(f4) do

begin

GotoXY(3,i);

i:=i+2;

readln(f4,prav);

writeln(prav);

end;

readln;

end;

if k2=1 then

begin

clrscr;

TextBackground(0);

TextColor (4);

For X1:=3 to 77 do

Begin

GotoXY (x1,2);

Write ('*');

GotoXY (X1,23);

write ('*');

end;

For Y1:=2 to 23 do

Begin

GotoXY (3,Y1);

Write ('*');

GotoXY (77,y1);

Write ('*');

end;

assign(f4,'d:\kkk\avtor.pas');

reset(f4);

d:=7;

While not EOF (f4) do

begin

textcolor(10);

readln(f4,prav);

GotoXY (19,d);

Write (prav);

d:=d+2;

for i:=1 to 4 do

Delay (59000);

end;

close(f4);

readln;

end;

if k2=2 then

TextBackground (0);

textcolor(15);

end;

Procedure Resultat;

begin

clrscr;

reset(f1);

for i:=1 to 10 do

begin

readln(f1,us[i].name);

end;

close(f1);

reset(f2);

for i:=1 to 10 do

read(f2,us[i].resultat);

close(f2);

gotoXy(25,12);

If schot>us[10].resultat then

begin

writeln('Ваш результат составил: ', schot);

gotoxy(30,13);

writeln('Введите ваше имя...');

gotoxy(36,14);

read(namen);

end

else

begin

GotoXY(23,13);

writeln('Вы не побили самый худший результат!!! :(');

GotoXY(13,14);

writeln('Но не огорчайтесь!!! Вы можете просто написать ваше имя!!!)))');

GotoXY(36,15);

readln(namen);

end;

us[11].name:=namen;

us[11].resultat:=schot;

for i:=1 to 11 do

for j:=2 to 11 do

begin

if us[j].resultat>us[j-1].resultat then

begin

aa:=us[j-1];

us[j-1]:=us[j];

us[j]:=aa;

end;

end;

rewrite(f1);

for i:=1 to 10 do

begin

write(f1,us[i].name);

writeln(f1,' ');

end;

close(f1);

rewrite(f2);

for i:=1 to 10 do

write(f2,us[i].resultat);

close(f2);

rewrite(f3);

for i:=1 to 10 do

writeln(f3,i,': ',us[i].resultat,' ',us[i].name);

close(f3);

end;

begin

assign (f3,'d:\kkk\itog.txt');

assign (f1,'d:\kkk\imena.txt');

assign (f2,'d:\kkk\rec.dat');

repeat

repeat

Clrscr;

TextBackground (0);

TextColor (15);

For X1:=25 to 55 do

Begin

GotoXY (X1,4);

Write ('*');

GotoXY (X1,22);

Write ('*');

end;

For Y1:=4 to 22 do

begin

GotoXY (25,Y1);

Write ('*');

GotoXY (55,Y1);

Write ('*');

end;

K:=0;

Repeat

k:=k+kk;

kk:=0;

If k=0 Then Ramka (30,6,' ИГРАТЬ ',128) else

Ramka (30,6,' ИГРАТЬ ',15);

If k=1 Then Ramka (30,10,' РЕКОРДЫ ',128) else

Ramka (30,10,' РЕКОРДЫ ',15);

If k=2 then Ramka (30,14,' СПРАВКА ',128) else

Ramka (30,14,' СПРАВКА ',15);

If k=3 then Ramka (30,18,' ВЫХОД ',128) else

Ramka (30,18,' ВЫХОД ',15);

Kno:=ReadKey;

If Kno=#80 then Begin if k<3 then kk:=1 else kk:=0; end else

if Kno=#72 then Begin if k>0 then kk:=-1 else kk:=0; end;

until Kno=chr(13);

If k=1 then

begin

Clrscr;

GotoXy(36,5);

writeln('РЕКОРДЫ');

reset (f3);

for i:=1 to 10 do

begin

readln(f3,resul);

GotoXY (32,7+i);

Write(resul);

end;

close(f3);

Readln;

end;

If k=2 then

repeat

spravka;

until k2=2;

If k=3 then

exit;

until (k=3) or (k=0);

If k=0 then begin

menu2 (' УРОВЕНЬ СЛОЖНОСТИ',' ГЛИСТ ',' ЗМЕЯ ',' АНАКОНДА ');

end;

If K2=0 then begin Sl:=40000; och:=25; d:=5 end else if k2=1 then begin

Sl:=30000; och:=50; d:=10 end else begin Sl:=20000; och:=100; d:=15 end;

TextBackground (1);

Textcolor (5);

clrscr;

schot:=0; playE:=1;

Xz[1]:=30;

Yz[1]:=13;

For i:=2 to 40 do

begin

Xz[i]:=Xz[1];

Yz[i]:=Yz[1];

end;

For X1:=3 to 57 do

Begin

GotoXY (x1,2);

Write ('*');

GotoXY (X1,23);

write ('*');

end;

For Y1:=2 to 23 do

Begin

GotoXY (3,Y1);

Write ('*');

GotoXY (57,y1);

Write ('*');

end;

Play:=1;

GotoXY(60,4);

write('СЧЕТ: ');

GotoXY(60,6);

write('Рост змеи: ');

gotoXY(60,8);

write('Лучшие результаты:');

reset(f3);

for i:=1 to 3 do

begin

readln(f3,resul);

GotoXY (60,9+i);

Write(resul);

end;

close(f3);

Repeat

If play=1 then begin

TextColor (4);

Ax:=xz[1]; Ay:=Yz[1];

Xz[1]:=Xz[1]+H; Yz[1]:=Yz[1]+W;

Bx:=Xz[2]; By:=Yz[2];

Xz[2]:=Ax; Yz[2]:=Ay;

For i:=3 to 40 do

izm(i);

GotoXY (Xz[1],Yz[1]);

write(chr(1));

For i:=2 to d do

begin

GotoXY (Xz[i],Yz[i]);

Write(chr(4));

end;

Delay(SL);

Textcolor (1);

GotoXY (Xz[1],Yz[1]);

write(chr(1));

For i:=2 to 40 do

begin

GotoXY (Xz[i],Yz[i]);

Write(chr(4));

end;

randomize;

if PlayE=1 then

begin

Ex:=Random(54)+4;

Ey:=random(18)+4;

If (K2=0) and (schot<>0) and ((schot mod 75)=0) then

d:=d+1;

if (k2=0) and (schot<>0) and ((schot mod 150)=0) then

Sl:=Sl-500;

If (K2=1) and (schot<>0) and ((schot mod 150)=0) then

d:=d+1;

if (k2=1) and (schot<>0) and ((schot mod 500)=0) then

Sl:=Sl-500;

If (K2=2) and (schot<>0) and ((schot mod 500)=0) then

d:=d+1;

if (k2=2) and (schot<>0) and ((schot mod 1000)=0) then

Sl:=Sl-500;

PlayE:=0; end;

Textcolor (6);

GotoXY(Ex,Ey);

write(chr(6));

if (Xz[1]=Ex) and (Yz[1]=Ey) then

begin

schot:=schot+och;

PlayE:=1;

Textcolor (1);

GotoXy(Ex,Ey);

write (' ');

end;

Case Kno of

#72: Begin W:=-1; H:=0; end;

#80: Begin W:=1; H:=0; end;

#77: Begin W:=0; H:=1; end;

#75: Begin W:=0; h:=-1; end;

end;

If Keypressed=true then begin onk:=readkey;Kno:=Readkey; end;

end;

GotoXY(66,4);

write(Schot);

GotoXY(70,6);

write(d);

sa:=10;

stolknovenie;

until Play=0;

If play=0 then begin

TextBackground (0);

Textcolor (15);

clrscr;

GotoXY(6,8);

write(' ***** ***** * * ******* ***** ** ** ******* ****** ');

GotoXY(6,9);

write('******* ******* ** ** ******* ******* ** ** ******* *******');

GotoXY(6,10);

write('** ** ** *** *** ** ** ** ** ** ** ** **');

GotoXY(6,11);

write('** ** ** **** **** ** ** ** ** ** ** ** **');

GotoXY(6,12);

write('** ** ** ** *** ** **** ** ** ** ** **** ** **');

GotoXY(6,13);

write('** ** ******* ** * ** **** ** ** ** ** **** ****** ');

GotoXY(6,14);

write('** *** ******* ** ** ** ** ** ** ** ** **** ');

GotoXY(6,15);

write('** ** ** ** ** ** ** ** ** ** ** ** ** ** ');

GotoXY(6,16);

write('******* ** ** ** ** ******* ******* *** ******* ** ** ');

GotoXY(6,17);

write(' ***** ** ** ** ** ******* ***** * ******* ** **');

GotoXY(25,23);

Write('Для продолжения нажмите ENTER');

repeat

kno:=readkey;

until Kno=chr(13);

end;

resultat;

H:=0; w:=0; k:=0; kk:=0;

until k=3; end.

Размещено на Allbest.ru

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5224
Авторов
на СтудИзбе
428
Средний доход
с одного платного файла
Обучение Подробнее