Catalog · How the catalog works
pascal-snake
Текстовая змейка и прочая моя хрень, написанная когда-то давно на паскале.
- ★ 1 on GitHub
Anyone may press Interesting, signed in or not. It helps others find this project.
README
# pascal-snake
Текстовая змейка и прочая моя хрень, написанная когда-то давно на паскале. Игру написал в январе 2020.
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????:2414 ??????????:25 ??????-????:4 ??????????:1 ??????????:687??????????????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????? ?????????
????????? ?????????
????????? ???????????? ?????????
????????? ?????? ?????????
????????? ?????? ?????????
????????? ?????? ?????????
????????? ?????????????????????????????????????????????????????? ?????????
????????? ?????? ?????????
????????? ?????? ?????????
????????? ?????? ?????????
????????? ???????????????????????????????????????????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Алгоритм игры
Основные переменные алгоритма игры
За положение объектов на карте отвечает двумерный массив map:array[0..25,0..25] of byte. Каждая ячейка map[x,y] (кроме [0,0..25] и [0..25,0]) хранит в себе состояние клетки на координатах x, y.
0 - пустая клетка “ ”
1 - стенка или тело змейки “██”
2 - яблоко или место смерти “██”
3 - голова змейки “█▄”(если змейка смотрит вправо или вверх), “▀█”(если вниз) “▄█”(если влево)
За направление движения отвечает переменная direction:byte
1 - вверх
2 - вправо
3 - вниз
4 - влево
За длину змейки отвечает переменная tail:byte. За координаты каждого звена змейки отвечает двумерный массив body:array[0..1,0..48] of byte. В ячейке body[0,n] хранятся координаты ячейки n(счёт от головы включительно) по оси x. В ячейке body[1,n] хранятся координаты ячейки n по оси y. body[0..1,0] используется в процедуре move для записи координат на какие координаты нужно переместить голову.
Процедура move
За обработку массивов map, body отвечает процедура move
procedure move;
var i:integer;
begin
nowallcheck;
if time>15 then endcheck; if (time=15) or (time=20)
then levelgen;
eatcheck;
if direction=1
then begin
body[1,0]:=body[1,1]-1; body[0,0]:=body[0,1];
end;
if direction=2
then begin
body[0,0]:=body[0,1]+1; body[1,0]:=body[1,1];
end;
if direction=3
then begin
body[1,0]:=body[1,1]+1; body[0,0]:=body[0,1];
end;
if direction=4
then begin
body[0,0]:=body[0,1]-1; body[1,0]:=body[1,1];
end;
for i:=tail+1 downto 1 do
begin
body[1,i]:=body[1,i-1];
body[0,i]:=body[0,i-1];
end;
map[body[0,1],body[1,1]]:=3;
map[body[0,2],body[1,2]]:=1;
map[body[0,tail+1],body[1,tail+1]]:=0;
map[eatx,eaty]:=2;
end;При вызове процедуры nowallcheck любое звено змейки, оказавшееся на координатах 0 или 25 по x или y, переносится на координаты 24 или 1 по x или y. Затем, если прошло больше 15 игровых кадров, вызывается процедура endcheck. На 15 и 20 кадр вызывается процедура levelgen. Это нужно для того, чтобы первые 15 игровых кадров змейка получала бессмертие и чтобы исключить вариант проигрыша в случае попадения начальных координаты змейки в стену или при нахождении стены вплотную с её головой, ведь начальные координаты и направление генерируются случайно. А процедура levelgen чинит стены, через которые прошла змейка за эти 15 кадров.
Затем вызывается процедура eatcheck - она проверяет наличие яблока перед головой змейки. Дальше в зависимости от направления в body[0..1,0] записываются новые координаты головы. Следующий цикл записывает новые координаты n-1 звена для каждого n звена змейки, начиная с хвоста до головы, как по оси x, так и по y. В конце в массив map записываются изменения состояний 3-х клеток, головы и второй ячейки, ведь при любом раскладе на экране за кадр изменятся только 3 клетки (у змейки, изменение map в случае генерации еды прописано в eatgen). И в конце записывает в map[eatx,eaty] значение 3, потому что при генерации яблока перед головой змейка может пройти под ним, заменив его на пустую клетку, не съев.
Остальные процедуры алгоритма игры
Процедура deathcheck
procedure endcheck;
begin
if direction=1 then if map[body[0,1],body[1,1]-1]=1 then game:=false;
if direction=2 then if map[body[0,1]+1,body[1,1]]=1 then game:=false;
if direction=3 then if map[body[0,0],body[1,1]+1]=1 then game:=false;
if direction=4 then if map[body[0,1]-1,body[1,1]]=1 then game:=false;
if tail=48 then game:=false;
end;В зависимости от направления и координат головы процедура deathcheck проверяет массив map на наличие стены или тела змейки перед головой, в случае обнаружения препятствия или достижения змейкой длины 48 значение переменной game меняется c true на false.
Процедура eatcheck
procedure eatcheck;
begin
if direction=1 then if map[body[0,1],body[1,1]-1]=2 then begin body[0,tail+1]:=body[0,tail]; body[1,tail+1]:=body[1,tail]; tail:=tail+1; score:=score+25*difficulty; eatgen end;
if direction=2 then if map[body[0,1]+1,body[1,1]]=2 then begin body[0,tail+1]:=body[0,tail]; body[1,tail+1]:=body[1,tail]; tail:=tail+1; score:=score+25*difficulty; eatgen end;
if direction=3 then if map[body[0,0],body[1,1]+1]=2 then begin body[0,tail+1]:=body[0,tail]; body[1,tail+1]:=body[1,tail]; tail:=tail+1; score:=score+25*difficulty; eatgen end;
if direction=4 then if map[body[0,1]-1,body[1,1]]=2 then begin body[0,tail+1]:=body[0,tail]; body[1,tail+1]:=body[1,tail]; tail:=tail+1; score:=score+25*difficulty; eatgen end;
end;В зависимости от направления и координат головы проверяет наличие яблока перед головой, в случае обнаружения увеличивает tail на 1, прибавляет уровень сложности * 25 очков, вызывает процедуру eatgen, которая генерирует новое яблоко в свободной клетке карты, а в ячейку body[0..1,tail] записывает значение body[0..1,tail-1], чтобы длина змеи увеличилась следующим ходом.
Процедура eatgen
procedure eatgen;
var seteat:boolean;
x,y:byte;
begin
repeat
x:=random(24)+1; y:=random(24)+1;
if map[x,y]=0 then
begin
map[x,y]:=2; seteat:=true
end;
until seteat=true;
end;Генерирует случайные координаты для нового яблока до тех пор, пока клетка по этим координатам не будет свободной.
Процедура nowallcheck
procedure nowallcheck; var i,j:byte;
begin
for i:=1 to 48 do
begin
if body[0,i]=0 then body[0,i]:=24;
if body[0,i]=25 then body[0,i]:=1;
if body[1,i]=0 then body[1,i]:=24;
if body[1,i]=25 then body[1,i]:=1;
end;
end;Меняет координаты любого звена змейки с 0 или 25 (по обеим осям) на 24 и 1 соответственно.
Управление
В основном цикле игры перед вызовом move вызывается control
procedure control;
var key:char;
begin
if keypressed then key:=readkey;
case key of
'w','W','ц','Ц':
if direction<>3 then direction:=1;
's','S','ы','Ы':
if direction<>1 then direction:=3;
'a','A','Ф','ф':
if direction<>2 then direction:=4;
'd','D','в','В':
if direction<>4 then direction:=2;
end;
end;В случае нажатия любой кнопки на клавиатуре, эта кнопка считывается. Если она отвечает за клавиши WASD(в любом регистре и на любой раскладке), то изменяется значение переменной, отвечающей за направление. Но только в том случае, если это не обратное направление. То есть нельзя пойти направо, имея текущее направление влево. Это нужно для того, чтобы змейка не врезалась сама в себя, пытаясь развернуться.
Вывод изображения
Двумерный массив lastmap:array[1..24,1..24] of byte в каждой ячейке хранит значение этой же ячейки массива map, но за прошлый кадр, таким образом, программа вместо перерисовки всего кадра определяет, какие символы на экране необходимо заменить.
За вывод изображения отвечает процедура render, которая вызывается сразу после move в главной процедуре
procedure render;
var x,y:integer;
begin
gotoxy(4,2);
write('Счёт:',score,' Длина:',tail,' Сложностьть:',difficulty,' Карта:',level,' Время:',time);
for y:=1 to 24 do for x:=1 to 24 do
begin
if (map[x,y]=0) and (lastmap[x,y]<>0) then
begin
gotoxy(x*2+2,y+2);
write(' ');
lastmap[x,y]:=map[x,y];
end;
if (map[x,y]=1) and (lastmap[x,y]<>1) then
begin
gotoxy(x*2+2,y+2);
write('██');
lastmap[x,y]:=map[x,y];
end;
if (map[x,y]=2) and (lastmap[x,y]<>2) then
begin
textcolor(4);
gotoxy(x*2+2,y+2);
write('██');
textcolor(0);
lastmap[x,y]:=map[x,y];
end;
if (map[x,y]=3) and (lastmap[x,y]<>3) then
begin
if (direction=1) or (direction=2) then
begin
gotoxy(x*2+2,y+2);
write('█▄');
lastmap[x,y]:=map[x,y];
end;
if direction=3 then
begin
gotoxy(x*2+2,y+2);
write('▀█');
lastmap[x,y]:=map[x,y];
end;
if direction=4 then
begin
gotoxy(x*2+2,y+2);
write('▄█');
lastmap[x,y]:=map[x,y];
end;
end;
end;
gotoxy(2,1);
end;Вначале переносится курсор на строчку выше игры, и выводит основную информацию: Счёт, Длину, Сложность и т.д. Затем проверяется значение каждой ячейки двумерного массива map[1..24,1..24], и, если это значение не совпадает с той же ячейкой массива lastmap, то курсор перемещается в необходимое место и заменяет два символа, значительно экономя ресурсы. В конце процедура перемещает курсор в сторону, чтобы он не мешал на игровом поле.
Игровой процесс
Основные игровые переменные
Переменная difficulty:byte хранит в себе уровень сложности от 1 до 5 включительно. Сложность влияет на начальную задержку между обновлением кадров по формуле 25*(8-difficulty) и на минимальную по формуле 25*(6- difficulty). Также она влияет на задержку, которая идёт первые 10 кадров по формуле 50*(8-difficulty), она увеличена, чтобы игрок мог определить, где находится змейка; на основную часть игры это никак не влияет.
Переменная time:integer хранит в себе количество отрисованных кадров.
Переменная score:integer хранит в себе количество очков. В зависимости от сложности кол-во очков увеличивается с каждым ходом по условию:
if time mod 6-difficulty = 0 then score:=score+1т.е. чем выше сложность, тем чаще дают очки за время. Также очки дают за съеденные яблоки.
Главная процедура
begin
menu;
gotoxy(1,1);
writeln('▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒');
writeln('▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒');
for k:=1 to 24 do
begin
writeln('▒▒▒');
gotoxy(52,k+2);
writeln('▒▒▒');
end;
writeln('▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒');
writeln('▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒');
game:=true; levelgen;
direction:=random(4)+1;
body[0,1]:=random(24)+1;
body[1,1]:=random(24)+1;
eatgen;
tail:=2;
render;
repeat
time:=time+1;
if time mod 6-difficulty = 0 then
score:=score+1;
if time<10 then
delay(50*(8-difficulty));
if time<2500 then
delay(25*((8-difficulty))-time div 100) else delay(25*((8-difficulty))-2500 div 50);
control;
move;
render;
until game=false;
if tail <48 then
map[body[0,1],body[1,1]]:=2;
render;
gotoxy(4,1);
if tail>47 then
writeln('Вы победили!')
else
writeln('Вы проиграли!');
delay(2500);
gotoxy(4,27);
end.В начале вызывается процедура menu, в ней игрок выбирает сложность и одну из 6 карт.
Затем курсор переносится в угол экрана и отрисовываются границы поля.
Затем вызывается процедура levelgen, которая в зависимости от выбранной игроком карты, записывает необходимую карту в массив map.
Затем генерируется случайное начальное направление змейки, а также случайные её координаты. Генерируется яблоко и указывается начальная длина.
repeat
time:=time+1;
if time mod 6-difficulty = 0 then
score:=score+1;
if time<10 then
delay(50*(8-difficulty));
if time<2500 then
delay(25*((8-difficulty))-time div 100) else delay(25*((8-difficulty))-2500 div 50);
control;
move;
render;
until game=false;Данный цикл является основным циклом игры. В нем вызываются все основные процедуры такие как move, control и render, а также выполняется задержка. В случае если игра закончена, по причине смерти или достижения длины змейки в 48 звеньев, цикл прерывается. Игра еще раз проверяет длину змейки, если она = 48 выводится сообщение о победе, в противном случае о проигрыше.
Процедура levelgen
procedure levelgen;
var i,j:byte;
begin
if level=2 then for i:=1 to 24 do begin map[12,i]:=1; map[13,25-i]:=1; if time=0 then begin render; delay(20); end; end;
if level=3 then for i:=1 to 24 do begin map[12,i]:=1; map[13,i]:=1; map[i,12]:=1; map[i,13]:=1; if time=0 then begin render; delay(20); end; end;
if level=4 then for i:=1 to 14 do begin map[5,5+i]:=1; map[19,5+i]:=1; if i<7 then begin map[4+i,5]:=1; map[20-i,5]:=1; end; map[5+i,19]:=1; if time=0 then begin render; delay(20); end; end;
if level=5 then for i:=1 to 24 do begin map[1,i]:=1; map[24,25-i]:=1; map[i,1]:=1; map[25-i,24]:=1; if time=0 then begin render; delay(20); end; end;
if level=6 then begin
for i:=1 to 24 do begin map[i,10]:=1; map[25-i,15]:=1; if time=0 then begin render; delay(20); end; end;
for i:=1 to 10 do begin map[2,i+6]:=1; map[6,i+7]:=1; map[10,10-i+9]:=1; map[14,i+7]:=1; map[18,10-i+7]:=1; map[22,10-i+8]:=1; if time=0 then begin render; delay(35); end; end;
map[3,15]:=0; map[16,10]:=0; map[6,13]:=0; map[10,11]:=0; map[18,11]:=0; map[18,11]:=0; map[2,12]:=0; map[22,14]:=0; map[14,13]:=0;
end;
end;Данная процедура записывает в массив map текущую карту. Всего есть 6 карт:
1 карта - без границ.
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????:1 ??????????:2 ??????-????:1 ??????????:1 ??????????:6????????????????????????????????????
????????? ?????????
????????? ?????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????? ?????????
????????? ?????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????2 карта - 1/2.
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????:1 ??????????:2 ??????-????:2 ??????????:2 ??????????:7????????????????????????????????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????3 карта - 1/4.
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????:1 ??????????:2 ??????-????:1 ??????????:3 ??????????:2????????????????????????????????????
????????? ?????? ???????????? ?????????
????????? ?????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
????????? ???????????? ?????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????4 карта - коробка.
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????:1 ??????????:2 ??????-????:3 ??????????:4 ??????????:8????????????????????????????????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ???????????????????????????????????? ???????????????????????????????????? ?????????
????????? ?????? ?????? ?????????
????????? ?????? ?????? ?????????
????????? ?????? ?????? ?????????
????????? ?????? ?????? ?????????
????????? ?????? ?????? ?????????
????????? ?????? ?????? ?????????
????????? ?????? ?????? ?????????
????????? ?????? ?????? ?????? ?????????
????????? ?????? ?????? ?????? ?????????
????????? ?????? ?????? ?????? ?????????
????????? ?????? ?????? ?????????
????????? ?????? ?????? ?????????
????????? ?????? ?????? ?????????
????????? ?????????????????????????????????????????????????????????????????????????????????????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????5 карта - с границами.
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????:0 ??????????:2 ??????-????:4 ??????????:5 ??????????:2????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????? ???????????????
????????????????????? ???????????????
??????????????? ???????????????
??????????????? ???????????????
??????????????? ???????????????
??????????????? ???????????????
??????????????? ???????????????
??????????????? ???????????????
??????????????? ???????????? ???????????????
??????????????? ???????????????
??????????????? ???????????????
??????????????? ???????????????
??????????????? ???????????????
??????????????? ???????????????
??????????????? ???????????????
??????????????? ???????????????
??????????????? ???????????????
??????????????? ???????????????
??????????????? ???????????????
??????????????? ???????????????
??????????????? ???????????????
??????????????? ???????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????6 карта - рельсы.
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????:1 ??????????:2 ??????-????:4 ??????????:6 ??????????:6????????????????????????????????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ???????????? ?????????
????????? ?????? ?????? ?????????
????????? ?????? ?????? ?????? ?????? ?????? ?????????
????????? ?????? ?????? ?????? ?????? ?????? ?????? ?????????
??????????????????????????????????????????????????????????????????????????????????????????????????? ?????????????????????????????????????????????????????????
????????? ?????? ?????? ?????? ?????? ?????????
????????? ?????? ?????? ?????? ?????? ?????? ?????????
????????? ?????? ?????? ?????? ?????? ?????????
????????? ?????? ?????? ?????? ?????? ?????? ?????????
????????????????????? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????? ?????? ?????? ?????? ?????? ?????? ?????? ?????????
????????? ?????? ?????? ?????? ?????? ?????????
????????? ?????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????????
????????? ?????? ?????????
????????? ?????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Другие программы из репозитория
pcboot.pas
Текстовая визуализация запуска системы с падением в BSOD
graph.pas
Текстовое построение графика квадратного уравнения вида ax^2+bx+c=y
Примеры:
y=1x^2+1x+-20 Y
. . . . . . . . . . . . . . . . . # . . . . . . . 25 . . . . . # . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . # . . . . . . . 24 . . . . . # . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . # . . . . . . . 23 . . . . . # . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . ## . . . . . . 22 . . . . . ## . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . # . . . . . . 21 . . . . # . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . # . . . . . . 20 . . . . # . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . # . . . . . . 19 . . . . # . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . # . . . . . . 18 . . . . # . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . # . . . . . . 17 . . . . # . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . # . . . . . . 16 . . . . # . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . # . . . . . . 15 . . . . # . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . # . . . . . . 14 . . . . # . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . # . . . . . . 13 . . . . # . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . # . . . . . . 12 . . . . # . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . # . . . . . . 11 . . . . # . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . ## . . . . . 10 . . . . ## . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . # . . . . . 9 . . . # . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . # . . . . . 8 . . . # . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . # . . . . . 7 . . . # . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . # . . . . . 6 . . . # . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . # . . . . . 5 . . . # . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . # . . . . . 4 . . . # . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . # . . . . . 3 . . . # . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . # . . . . . 2 . . . # . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . # . . . . . 1 . . . # . . . . . . . . . . . . . . . . . . . .
-25-24-23-22-21-20-19-18-17-16-15-14-13-12-11-10-9 -8 -7 -6 ## -4 -3 -2 -1 0 1 2 3 ## 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 X
. . . . . . . . . . . . . . . . . . . . # . . . . -1 . . # . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . # . . . . -2 . . # . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . # . . . . -3 . . # . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . # . . . . -4 . . # . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . # . . . . -5 . . # . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . # . . . . -6 . . # . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . # . . . . -7 . . # . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . ## . . . -8 . . ## . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . # . . . -9 . # . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . # . . . -10 . # . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . # . . . -11 . # . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . # . . . -12 . # . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . # . . . -13 . # . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . ## . . -14 . ## . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . # . . -15 # . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . # . . -16 # . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . # . . -17 # . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . ## . -18## . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . # . # . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . ##### . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . -21 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . -22 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . -23 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . -24 . . . . . . . . . . . . . . . . . . . . . . . .y=0x^2+1x+1 Y
. . . . . . . . . . . . . . . . . . . . . . . . . 25 . . . . . . . . . . . . . . . . . . . . . . . ##
. . . . . . . . . . . . . . . . . . . . . . . . . 24 . . . . . . . . . . . . . . . . . . . . . . ## .
. . . . . . . . . . . . . . . . . . . . . . . . . 23 . . . . . . . . . . . . . . . . . . . . . ## . .
. . . . . . . . . . . . . . . . . . . . . . . . . 22 . . . . . . . . . . . . . . . . . . . . ## . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 21 . . . . . . . . . . . . . . . . . . . ## . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 20 . . . . . . . . . . . . . . . . . . ## . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 19 . . . . . . . . . . . . . . . . . ## . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 18 . . . . . . . . . . . . . . . . ## . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 17 . . . . . . . . . . . . . . . ## . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 16 . . . . . . . . . . . . . . ## . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 15 . . . . . . . . . . . . . ## . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 14 . . . . . . . . . . . . ## . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 13 . . . . . . . . . . . ## . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 12 . . . . . . . . . . ## . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 11 . . . . . . . . . ## . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 10 . . . . . . . . ## . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 9 . . . . . . . ## . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 8 . . . . . . ## . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 7 . . . . . ## . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 6 . . . . ## . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 5 . . . ## . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 4 . . ## . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 3 . ## . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 2 ## . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . ## . . . . . . . . . . . . . . . . . . . . . . . .
-25-24-23-22-21-20-19-18-17-16-15-14-13-12-11-10-9 -8 -7 -6 -5 -4 -3 -2 ## 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 X
. . . . . . . . . . . . . . . . . . . . . . . ## . -1 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . ## . . -2 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . ## . . . -3 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . ## . . . . -4 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . ## . . . . . -5 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . ## . . . . . . -6 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . ## . . . . . . . -7 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . ## . . . . . . . . -8 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . ## . . . . . . . . . -9 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . ## . . . . . . . . . . -10 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . ## . . . . . . . . . . . -11 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . ## . . . . . . . . . . . . -12 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . ## . . . . . . . . . . . . . -13 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . ## . . . . . . . . . . . . . . -14 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . ## . . . . . . . . . . . . . . . -15 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . ## . . . . . . . . . . . . . . . . -16 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . ## . . . . . . . . . . . . . . . . . -17 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . ## . . . . . . . . . . . . . . . . . . -18 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . ## . . . . . . . . . . . . . . . . . . . -19 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . ## . . . . . . . . . . . . . . . . . . . . -20 . . . . . . . . . . . . . . . . . . . . . . . .
. . . ## . . . . . . . . . . . . . . . . . . . . . -21 . . . . . . . . . . . . . . . . . . . . . . . .
. . ## . . . . . . . . . . . . . . . . . . . . . . -22 . . . . . . . . . . . . . . . . . . . . . . . .
. ## . . . . . . . . . . . . . . . . . . . . . . . -23 . . . . . . . . . . . . . . . . . . . . . . . .
## . . . . . . . . . . . . . . . . . . . . . . . . -24 . . . . . . . . . . . . . . . . . . . . . . . .y=-0.2x^2+0x+24 Y
. . . . . . . . . . . . . . . . . . . . . . . . . 25 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . ## . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . #######23 ###### . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . #### . . 22 . . ### . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . # . . . 21 . . # . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . #### . . . 20 . . . ### . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . ## . . . . 19 . . . . ## . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . # . . . . . 18 . . . . # . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . # . . . . . 17 . . . . # . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . #### . . . . . 16 . . . . . ### . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . # . . . . . . 15 . . . . . # . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . #### . . . . . . 14 . . . . . . ### . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . # . . . . . . . 13 . . . . . . # . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . # . . . . . . . 12 . . . . . . # . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . #### . . . . . . . 11 . . . . . . . ### . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . # . . . . . . . . 10 . . . . . . . # . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . # . . . . . . . . 9 . . . . . . . # . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . # . . . . . . . . 8 . . . . . . . # . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . #### . . . . . . . . 7 . . . . . . . . ### . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . # . . . . . . . . . 6 . . . . . . . . # . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . # . . . . . . . . . 5 . . . . . . . . # . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . ## . . . . . . . . . 4 . . . . . . . . . ## . . . . . . . . . . . . . .
. . . . . . . . . . . . . . # . . . . . . . . . . 3 . . . . . . . . . # . . . . . . . . . . . . . .
. . . . . . . . . . . . . . # . . . . . . . . . . 2 . . . . . . . . . # . . . . . . . . . . . . . .
. . . . . . . . . . . . . . # . . . . . . . . . . 1 . . . . . . . . . # . . . . . . . . . . . . . .
-25-24-23-22-21-20-19-18-17-16-15-14-13-12 #-10-9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 #11 12 13 14 15 16 17 18 19 20 21 22 23 24 X
. . . . . . . . . . . . . #### . . . . . . . . . . -1 . . . . . . . . . . ### . . . . . . . . . . . . .
. . . . . . . . . . . . . # . . . . . . . . . . . -2 . . . . . . . . . . # . . . . . . . . . . . . .
. . . . . . . . . . . . . # . . . . . . . . . . . -3 . . . . . . . . . . # . . . . . . . . . . . . .
. . . . . . . . . . . . . # . . . . . . . . . . . -4 . . . . . . . . . . # . . . . . . . . . . . . .
. . . . . . . . . . . . #### . . . . . . . . . . . -5 . . . . . . . . . . . ### . . . . . . . . . . . .
. . . . . . . . . . . . # . . . . . . . . . . . . -6 . . . . . . . . . . . # . . . . . . . . . . . .
. . . . . . . . . . . . # . . . . . . . . . . . . -7 . . . . . . . . . . . # . . . . . . . . . . . .
. . . . . . . . . . . . # . . . . . . . . . . . . -8 . . . . . . . . . . . # . . . . . . . . . . . .
. . . . . . . . . . . . # . . . . . . . . . . . . -9 . . . . . . . . . . . # . . . . . . . . . . . .
. . . . . . . . . . . #### . . . . . . . . . . . . -10 . . . . . . . . . . . . ### . . . . . . . . . . .
. . . . . . . . . . . # . . . . . . . . . . . . . -11 . . . . . . . . . . . . # . . . . . . . . . . .
. . . . . . . . . . . # . . . . . . . . . . . . . -12 . . . . . . . . . . . . # . . . . . . . . . . .
. . . . . . . . . . . # . . . . . . . . . . . . . -13 . . . . . . . . . . . . # . . . . . . . . . . .
. . . . . . . . . . . # . . . . . . . . . . . . . -14 . . . . . . . . . . . . # . . . . . . . . . . .
. . . . . . . . . . . # . . . . . . . . . . . . . -15 . . . . . . . . . . . . # . . . . . . . . . . .
. . . . . . . . . . #### . . . . . . . . . . . . . -16 . . . . . . . . . . . . . ### . . . . . . . . . .
. . . . . . . . . . # . . . . . . . . . . . . . . -17 . . . . . . . . . . . . . # . . . . . . . . . .
. . . . . . . . . . # . . . . . . . . . . . . . . -18 . . . . . . . . . . . . . # . . . . . . . . . .
. . . . . . . . . . # . . . . . . . . . . . . . . -19 . . . . . . . . . . . . . # . . . . . . . . . .
. . . . . . . . . . # . . . . . . . . . . . . . . -20 . . . . . . . . . . . . . # . . . . . . . . . .
. . . . . . . . . . ## . . . . . . . . . . . . . . -21 . . . . . . . . . . . . . . ## . . . . . . . . .
. . . . . . . . . # . . . . . . . . . . . . . . . -22 . . . . . . . . . . . . . . # . . . . . . . . .
. . . . . . . . . # . . . . . . . . . . . . . . . -23 . . . . . . . . . . . . . . # . . . . . . . . .
. . . . . . . . . # . . . . . . . . . . . . . . . -24 . . . . . . . . . . . . . . # . . . . . . . . .zmeyka.pas
Моя первая попытка написать змейку на паскале. Написана где-то в конце 2019 года. Поле оказалось слишкком большим 128 на 128, а по неопотности я не использовал константы и на размере поля была завязана вся логика игры.
0 48 57/45 27/509044
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ????????????????????????????????? ???
??? ??? ??? ???
??? ??? ??? ???
??? ??? ??? ???
??? ??? ???
??? ??????????????????????????????????????????????????????????????? ???
??? ??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
??? ???
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
