Разработка программы, реализующей игру 'Тетрис' в программной среде Turbo Pascal

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    35,12 Кб
  • Опубликовано:
    2013-02-02
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка программы, реализующей игру 'Тетрис' в программной среде Turbo Pascal

Содержание

Введение

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

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

Выводы

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

Приложение

Введение

 

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

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

Правила

Случайные фигурки тетрамино <#"600652.files/image001.gif">

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

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

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+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.      Интернет сайт #"600652.files/image002.gif">

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

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


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


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


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

Похожие работы на - Разработка программы, реализующей игру 'Тетрис' в программной среде Turbo Pascal

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!