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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.01.2009, 14:24   #1
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию Игра "Snake"

Вот написал игру "Змейка", вроде все норм пашет, но есть лаги. Саму змею создаю из компонентов TShape.
1.Как проверить врезалась змея сама в себя или нет. Если врезалась, то - конец игры. Я начинал делать проверки на совпадение координат, но получалось, что при старте игры уже - Проигрыш.
2.И как реализовать, что бы когда змея двигалась, например ВПЕРЕД, то НАЗАД не могла двигаться, и наоборот?

Прикрепил исходник, если не тяжело - помогите.

P.S. Если найдете еще какие то лаги, скажите.
Вложения
Тип файла: rar Snake.rar (234.2 Кб, 36 просмотров)
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 24.01.2009, 20:14   #2
Nester
Форумчанин
 
Аватар для Nester
 
Регистрация: 22.10.2008
Сообщений: 103
Радость

Держи моего червячка
надо немного облагородить а так всё работает
Удачи!!!
Вложения
Тип файла: rar Worm.rar (11.9 Кб, 56 просмотров)
Никто не знает больше чем не знаю я
Nester вне форума Ответить с цитированием
Старый 24.01.2009, 20:37   #3
andrey4623
Форумчанин
 
Аватар для andrey4623
 
Регистрация: 31.05.2007
Сообщений: 266
По умолчанию

Сделай переменную, в ней отслеживай, в какую сторону двигается змейка. Если вправо - то при нажатии на "стрелка влево" ничего не делать, если вверх - то на "вниз".
andrey4623 вне форума Ответить с цитированием
Старый 24.01.2009, 22:24   #4
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

andrey4623 спасибо это сделал, теперь двигается как надо.

Nester спасибо за исходник, все расписано, разобрался сразу.


А как быть с этим вопросом ???:
Цитата:
1.Как проверить врезалась змея сама в себя или нет. Если врезалась, то - конец игры. Я начинал делать проверки на совпадение координат, но получалось, что при старте игры, уже - Проигрыш.
Просто уже не знаю как сделать эту проверку.
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 24.01.2009, 22:42   #5
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

Надо поступать слегка иначе
Для этого сначала просчитайте координату, куда будет ползти змей (перед ходом).
Потом определяйте что там: Кролик, Пуcтота или же Свой же хвост
Ну а если хвост то Game Over.
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Старый 24.01.2009, 22:59   #6
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Dj_smart в чем то и дело, я не пойму как это сделать.
Если не тяжело, можно примерчик?
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 24.01.2009, 23:12   #7
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

1) Допустим Вы знаете в какую сторону ехать нужно и позицию головы.
Знач пускай X,Y - позиция головы ; x1,x2 - 2 переменные, определяющие куда ехать; mas - массив карты;
Если x1<0 то влево, x1>0 то вправо и x1=0 стоять на месте (в горизонтали)
Если y1<0 то вниз, y1>0 то вверх и y1=0 стоять на месте (в вертикали)
типы клеток:
0 - пусто
1 - еда
2 - хвост
2) Тогда:
Цитата:
if (mas[x+x1,y+y1]=2) then GameOver;
Как видите, всё решается одой строчкой

--
И не забываем про волшебное слово.
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Старый 24.01.2009, 23:28   #8
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Оу первую проблему я уже решил,подсказали, сам написал.

А на счет второй. Дело в том , что змею создаю из компонентов TShape. Тело змеи храню в списке и еду также в списке (еда - тоже компонент TShape). Проверку на съедание еды делаю так, проверяю совпадают ли левая и верхняя позиции еды и головы, если да то увеличиваем змею на 1.
Так вот, для того чтобы сделать проверку врезалась змея в себя или нет, я сравнивал также левую и верхнюю позиции головы и всего остального тела, но получалось что при запуске игры, уже - Проигрыш. Вот не пойму почему? Или какой еще есть способ проверки для моей змеи?
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 24.01.2009, 23:31   #9
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

Гг, для начала советую выбрать другой способ прорисовки змея(Например Image.Canvas). Да и массивы используйте.
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Старый 24.01.2009, 23:36   #10
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Dj_smart та я бы рад, так мене преподаватель сказал, что именно через списки и для начала с TShape. Вот уже всю сделал, а как эту проверку вставить не знаю. Что посоветуешь с проверкой?
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игра "Поле чудес". Нужна trOid Фриланс 15 24.11.2008 18:03
Игра "Ghost Recon Advanced Warfighter 1"(GRAW) Air Gamedev - cоздание игр: Unity, OpenGL, DirectX 0 27.07.2008 08:07
Игра "четный" "нечетный" bigcat Помощь студентам 1 01.03.2008 00:24
Ещё одна игра "Змейка" Simply-Art Софт 17 05.07.2007 04:10