Список использованных источников. Об игре ТЕТРИС




Содержание

 

Введение

. Результаты выполнения работы

. Код программы

Выводы

Список использованных источников

Приложение

 


Введение

Об игре ТЕТРИС

"Тетрис" был написан программистом Алексеем Пажитновым в июне 1985. В то время он работал в ВЦ Академии Наук СССР и занимался изучением проблем искусственного интеллекта, экспериментируя с простейшими головоломками. Принцип "Тетриса" позаимствован у популярной в шестидесятые годы прошлого века игры "Пентамино". Смысл данной головоломки сводится к следующему. Если взять пять квадратов и сгруппировать их всеми возможными способами, то получатся более десятка различных фигур - элементов "Пентамино". Далее, используя эти фигуры, необходимо выполнять простейшие задания, например, складывать более крупные квадраты.

Правила

Случайные фигурки тетрамино <https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D1%82%D1%80%D0%B0%D0%BC%D0%B8%D0%BD%D0%BE> падают сверху в прямоугольный стакан шириной 10 и высотой 20 клеток. В полёте игрок может поворачивать фигурку и двигать её по горизонтали, но не замедлять полёт. Фигурка летит, пока не наткнётся на другую фигурку либо на пол стакана. Если при этом заполнился горизонтальный ряд из 10 клеток, он пропадает и всё, что выше его, опускается на 1 клетку. Темп игры постепенно увеличивается. Если пропадает одновременно 4 ряда, это называется «тетрис», отсюда название игры. Игра кончается, когда новая фигурка касается верхней границы стакана. Игрок получает очки за каждую фигурку, поэтому его задача - заполнять ряды, не заполняя сам стакан как можно дольше (максимизируя очки).

Цель работы:

В этой курсовой работе мы ставили перед собой цель разработать программу, реализующую знаменитую и всеми любимую игру Тетрис в программной среде Turbo Pascal.

Главными и первоочередными задачами являются:

1) создание поля игры (стакана);

2) создание семи случайных фигур тетрамино <https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D1%82%D1%80%D0%B0%D0%BC%D0%B8%D0%BD%D0%BE>;

) движение фигур в поле;

) возможность поворота фигур;

) реализация складывания фигур в ряды;

) удаление целых рядов и подсчёт их количества;

) отображение последующей фигуры;

Дополнительные задачи:

1) возможность выбора фигур для игры

2) создание одной дополнительной фигуры

) реализация игры с различной скоростью

) сохранение результатов игры в текстовый файл

) подсчет очков с учётом скорости

) создание дополнительных функций: выхода, паузы

 


Результаты выполнения работы

 

В программе используются:

1) массивы для создания поля игры;

процедуры и функции для создания фигур, поворота фигур, удаления рядов, вывода массива на экран и т.д. например: function cvet определяет цвет фигуры; procedure cls отчищает массив поля, procedure proverka удаление полной линии и прибавление очков, procedure paint Вывод состояния массива на экран и отображение последующей фигуры, procedure figura непосредственное определение формы фигуры,

2) procedure povorot реализация поворота фигуры.;

3) Оператор выбора case: например, в случайном выборе фигуры;

) Цикл с пост условием Repeat/Until: в главном теле программы для зацикливания процесса игры;

) Процедура считывания с клавиатуры keypressed и readkey для управления фигурами;

) Модуль crt,который позволяет увеличить скорость выполнения программы в отличии от модуля Graph;

Вид программы


Код программы

игра тетрис поле фигура

program tetris;crt;b,a,c:array[1..10,1..20]of integer;:array[1..4,1..4]of integer;:array[1..8]of integer;

n,m,x,y:integer;,fi:char;,wt,fig,del,dell,colr,colre,z,s:integer;

new,pov:boolean;,figs,ochke:integer;:string;:text;

{--------------------------------------}cvet(colr:integer):integer;colr of

:cvet:=9;

2:cvet:=10;

:cvet:=11;

:cvet:=12;

:cvet:=13;

:cvet:=14;

7:cvet:=7;;;

{--------------------------------------}cls;i,j:integer;i:=1 to 10 doj:=1 to 20 do a[i,j]:=0;;

{---------------------------------------}proverka;i,j,l,f,g:integer;

begini:=20 downto 1 do begin:=0;j:=1 to 10 do begin

{ readkey;(i,' ',j,' ',l,'-'); }a[j,i]=1 then l:=l+1;;l=10 then begin:=line+1;f:=i-1 downto 1 dog:=1 to 10 do begin a[g,f+1]:=a[g,f];[g,f+1]:=b[g,f];;:=i+1;;;;

{----------------------------------------}paint;

var i,j:integer;(40,3);

textcolor(15);:=line*(20-del);('line:',line,' point:',ochke);(41,4);('scor: ',del);i:=1 to 10 doj:=1 to 20 doa[i,j] of

:begin textcolor(b[i,j]);(i+20,j);('0');;

:begin(cvet(colr));(i+20,j);('0');;

:begin textcolor(red);(i+20,j);('.');;;i:=1 to 4 doj:=1 to 4 do begind[i,j] of

:begin textcolor(red);(i+40,j+5);('.');;

:begin(cvet(colre));(i+40,j+5);('0');;;;;

{----------------------------------}figura(x,y,n,st:integer);i:integer;n of

:begin a[x,y]:=st;[x+1,y]:=st;[x+2,y]:=st;[x+1,y+1]:=st;(a[x,y+1]=1)or(y=19)or(a[x+2,y+1]=1)or(a[x+1,y+2]=1) then new:=true;:=3;:=2;:=1;;

{--------}

:begin a[x+1,y]:=st;[x+1,y+1]:=st;[x+1,y+2]:=st;[x,y+1]:=st;(a[x,y+2]=1)or(y=18)or(a[x+1,y+3]=1) then new:=true;:=2;:=3;:=1;;

{--------}

:begin a[x+1,y]:=st;[x,y+1]:=st;[x+1,y+1]:=st;[x+2,y+1]:=st;(a[x,y+2]=1)or(y=19)or(a[x+1,y+2]=1)or(a[x+2,y+2]=1) then new:=true;:=3;:=2;:=1;;

{--------}

:begin a[x,y]:=st;[x,y+1]:=st;[x+1,y+1]:=st;[x,y+2]:=st;(a[x,y+3]=1)or(y=18)or(a[x+1,y+2]=1) then new:=true;:=2;:=3;:=1;;

{--------}

:begin a[x,y]:=st;[x+1,y]:=st;[x+2,y]:=st;[x+3,y]:=st;(a[x,y+1]=1)or(y=20)or(a[x+1,y+1]=1)or(a[x+2,y+1]=1)or(a[x+3,y+1]=1) then new:=true;:=4;:=1;:=2;;

{--------}

:begin a[x,y]:=st;[x,y+1]:=st;[x,y+2]:=st;[x,y+3]:=st;(a[x,y+4]=1)or(y=17) then new:=true;:=1;:=4;:=2;;

{--------}

:begin a[x,y]:=st;[x,y+1]:=st;[x+1,y+1]:=st;[x+1,y]:=st;(a[x,y+2]=1)or(y=19)or(a[x+1,y+2]=1) then new:=true;:=2;:=2;:=3;;

{--------}

:begin a[x+1,y]:=st;[x+2,y]:=st;[x,y+1]:=st;[x+1,y+1]:=st;(a[x,y+2]=1)or(y=19)or(a[x+1,y+2]=1)or(a[x+2,y+1]=1) then new:=true;:=3;:=2;:=4;;

{--------}

:begin a[x,y]:=st;[x,y+1]:=st;[x+1,y+1]:=st;[x+1,y+2]:=st;(a[x,y+2]=1)or(y=18)or(a[x+1,y+3]=1) then new:=true;:=2;:=3;:=4;;

{--------}

{--------}

:begin a[x,y]:=st;[x+1,y]:=st;[x+1,y+1]:=st;[x+2,y+1]:=st;(a[x,y+1]=1)or(y=19)or(a[x+1,y+2]=1)or(a[x+2,y+2]=1) then new:=true;:=3;:=2;:=5;;

{--------}

:begin a[x+1,y]:=st;[x+1,y+1]:=st;[x,y+1]:=st;[x,y+2]:=st;(a[x+1,y+2]=1)or(y=18)or(a[x,y+3]=1) then new:=true;:=2;:=3;:=5;;

{--------}

:begin a[x,y]:=st;[x,y+1]:=st;[x+1,y+1]:=st;[x+2,y+1]:=st;(a[x,y+2]=1)or(y=19)or(a[x+1,y+2]=1)or(a[x+2,y+2]=1) then new:=true;:=3;:=2;:=6;;

{--------}

:begin a[x,y]:=st;[x+1,y]:=st;[x,y+1]:=st;[x,y+2]:=st;(a[x,y+3]=1)or(y=18)or(a[x+1,y+1]=1) then new:=true;:=2;:=3;:=6;;

{--------}

:begin a[x,y]:=st;[x+1,y]:=st;[x+2,y]:=st;[x+2,y+1]:=st;(a[x,y+1]=1)or(y=19)or(a[x+1,y+1]=1)or(a[x+2,y+2]=1) then new:=true;:=3;:=2;:=6;;

{--------}

:begin a[x+1,y]:=st;[x+1,y+1]:=st;[x+1,y+2]:=st;[x,y+2]:=st;(a[x,y+3]=1)or(y=18)or(a[x+1,y+3]=1) then new:=true;:=2;:=3;:=6;;

{--------}

{--------}

:begin a[x,y+1]:=st;[x,y]:=st;[x+1,y]:=st;[x+2,y]:=st;(a[x,y+2]=1)or(y=19)or(a[x+1,y+1]=1)or(a[x+2,y+1]=1) then new:=true;:=3;:=2;:=7;;

{--------}

:begin a[x+1,y]:=st;[x,y]:=st;[x+1,y+1]:=st;[x+1,y+2]:=st;(a[x+1,y+3]=1)or(y=18)or(a[x,y+1]=1) then new:=true;:=2;:=3;:=7;;

{--------}

:begin a[x+2,y]:=st;[x,y+1]:=st;[x+1,y+1]:=st;[x+2,y+1]:=st;(a[x,y+2]=1)or(y=19)or(a[x+1,y+2]=1)or(a[x+2,y+2]=1) then new:=true;:=3;:=2;:=7;;

{--------}

:begin a[x,y]:=st;[x,y+1]:=st;[x,y+2]:=st;[x+1,y+2]:=st;(a[x,y+3]=1)or(y=18)or(a[x+1,y+3]=1) then new:=true;:=2;:=3;:=7;;

{--------}

{--------}

:begin a[x,y]:=st;

{ a[x,y+1]:=st;[x+1,y+1]:=st;[x+2,y+1]:=st;[x+1,y+2]:=st; }(a[x,y+1]=1)or(y=20){or(a[x+1,y+3]=1)or(a[x+2,y+2]=1)} then new:=true;:=1;:=1;:=3;;

{--------};;

{----------------------------------}povorot(n:integer);x<(12-ht) thenn of

1:fig:=2;

:fig:=3;

:fig:=4;

:fig:=1;

:fig:=6;

:fig:=5;

:fig:=9;

:fig:=8;

:fig:=11;

:fig:=10;

:fig:=13;

:fig:=14;

:fig:=15;

:fig:=12;

:fig:=17;

17:fig:=18;

:fig:=19;

:fig:=16;;;

{--------------------------------};(20,14);('Enter your name: ');(name);;(red);(35,10);('TETRIS');(1);(10,20);('Made by: Tretyakov Ilia, Sinkovskaia Lida, Ivanova Aleksandra');(30,12);(14);(name,' Vvedite skorost: ');

read(del);:=del;:=0;(20,13);(13);('Vvedite nomera figur(1-8) (esli vse(v) vkonce(o)): ');

read(fi);fi of

'1':begin z:=z+1; e[z]:=1; end;

'2':begin z:=z+1; e[z]:=5; end;

'3':begin z:=z+1; e[z]:=7; end;

'4':begin z:=z+1; e[z]:=8; end;

'5':begin z:=z+1; e[z]:=10;end;

'6':begin z:=z+1; e[z]:=12;end;

'7':begin z:=z+1; e[z]:=16;end;

'8':begin z:=z+1; e[z]:=20;end;

end;(fi='v')or(fi='o');

clrscr;:=5;:=1;:=random(19)+1;

repeat;:=dell;:=figs;fi='v' then figs:=random(19)+1 else:=false;:=random(20)+1;z:=1 to 8 do if e[z]=figs then new:=true;new=true;:=1;:=5;:=false;(1,1,figs,1);:=colr;

for z:=1 to 4 dos:=1 to 4 do d[z,s]:=a[z,s];

figura(1,1,figs,0);(x,y,fig,0);n:=1 to 9999 do beginkeypressed then ch:=readkey else ch:=' ';ch of

'a':if (x>1)and(a[(x-1),y]<>1) then x:=x-1;

'd':if (x<11-wt)and(a[(x+wt+1),y]<>1) then x:=x+1;

'x':begin dell:=del; del:=1;end;

's':povorot(fig);

'p':readkey;

'm':begin new:=true;[4,3]:=1;(31,10);(yellow);('Dlia vihoda nagmi<q> novaia igra<lubaia klavisha>');;;(del);;

y:=y+1;(x,y,fig,2);

paint;new=true;(x,y,fig,1);;z:=1 to 10 dos:=1 to 20 do beginc[z,s]<>a[z,s] then b[z,s]:=cvet(colr);[z,s]:=a[z,s];;(new=true)and((a[4,3]=1)or(a[3,3]=1)or(a[5,3]=1)or(a[6,3]=1));

write('Nagmi <q> dlia vihoda ili <t> dlia prodolgenia igre..');

ch:=readkey;:=0;;(t,'record.txt');

append(t);(' ');

write(t,' (',name,' ',ochke,');');(t); ch='q';.

 


Выводы

 

В этой работе мы создали игру тетрис в программной среде Turbo Pascal, нам удалось решить главную задачу, то есть создать:

поле игры, семь случайных фигур тетрамино;

движение фигур в поле;

поворот фигур;

складывание фигур в ряды;

удаление целых рядов и подсчёт их количества;

отображение последующей фигуры.

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

Вся игра реализована в модуле библиотеки crt что позволяет использовать данную программу на компьютерах без графических библиотек и компьютерах имеющих малый объём оперативной памяти. Нам не удалось создать версию игры с графической библиотекой, но в дальнейшем мы планируем доработать программу, для возможности выбора режима игры (crt или Graph).

 


Список использованных источников

 

1. Епашенков А.М., Епашенков В.А. Программирование в среде Turbo Pascal 7.0 / 3-е изд., стереотип. - М.: Диалог-Мифи, 1996.

2. Интернет сайт https://ru.wikipedia.org/wiki.

. Интернет сайт https://256bit.ru/informat/eu_pascal.

 


Приложение

Блок схемы:

function cvet определяет цвет фигуры

 

 

procedure cls отчищает массив поля

 


- procedure proverka удаление полной линии и прибавление очков

 

 


- procedure paint Вывод состояния массива на экран и отображение последующей фигуры

 

 


procedure figura непосредственное определение формы фигуры

 

 

procedure povorot реализация поворота фигуры

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-04-01 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: