![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Software Developer
Старожил
Регистрация: 19.12.2008
Сообщений: 2,070
|
![]()
Народ, пожалуйста помогите.
Пытаюсь написать игру "Змейка". В качестве тела змеии использую массив из компонентов TShape (создаю их в отдельной процедуре - конструктором). Сама змейка движется, только вот когда управляешь ей, она НЕ правильно движется. Например при движении вверх все Shape'ы начинают вдигатся вместе не поварачивая. А нада как в обычной змейке, что бы она умела поворачивать. Проблема : как сделать управление змейкой (Вверх, Вниз, Вправо, Влево) что бы она правильно поворачивала??? Вот то что я уже написал: Код:
Подскажите плз.
Будь проще и люди к тебе потянутся
|
![]() |
![]() |
![]() |
#2 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
![]()
Я делал когда-то змейку. Сейчас и не вспомню уже как я реализовал этот механизм. Принцип такой, что с каждым шагом, координаты одной части змеи переходят в следующую, а новые получает только голова. То есть с клавиатуры управляется голова, а все тело получает предыдущие координаты. Можно в цикле это сделать, тогда нужно чтобы части змеи представляли из себя массив.
Вот для примера событие смены координат головы, все условно, mas - элемент змеи, n - новые координаты Код:
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог Последний раз редактировалось mutabor; 19.12.2008 в 20:40. |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 24.07.2008
Сообщений: 279
|
![]()
Если хорошо приглядеться, то у змейки в процессе движения прибавляется 1 клетка вначале и убирается последняя. В момент роста просто не происходит укорачивание.
Если все таки хотите делать массивом а не списком, советую перемещать последний элемент вначало - те сдвигать массив. Так вы избавитесь от лишних перерисовок.
Сказал и загрустил от бесспорности своей правоты.
|
![]() |
![]() |
![]() |
#5 |
Software Developer
Старожил
Регистрация: 19.12.2008
Сообщений: 2,070
|
![]()
все, уже готово управление, спасибо за советы.
Будь проще и люди к тебе потянутся
Последний раз редактировалось spamer; 20.12.2008 в 20:12. |
![]() |
![]() |
![]() |
#6 |
Software Developer
Старожил
Регистрация: 19.12.2008
Сообщений: 2,070
|
![]()
Народ может кто подскажет еще. как сделать что бы змея что то съедала и увеличивалась???
Будь проще и люди к тебе потянутся
|
![]() |
![]() |
![]() |
#7 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
![]()
Ну так говорили уже, когда съедает то хвост не удалять и она станет длиннее.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 15.08.2007
Сообщений: 118
|
![]()
Вот как то от скуки на работе набросал простеньную змейку...
Всё работает, познавательно будет посмотреть ![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Подскажите ссылку на примеры к книге Архангельского "Программирование в Делфи7". | SkAndrew | Свободное общение | 0 | 24.11.2008 12:17 |
Подскажите плз, как распаковать ".tar.gz"? | Gauss | Софт | 6 | 10.10.2008 00:00 |
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует | skobets | Общие вопросы C/C++ | 2 | 03.06.2008 06:51 |
Создаю диаграмму "Bar". Подскажите как убрать растояние между "столбами" | MAcK | Компоненты Delphi | 11 | 24.10.2007 10:49 |