Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите сделать игру "змейка" 
:(
    Опции темы
xvr
Дата 13.10.2009, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(Lehon @ 13.10.2009,  16:55)
Не, это у меня уже есть, там описано почти все движения головы и яблока. Мне надо узнать как сделать грубо говоря
          shp->Top=Shape1->Top через 100 милисекунд;
          shp->Left=Shape1->Left через 100 милисекунд;

Настроить таймер на 100ms и в его OnTimer это и делать

Цитата

Есть мысль просто хранить шейпы вне поля видимости, а потом вызывать. 
Не надо их хранить. Их надо создавать по мере необходимости, я же писал как

Цитата

Но, много кода получается - описывать придется каждый шейп, и не дай бог юзер сможет сьесть 100 яблок, когда я максимум предусмотрел 98...
Для этого существует очередь (std::deque). Она вполне резиновая   smile 

PM MAIL   Вверх
Anikmar
Дата 13.10.2009, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



 smile 
Цитата(Lehon @  7.10.2009,  19:13 Найти цитируемый пост)
(Гугл не рулит. Точнее рулит под dos приложения. Исходники обычной тупой змейки даже под консоль...)


Вот вам и обычная змейка.  smile 

Под консоль или под что еще - но можно было посмотреть в этих исходниках как организован таймер и движение удава. Кстати под ДОС это даже несколько хлопотнее. Под виндами мне кажется намного проще змейку писать.

Эта тема переросла из движения кнопки в "Я пишу змейку".  smile 


PM MAIL ICQ   Вверх
Lehon
Дата 13.10.2009, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 5.10.2009

Репутация: нет
Всего: нет



Цитата

Настроить таймер на 100ms и в его OnTimer это и делать



Именно так реализовано перемещение шейп1 (голова), но мне не нужно что бы хвост повторял движение  головы в тот же миг что голова двигается, мне нужно что бы хвост повторил движение через 1 ход головы (через 100 мс, через 1 тик таймера, именно повторяя движение головы за прошлый "тик"-"ход") Именно потому и пишу - через 100 милисекунд после движения Шейп1.

Добавлено через 3 минуты и 1 секунду
Цитата

Вот вам и обычная змейка.   


 smile 

Цитата

Под консоль или под что еще - но можно было посмотреть в этих исходниках как организован таймер и движение удава. Кстати под ДОС это даже несколько хлопотнее. Под виндами мне кажется намного проще змейку писать.


Смотрел, читал, сломал мозг ничего не поняв ))) Наверно потому что все было реализовано радикально не так как я это себе представляю )))

 smile 
PM MAIL   Вверх
Anikmar
Дата 13.10.2009, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(Lehon @  13.10.2009,  22:06 Найти цитируемый пост)
Именно так реализовано перемещение шейп1 (голова), но мне не нужно что бы хвост повторял движение  головы в тот же миг что голова двигается, мне нужно что бы хвост повторил движение через 1 ход головы (через 100 мс, через 1 тик таймера, именно повторяя движение головы за прошлый "тик"-"ход") Именно потому и пишу - через 100 милисекунд после движения Шейп1.

Ну так в одном тике и двигайте сразу и голову и хвост. В чем проблема?
PM MAIL ICQ   Вверх
Usper
Дата 14.10.2009, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 13.4.2007

Репутация: 15
Всего: 15



А вы мой пост на первой странице читали? Там исходники моей реализации змейки, НЕ под ДОС. Размер исходника довольно небольшой, разобраться, как мне кажестя, труда не составит. Там, правда, никаких очередей (я тогда про STL вообще понятия не имел smile) и отрисовка идёт на канве а не шейпами. А по поводу длинной змейки, а нужна вам змейка длинной в 100 сегментов и более? Во всех подобных играх, которые я видел, после того как змейка вырастала до какой-то длинны, игра переходила на новый уровень.


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
Anikmar
Дата 14.10.2009, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(Usper @  14.10.2009,  08:09 Найти цитируемый пост)
Там, правда, никаких очередей (я тогда про STL вообще понятия не имел ) и отрисовка идёт на канве а не шейпами.

Я свою змейку написал в 1989 году на бейсике еще на БК0010  smile Там с очередями и с STL была капитальная проблема. (Как впрочем и с таймерами)
PM MAIL ICQ   Вверх
Lehon
Дата 14.10.2009, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 5.10.2009

Репутация: нет
Всего: нет



Цитата

Ну так в одном тике и двигайте сразу и голову и хвост. В чем проблема?


Тык нет проблемы - если устраивает змеюга ходящая на хвосте как на ногах, и следовательно растущая вверх ))) Координаты то в таком случае будут одинаковые.


Цитата

А вы мой пост на первой странице читали? Там исходники моей реализации змейки, НЕ под ДОС. Размер исходника довольно небольшой, разобраться, как мне кажестя, труда не составит. Там, правда, никаких очередей (я тогда про STL вообще понятия не имел ) и отрисовка идёт на канве а не шейпами. А по поводу длинной змейки, а нужна вам змейка длинной в 100 сегментов и более? Во всех подобных играх, которые я видел, после того как змейка вырастала до какой-то длинны, игра переходила на новый уровень.


У вас нет файла проекта? Код то из юнит1.кпп я вижу, разобраться пытался, но так и не смог понять что такое DrawQvadrat, azimut, и пара других страшных слов ) ( пытался даже воссоздать форму - одни ерроры ))) Сейчас посмотрел еще раз - что то ясно, что то лес ) В частности я совсем не вижу места реализации создания нового сегмента змеи, и главное - его движения. С головой все ясно, а вот хвост ))) Неясно совсем как его двигать правильно...
PM MAIL   Вверх
Lehon
Дата 14.10.2009, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 5.10.2009

Репутация: нет
Всего: нет



Цитата

Ну так в одном тике и двигайте сразу и голову и хвост. В чем проблема?


Тык нет проблемы - если устраивает змеюга ходящая на хвосте как на ногах, и следовательно растущая вверх ))) Координаты то в таком случае будут одинаковые.


Цитата

А вы мой пост на первой странице читали? Там исходники моей реализации змейки, НЕ под ДОС. Размер исходника довольно небольшой, разобраться, как мне кажестя, труда не составит. Там, правда, никаких очередей (я тогда про STL вообще понятия не имел ) и отрисовка идёт на канве а не шейпами. А по поводу длинной змейки, а нужна вам змейка длинной в 100 сегментов и более? Во всех подобных играх, которые я видел, после того как змейка вырастала до какой-то длинны, игра переходила на новый уровень.


У вас нет файла проекта? Код то из юнит1.кпп я вижу, разобраться пытался, но так и не смог понять что такое DrawQvadrat, azimut, и пара других страшных слов ) ( пытался даже воссоздать форму - одни ерроры ))) Сейчас посмотрел еще раз - что то ясно, что то лес ) В частности я совсем не вижу места реализации создания нового сегмента змеи, и главное - его движения. С головой все ясно, а вот хвост ))) Неясно совсем как его двигать правильно...
А насчет длины - эт разные змейки бывают ) В моем сотовом семилетней давности уровней не было, а макс длина у меня получалась 30 сегментов, но и экранчик был совсем маленький - в компе сотня проблемой не будет думаю ) Уровни это хорошо, и их я тоже хочу сделать, но потом, не все сразу ) От простого к сложному. Только вот простое какое то непростое )

Это сообщение отредактировал(а) Lehon - 14.10.2009, 15:52
PM MAIL   Вверх
xvr
Дата 14.10.2009, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(Lehon @ 14.10.2009,  15:48)
Цитата

Ну так в одном тике и двигайте сразу и голову и хвост. В чем проблема?


Тык нет проблемы - если устраивает змеюга ходящая на хвосте как на ногах, и следовательно растущая вверх ))) Координаты то в таком случае будут одинаковые.

Ну и фиг с ними  smile Не надо вообще ДВИГАТЬ ни голову ни хвост. Надо создавать НОВЫЙ шейп с головы и удалять старый с хвоста.

PM MAIL   Вверх
Usper
Дата 14.10.2009, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 13.4.2007

Репутация: 15
Всего: 15



Ой, и правда, вместе с грязной водой выплеснул и ребёнка (вместе с временными файлами из папки удалил и пару нужных)  smile Поправил вложение в том посте.


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
Anikmar
Дата 14.10.2009, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(xvr @  14.10.2009,  17:17 Найти цитируемый пост)
Ну и фиг с ними   Не надо вообще ДВИГАТЬ ни голову ни хвост. Надо создавать НОВЫЙ шейп с головы и удалять старый с хвоста.


А вот и нет. Надо в хвостовом шейпе поменять координаты - и он станет башкой  smile 

PM MAIL ICQ   Вверх
xvr
Дата 15.10.2009, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(Anikmar @ 14.10.2009,  21:55)
Цитата(xvr @  14.10.2009,  17:17 Найти цитируемый пост)
Ну и фиг с ними   Не надо вообще ДВИГАТЬ ни голову ни хвост. Надо создавать НОВЫЙ шейп с головы и удалять старый с хвоста.


А вот и нет. Надо в хвостовом шейпе поменять координаты - и он станет башкой  smile

Уже предлагал

Цитата

Одна оптимизация - если на данном шаге элемент хвоста должен удаляться, то его можно использовать как новую голову, что бы не удалять/создавать TShape.

PM MAIL   Вверх
Lehon
Дата 15.10.2009, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 5.10.2009

Репутация: нет
Всего: нет



Цитата

Ой, и правда, вместе с грязной водой выплеснул и ребёнка (вместе с временными файлами из папки удалил и пару нужных)   Поправил вложение в том посте.


Он просит файлы
RaizeComponentsVcl.bpi
RaizeComponentsVclDb.bpi

  smile  Может лучше всю папочку?  smile 


Пока не совсем понимаю мысль про поменять координаты хвоста и головы - точней как умная собака, понимаю а написать не могу. Что то вырисовывается, попробую но в результате сомневаюсь...
PM MAIL   Вверх
xvr
Дата 15.10.2009, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(Lehon @ 15.10.2009,  21:41)
Пока не совсем понимаю мысль про поменять координаты хвоста и головы - точней как умная собака, понимаю а написать не могу. 

Смотри:
Код

 TShape* tail = queue.back(); queue.pop_back(); // Взяли хвост
 delete tail; // Удалили
 TShape* head = new TShape(this); head->..... // Создали новую голову, проинициализировали
 head->Left = ...; head->Top = ...;
 queue.push_front(head);
Как видим тут удаляется и тут же создается TShape. Можно это не делать:
Код

 TShape* tail_head = queue.back(); queue.pop_back(); // Взяли хвост
 tail_head->Left = ...; tail_head->Top = ...; // Переиспользуем хвост под новую голову
 queue.push_front(tail_head);

PM MAIL   Вверх
Usper
Дата 16.10.2009, 07:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 13.4.2007

Репутация: 15
Всего: 15



Lehon, это и есть вся папочка. Всё дело в сторонних компонентах, которые установлены у меня. Даже если они не используются, билдер зачем-то при создании нового проекта запихивает в файл проекта ссылку на эти компоненты. Я поправил файл проекта (*.bpr), удалив из него эти ссылки. Надеюсь теперь заработает. Также запихнул в архив исполняемый файл проекта, чтобы можно было посмотреть на результат.  В очередной раз поправил пост.


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1092 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.