|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
Змейка17.10.2010, 06:00. Показов 13237. Ответов 95
Метки нет (Все метки)
wxWidgets - вот и пошло первое написание игры. Ну относительно игры конечно. Проблема вот в чем. Нам препод показал как сделать, чтобы "змейка" двигалась. Поднастроил, чтобы она двигалась правильно. Влево - влево, вниз - вертикально вниз и т.п. Но есть проблемка. При таком коде, что соответственно:
0
|
||||||
| 17.10.2010, 06:00 | |
|
Ответы с готовыми решениями:
95
Змейка не работает Змейка. Нужен совет как доработать программу Змейка на QT C++ |
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 20.10.2010, 23:41 [ТС] | |
|
dxdy, На кьюте она легче пишется. Видел код полной игры. Непрофессиональный код конечно, довольно простой.
0
|
|
|
99 / 99 / 14
Регистрация: 14.06.2010
Сообщений: 284
|
||
| 21.10.2010, 00:34 | ||
0
|
||
|
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
|
||||||||||||||
| 21.10.2010, 01:25 | ||||||||||||||
![]()
Добавлено через 3 минуты
1
|
||||||||||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 21.10.2010, 07:48 [ТС] | |
|
rangerx, Кстати... А включение вообще нужно или же нет? Мб friend классом звено для змейки сделать?
0
|
|
|
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
|
|||||||
| 21.10.2010, 18:12 | |||||||
1
|
|||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|||||||||||
| 22.10.2010, 22:39 [ТС] | |||||||||||
|
rangerx, Ну собственно да. Функции то есть нужные. Буду сегодня писать скорее всего.
Добавлено через 8 часов 46 минут Итак... Вообще что-то не совсем получается. Как должно происходить все - я примерно понял... НО... Как отрисовать отдельный фрагмент? Впринципе отрисовывается... Но... Вообщем, правильный ли алгоритм? На числа не смотреть. Эксперементировал. const wxPoint& old_pt - значение координат до их изменений.
Пришлось использовать так.
Что я сделал за сегодня в итоге... Разбил классы по хедерам. Добавил некоторые новые функции. Но пока вопросы только те которые задал тут. В отрисовке - не могу понять, то-ли дело с числами, то-ли сам алгоритм неверен. Я так понимаю, что мы убираем элемент с хвоста -> закидываем элемент перед головой и так далее. Верно? По-моему код это и должен реализовать... Добавлено через 19 часов 24 минуты Кто подскажет как быть?
0
|
|||||||||||
|
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
|
||||||||||||||
| 23.10.2010, 00:54 | ||||||||||||||
|
Метод DoDraw должен только рисовать, а у тебя он занимается непонятно чем... Все движения и перестановки это поведение самой змейки, а не канвы. Кстати говоря, на мой взгляд возможно лучше не делать никаких DoDraw в классе MyCanvas, а сделать метод draw для классов MySection и MySnake. А их конструкторы пусть принимают указатель на канву на которой будут отрисовываться. MySection::draw() пусть рисует само звено, а MySnake::draw() пусть вызывает MySection::draw() для каждого из своих звеньев. Но делать так или оставить как есть решай сам.
1
|
||||||||||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||||||||||||
| 23.10.2010, 00:54 [ТС] | ||||||||||||||||
|
rangerx, DoDraw то вцелом только и рисует... Про методы классов да, пожалуй получше будет.
Но я собственно убираю последний элемент и ресайзаю вектор, после чего рисую с новыми координатами элемент перед головой. Один раз это проходит. Далее змейка так и остается. Т.е. Было.
0
|
||||||||||||||||
|
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
|
||||||||||
| 23.10.2010, 01:21 | ||||||||||
1
|
||||||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|||||||||||
| 23.10.2010, 01:25 [ТС] | |||||||||||
|
rangerx, Движение то делается. Но вот это
А разве шаг сам не делается? Мы ведь из таймера вызываем, в котором по сути делается шаг итак...
Никогда бы не подумал, что так дико буду тупить над реализацией змейки...
0
|
|||||||||||
|
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
|
|||||||||
| 23.10.2010, 02:35 | |||||||||
1
|
|||||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|||||||||||||||||||||
| 23.10.2010, 02:44 [ТС] | |||||||||||||||||||||
|
rangerx, Не против если не в архиве? По файлам покидаю.
Вся проблема в том, что я запутался в коде + с настолько новой областью довольно трудно разобраться... Спасибо тебе за помощь! Сейчас смысла сидеть всю ночь видимо нет, потому завтра у препода спрошу, чтобы он посмотрел код... Посоветует что-нибудь наверняка. Как посмотришь код - отпишись, что не так, что должно быть по другому. Хорошо? Код
0
|
|||||||||||||||||||||
|
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
|
||||||
| 23.10.2010, 03:49 | ||||||
|
Для начала тебе просто нужно сесть и подумать над поведением объектов. Т.е. продумать сам интерфейс классов. Например змейка
1
|
||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 23.10.2010, 04:10 [ТС] | |
|
rangerx, Спасибо! Код я так понимаю лучше с нуля набить?
ЗЫ Код совсем плох?
0
|
|
|
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
|
|||||||
| 23.10.2010, 04:25 | |||||||
P.S. К тому, что я написал ещё не мешало бы добавить метод для получения позиции головы змейки чтобы иметь возможность сравнить позицию головы с позицией того, что собственно змейка будет собирать. Что-то вроде
1
|
|||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 24.10.2010, 17:10 [ТС] | |
|
rangerx, Препод говорил многое... Но уже ничего не помню, помню, что мне точно надо будет все переписать, ибо я переборщил несколько... Так что собственно вот...
0
|
|
|
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
|
||
| 24.10.2010, 20:11 | ||
1
|
||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 24.10.2010, 20:32 [ТС] | |
|
rangerx, Блин. Сегодня боюсь не вспомню.
Вообщем буду пробовать переписывать. Начиная с завтра-послезавтра. К субботе надо постараться сделать...)
0
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|||||||||||
| 26.10.2010, 02:58 [ТС] | |||||||||||
|
Чорт. Видимо я совершенно не способен к пониманию графики...
Сделал что-то вроде такого... Интерфейс по сути неплохой... Я решил не отрывать голову/хвост у змеи, а просто менять координаты в соотвествии с нужным направлением. Т.е. движение допустим вправо изначально. Нажали вниз, голова сдвинулась вниз, остальные элементы дальше вправо. И т.д. Это ведь должно быть возможно? Не могу только понять как это связать с событием:
0
|
|||||||||||
|
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
|
|||||||||||||
| 26.10.2010, 04:53 | |||||||||||||
@@@ - движемся влево (зелёный это хвост) Тепер нажимаем кнопку "вниз"(происходит два шага): 1) @@ - хвост стал точно на место головы(т.е. по порядку перемещённый элемент стал пeрвым(перед головой), но его координаты пока совпадают с координатами старой головы) Внизу под зелёным старая голова. ) 2) Тепер перемещаем новую голову(зелёную) вниз, и получаем @@ @ и т.д. Ты же, как я понимаю, хочешь сделать сдвиг всех элементов вектора... Сделать это конечно возможно, но только зачем, непонятно. Это самое неэффективное решение(если ещё учесть, что ты используешь вектор), которое только можно придумать. По поводу функции OnKeyboard... Во-первых зачем все эти wxGetKeyState? Во-вторых, почему направление у тебя опять "гуляет" отдельно от змейки(или это просто старый вариант функции)? И наконец зачем так извращаться с тернарным оператором, когда можно использовать switch?
1
|
|||||||||||||
| 26.10.2010, 04:53 | |
|
Помогаю со студенческими работами здесь
40
Прокомментировать код игры "змейка" в QT
Игра "Змейка": чтобы змейка не съедала сама себя Змейка Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика
Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
|
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации:
В классе Работник добавить:
накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни
коэффициентПрезентеизма — снижает продуктивность. . .
|
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день.
Для работы необходим браузер,. . .
|
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности
Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано.
. . .
|
|
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
|
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива
Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
|
Диалоги с ИИ
zorxor 23.05.2026
Насколько я понимаю - Вы - Искусственный Интеллект. Это так?
Да, всё верно. Я — искусственный интеллект.
Я представляю собой большую языковую модель, созданную для помощи в самых разных задачах. . . .
|
Модель здравосохранения 14. Собираем всю модель вместе.
anaschu 22.05.2026
Модель собрана. В будущих постах на видео я покажу, как она работает.
В этом посте запускаем её, проверяем результаты и разбираем что можно с ней делать дальше.
Перед запуском проверяем. . .
|