Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2020, 11:58   #1
kilogram4ik
Пользователь
 
Регистрация: 15.10.2020
Сообщений: 68
По умолчанию не могу сделать смерть змейки

пытаюсь сделать змейку в паскале. все работает нормально , но не получается сделать смерть змейки .
помогите очень прошу

напишите в вк или на почту

1)https://vk.com/stanislav_28
2)ppitukhin46@gmail.com

Вот код программы:

uses graphABC, ABCobjects;

var
i, xhead, yhead,applex,appley, z: integer;
snakex:array[1..100] of integer;

head: CircleABC;

snake: array[1..1000] of CircleABC;

apple:CircleABC;

score:TextABC;

box,speead:integer;


procedure keyDoen(key: integer);
begin

if (key = vk_Right) then z := 1;
if (key = vk_left) then z := 2;

if (key = vk_Up) then z := 3;
if (key = vk_Down) then z := 4;

end;


begin
box:= 4;
speead:=120;
for i := 0 to 23 do
begin
line(0, i * 20, windowWidth, i * 20,clwhite);
end;
for i := 0 to 32 do
begin
line(i * 20, 0, i * 20, windowHeight,clwhite);
end;

xhead := 3 * 20 - 10;
yhead := 2 * 20 - 10;

applex:=3*20 - 10;
appley:=6*20 - 10;


apple := CircleABC.Create(applex, appley, 10, clred);

head := CircleABC.Create(xhead, yhead, 10, clBlue);


for i := 1 to box do
begin

snake[i] := CircleABC.Create(xhead, yhead + 10 * i, 10, clBlue);

end;

score:= textAbc.Create(10,0,20,'0',clblack) ;

while(true) do
begin

onKeyDown := keyDoen;

if(z <> 0) then
begin


for i := box downto 2 do
begin
snake[i].MoveTo(snake[i - 1].Position.x, snake[i - 1].Position.y);
end;

snake[1].MoveTo(xhead - 10, yhead - 10);
end;

if (z = 1) then xhead := xhead + 20
else if (z = 2) then xhead := xhead - 20
else if (z = 3) then yhead := yhead - 20
else if (z = 4) then yhead := yhead + 20;


if (xhead > windowWidth) then xhead := 10;
if (xhead < 0) then xhead := windowWidth - 10;

if (yhead > windowHeight) then yhead := 10;
if (yhead < 0) then yhead := windowHeight - 10;


if ((xhead = applex) and (yhead = appley)) then

begin



applex:=random(1,23)*20 - 10;
appley:=random(1,20)*20 - 10;

apple.MoveTo(applex - 10, appley - 10);

snake[box+1]:= CircleABC.Create(xhead, yhead + 10 * box+1, 10, clBlue);
inc(box);

speead:= speead - 3;

score.Text:= ((score.Text).Tointeger+1).Tostring ();
end;


head.MoveTo(xhead - 10, yhead - 10);
sleep(speead);
end;
end.

Последний раз редактировалось kilogram4ik; 21.10.2020 в 19:24.
kilogram4ik вне форума Ответить с цитированием
Старый 21.10.2020, 15:07   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
но не получается сделать смерть змейки .
? это завершение цикла ?
Цитата:
Код:
while(true) do
begin
if <мы помираем> then break;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 21.10.2020, 15:31   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Цитата:
Сообщение от kilogram4ik Посмотреть сообщение
напишите в вк или на почту
Ну тогда и вопрос задавайте в ВК или по почте. А то вопрос на форуме, а ответ будьте добры выслать в конверте заказным письмом Почтой России
Arigato вне форума Ответить с цитированием
Старый 21.10.2020, 19:19   #4
kilogram4ik
Пользователь
 
Регистрация: 15.10.2020
Сообщений: 68
По умолчанию

evg_m, это начало бесконечного цикла
kilogram4ik вне форума Ответить с цитированием
Старый 21.10.2020, 19:22   #5
kilogram4ik
Пользователь
 
Регистрация: 15.10.2020
Сообщений: 68
По умолчанию

Arigato, просто я могу и забыть зайти на форум
kilogram4ik вне форума Ответить с цитированием
Старый 21.10.2020, 19:26   #6
zvygin1964
Старожил
 
Аватар для zvygin1964
 
Регистрация: 19.06.2013
Сообщений: 2,463
По умолчанию

Цитата:
Сообщение от kilogram4ik Посмотреть сообщение
забыть
Положи деньги на площади и забудь !
Репутация: полный "0"
zvygin1964 вне форума Ответить с цитированием
Старый 21.10.2020, 19:29   #7
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Цитата:
Сообщение от kilogram4ik Посмотреть сообщение
просто я могу и забыть зайти на форум
Значит и ответ на поставленный вопрос не очень-то и нужен. А если он вам не нужен, то нужно ли кому-то на это тратить свое время? Еще и не забыть вам напомнить, чтобы вы зашли на форум...
Arigato вне форума Ответить с цитированием
Старый 21.10.2020, 23:12   #8
kilogram4ik
Пользователь
 
Регистрация: 15.10.2020
Сообщений: 68
По умолчанию

Arigato, ....
kilogram4ik вне форума Ответить с цитированием
Старый 21.10.2020, 23:51   #9
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

Цитата:
Сообщение от kilogram4ik Посмотреть сообщение
Arigato, ....
Что....???
Решать поставленную задачу кому больше нужно?
Сомневаюсь что Arigato прям горит и трепещит, дай задачку порешать..
I am not a wizard, I am just learning.
Desc вне форума Ответить с цитированием
Старый 22.10.2020, 00:20   #10
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Так, к слову - https://www.programmersforum.ru/showthread.php?t=336910
Arigato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать движение змейки по синусоиде в vba Yurec2407 Помощь студентам 1 08.06.2014 16:04
Смерть, смерть, кругом синяя смерть! Alex Cones Компьютерное железо 10 04.05.2011 18:40
Зачет Или Смерть!!!!!!!!! rabe666 Помощь студентам 8 05.06.2008 16:03