Змейка на паскале код

Задача

Используя модуль graph или ctr языка программирования Паскаль написать программу «Змейка».

Решение

Змейка — это игра, в которой по экрану движется полоска, изменяющая свое направление при нажатии клавиш вверх, вниз, влево и вправо. Цель игры, управляя движением змейки, не столкнуться с бордюром, «врагами», собрать «бонусы». При столкновении с последними длина змейки увеличивается.

Написать полную версию игры на любом языке программирования, в том числе Паскаль, — достаточно сложная задача для начинающих. Можно остановиться на варианте, когда по экрану движется полоска, управляемая клавиатурой.

Ниже представлен вариант кода, при выполнении которого по экрану перемещается курсор, управляемый нажатием клавиш d, a, w, s. Игра заканчивается, как только его позиция выходит за края дозволенной области, которая указана в заголовке цикла while.

Новый блог по адресу Блог об ИТ и программировании на русском. Если вы хотите, чтобы я обновил, какие-либо статьи, пожалуйста напишите мне на email.

Игра Змейка — текстовая реализация на языке Pascal

Дальше текст программы

Комментарии к этой программе, такие же, как и к предыдущей.

Конечно интереснее, если сделать графическое отображение, например через модуль graph, но текстовое исполнение, добавляет немного романтики времени MS-DOS.

Эта статья написана в Вторник, Январь 19th, 2010 at 18:54 в разделе Задачи программирования. Вы можете подписаться на обновления комментариев к статье — RSS 2.0. Вы можете оставить комментарий, или послать пинг со своего сайта.

12 комментария

хм, а я круче написал! с зашибенным интерфейсом!

Читайте также:  Где находится 1cv8 cdn

Привет, давай свяжемся с тобой во Вконтакте?
https://m.vk.com/id445385155

kak zapustit i kakaimi klaviwami igrat’.

Free Pascal выдает ошибку на строке

пардон, не туда запостил, сорри )))))

Здравствуйте.
У меня возник вопрос: что означают e.x, e.y, snakebody[i].x, snakebody[i].y?

как играется это игра? вообще не играется, запускаю но ваша змейка не двигается

В самом конце программы в срочке" Delay(30000);" уменьши значение хотябы до 100, чем меньше сделаешь тем быстрее она будет двигаться. И ещё при запуске проверь что стоит английская раскладка, на русской не работает. Управление на (W,A,S,D).

Игра класс )) , но как управлять змейкой я все перепробовал!
Подскажите пожалуйста.

type
TDirection = (None, Left, Right, Up, Down);

var x,t,y,i,z,xr,yr,prin1,prin2,prin3,prin4,prin5,k,s4et,prin6: integer;
Direction :TDirection;
xs,ys,bufx,bufy:array[1..200]of integer;

procedure shar3;
begin
SetBrushColor(clYellow);
circle(xs[k],ys[k],r);
end;

procedure Circl;
begin
SetBrushColor(clBlack);
circle(x,y,r);
end;

procedure rshar ;
begin
xr:=Random(WindowWidth) ;
yr:=Random( WindowHeight);
end;

procedure rshar2;
begin
SetBrushColor(clYellow);
circle(xr,yr,r);
end;

procedure XP(Key:integer);
begin
case Key of
VK_Left: Direction := Left ;
VK_Right:Direction := Right ;
VK_UP: Direction := UP ;
VK_Down: Direction :=Down ;
end;
circle(x,y,r);
end;

procedure pause;
begin
for i:=1 to 1 do
begin
Circl;
rshar2;
ClearWindow;
rshar2 ;
prin1:=(xr-x+r)*(xr-x+r)+(yr-y)*(yr-y) ;
prin2:=(xr-x-r)*(xr-x-r)+(yr-y)*(yr-y) ;
prin3:=(xr-x)*(xr-x)+(yr-y+r)*(yr-y+r) ;
prin4:=(xr-x)*(xr-x)+(yr-y-r)*(yr-y-r) ;
prin5:=R*R;
if (prin1) =WindowW > Down: begin y:=y+d; if y>=WindowHeight then y:=0 end;
end;
xs[1]:=x;
ys[1]:=y;
for k:=1 to s4et do
begin
bufx[k]:=xs[k];
bufy[k]:=ys[k];

end;
for k:=1 to s4et do
begin
xs[k+1]:=bufx[k];
ys[k+1]:=bufy[k] ;
end;
for k:=2 to s4et do
shar3;
Circl;
end;
end;
begin
rshar;
s4et:=2;

Оцените статью
Adblock detector