Язык программирования Turbo Pascal

Автор работы: Пользователь скрыл имя, 28 Января 2013 в 18:43, курсовая работа

Описание

Цель работы - Изучить язык программирования Турбо Паскаль. Написать игру "Змейка". Правила игры: на поле размером 25*80 движется змейка, состоящая из нескольких сегментов и разбросана еда. Цель игры - двигаться по полю буквами w (вверх), s(вниз), a(влево), d(вправо) и собирать еду. Каждая собранная еда увеличивает длину змейки на один сегмент. Если змейка ударяется о стену, игра заканчивается.

Содержание

Введение
3
1 Язык программирования Turbo Pascal
5
1.1 Процедуры и функции
8
1.2 Операторы. Выражения
10
2 Лексические основы языка Pascal
12
2.1 Структура программы на языке Pascal
14
2.2 Типы данных, используемые в Pascal
18
2.3 Стандартные функции языка Pascal
23
2.4 Построение арифметических выражений
25
2.5 Встроенные константы. Элементы структурного программирования
26
3 Описание алгоритма программы
28
3.1 Структурное описание разработки
28
3.2 Функциональное описание
29
Заключение
31
Список литературы
32
Приложение

Работа состоит из  6 файлов

Презентация.ppt

— 982.00 Кб (Скачать документ)

Содержание.docx

— 12.58 Кб (Открыть документ, Скачать документ)

Титулки по кур.работе.doc

— 62.50 Кб (Открыть документ, Скачать документ)

Язык программирования Turbo Pascal.rtf

— 548.55 Кб (Скачать документ)

function checknext(x:integer; y:integer):boolean;

var

isset:boolean; {флаг проверки занятости клетки или ее выхода за границы поля}

 i:integer;

begin

isset:=true;

for i:=1 to width do

begin {проверяем нет ли на месте клетки змейки}

if (x=snakebody[i].x) and (y=snakebody[i].y) then

isset:=false;

end;

if isset then

begin {проверяем не вышла ли голова змейки за границы поля}

 if (x<=0) or (y<=0) or (x>=80) or (y>=25) then isset:=false;

end;

checknext:=isset;

end;

{создает еду на поле}

procedure neweat;

begin

e.x:=random(78)+2;

e.y:=random(23)+2; {генерируем координаты еды}

{если место занято, генерируем еще раз, и так пока не найдем свободное}

while (not checknext(e.x , e.y)) do

begin

 

e.x:=random(78)+2;

e.y:=random(23)+2;

end;

end;

{перемещает змейку

procedure movesnake (x,y:integer);

var

i:integer; {счетчик цикла}

begin

for i:=1 to width do

begin

snakebody[i]:=snakebody[i+1];

end;{перемещаем все составляющие змейки на место соседней}

snakebody[width].x:=x;

snakebody[width].y:=y; {голове змейки присваиваем новые координаты}

if (x=e.x) and (y=e.y) then {если голова нашла еду}

begin

width:=width+1; {увеличиваем длину змейки на 1}

snakebody[width].x:=x;

snakebody[width].y:=y;

neweat; {создаем новую еду}

end;

end;

{******** main program ************}

BEGIN

textbackground(2);

clrscr;

textcolor(5);

gotoxy(33,10);

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

gotoxy(20,12);

write('press W to go up');

gotoxy(20,14);

write('pres A to go left');

gotoxy(20,16);

write('press D to go right');

gotoxy(20,18);

write('press S to go down');

gotoxy(27,22);

write ('**** PRESS ENTER TO START ****');

readln;

clrscr;

          gameover:=false;

{выстраиваем начальное тело змеки}

width:=4;

snakebody[1].x:=1;

snakebody[1].y:=1;

snakebody[2].x:=2;

snakebody[2].y:=1;

snakebody[3].x:=3;

snakebody[3].y:=1;

snakebody[4].x:=4;

snakebody[4].y:=1;

clrscr;

v:=1;

randomize;

neweat; {создаем еду}

while (width<maxwidth) do {пока длина змейки меньше заданной}

begin

if (keypressed) then {если была нажата клавиша}

begin

key:=readkey; {считываем клавишу}

case key of

'w': begin if v=4 then continue; v:=3; end; {up}

's': begin if v=3 then continue; v:=4; end; {down}

'a': begin if v=1 then continue; v:=2; end; {left}

'd': begin if v=2 then continue; v:=1; end; {rigth}

#27: break; {exit}

end;

end;

clrscr;

{определение направления движения головы змейки}

case v of

1: begin nx:=snakebody[width].x+1;

ny:=snakebody[width].y; end; {rigth}

2: begin nx:=snakebody[width].x-1;

ny:=snakebody[width].y; end; {left}

3: begin nx:=snakebody[width].x;

ny:=snakebody[width].y-1; end; {up}

4: begin nx:=snakebody[width].x;

ny:=snakebody[width].y+1; end; {down}

 end;

{если впереди граница или препятствие}

 if (not checknext(nx,ny)) then

 begin

gameover:=true; {заканчиваем игру с поражением пользователя}

 break;

end;

movesnake(nx,ny); {перемещаем змейку}

gotoxy(e.x,e.y);

write('o'); {отображаем еду}

for i:=1 to width-1 do

begin {отображаем тело змейки}

gotoxy(snakebody[i].x,snakebody[i].y);

{ textbackground(2);}

textcolor(15);

write('o');

end;

gotoxy (snakebody[width].x, snakebody[width].y);

textcolor(7);

write('o'); {отображение головы змейки}

 gotoxy(80,25); {уводим курсор чтобы не мешал}

delay(20000)

end;

clrscr;

if (gameover) then {сообщение о выигрыше или проигрыше}

 begin

textcolor(4);

gotoxy(30,12);

writeln('**** GAME OVER ! ****')

end

else

begin

textcolor(11);

gotoxy(35,12);

writeln ('**** YOU WIN ! ****');

end;

textcolor (15);

gotoxy(25,20);

writeln('**** Press enter for exit ! ****');

readln;

END.

 

 

 

 

 

 


Анотация.docx

— 12.87 Кб (Открыть документ, Скачать документ)

Информация о работе Язык программирования Turbo Pascal