|
1 / 1 / 0
Регистрация: 18.07.2009
Сообщений: 6
|
|
Змейка. Начало и конец.09.01.2012, 13:53. Показов 3124. Ответов 6
Метки нет (Все метки)
Решил написать Змейку с нуля. Не хотелось бы никуда подглядывать и копировать чужие идеи - хочется создать свое "колесо" =) Решил все это сделать из-за желания и необходимости изучить VC++, а выбранная задача, как мне кажется, научит не малому.
Использую VC++ 2010, из литературы: "VC++ в задачах и примерах" Н. Культин, "Программирование на С++" У.Савич, "С/С++ MS Visual C++ 2010" Б.Пахомов. Мне бы хотелось в этой теме получать всестороннюю помощь более опытных программистов, но не делом, а словом =) т.е. не пихать мне готовых конструкций, а указывать на ошибки или источники или те темы, которые по вашему необходимо изучить для реализации какой-то фичи. Пока кроме форм связанных друг с другом у меня ничего не имеется, посему опишу пока наброски программы (м.б. посоветуете иную реализацию). Что планирую: 1) Форма 1 - кнопки выход, новая игра. 2) Форма 2 - выбор сложности, кнопка Назад 3) Форма 3. Здесь две задумки - а) создать несколько готовых форм и запускать отдельные по выбору сложности. б) использовать 3 разные функции обработки и постройки игрового пространства, где будет генерироваться в одной форме для разных сложностей разные условия исполнения (преграды, скорость) 4) Форма 4 - выводится в случае смерти змейки с выводом счета. 5) Планирую реализовать сетевую игру =))) Игра на двоих. Первый играет жертвой, другой змеей. Идея и реализация еще в разработке. Как вариант игра против компа. Движение змеи: змея имеет длину в 3 сегмента. Движение происходит по двумерному массиву заданной величины. Змея имеет вектор движения, выбираемый пользователем, нажатием кнопок направления, само движение зациклено и бесконечно (остановка в том случае, если голова окажется в ячейке с сегментом туловища или препятствия. Идет проверка перед перемещением, т.е. если ячейка пуста - двигаем, иначе вылазит форма 4). Как увеличить змею еще не думал, но как вариант при съедении вишни, в центре тела (скажем перед последнем сегментом) втыкается еще один сегмент змеи. Был бы благодарен всем тем, кто окажет помощь в написание ЭТОГО ) В конце собираюсь выложить исходники с сетевой и без сетевой игры.
0
|
|
| 09.01.2012, 13:53 | |
|
Ответы с готовыми решениями:
6
Поменять начало и конец
|
|
18 / 18 / 2
Регистрация: 28.12.2011
Сообщений: 176
|
||
| 09.01.2012, 21:58 | ||
|
формы в таком деле это 5%, на мой взглад.. Вы замарочитесь с перехватом сообщений(для управления) да графикой. Но и это 30%
А сам алгоритм работы змейки.. И вот возник вопрос: а кок можно играть против змейки - жертвой? Непонятно. Если вам удастся, то многому научитесь, спору нет, но вот что с этим делать? Практичней было бы (если уж хотите чего то глобального) класс свой написать, мож какой-нибуть ворд слепить, архиватор.. И вообще задачник купить, да шлифовать(это вовсе не нудно, там таакое подчас найдешь!!). Впрочем, в чужой монастырь...
0
|
||
|
1 / 1 / 0
Регистрация: 18.07.2009
Сообщений: 6
|
||
| 10.01.2012, 18:49 [ТС] | ||
|
Немного поразмыслив, решил сделать движение змеи путем использования свитча - если пользователь жмет кнопку, то запускается свитч по выбору направления змеи, далее ссылаемся на функцию, которая постоянно обрабатывает движение в нужном направлении и проверяет на возможность передвижения, нажатие клавиш пользователем, следит за ростом змеи....хотя нет. должна быть отдельная функция - обработчик препятствий... Мне кажется логика программы запутана немного )
0
|
||
|
18 / 18 / 2
Регистрация: 28.12.2011
Сообщений: 176
|
|
| 10.01.2012, 20:30 | |
|
Просто в задаче слишком много задач) Насчет обработчика препятствий - не заморачивайтесь, сделайте просто по периметру поля, не усложняйте. Может стоит взять реализованную змейку, но на другом языке?
Для начала напишите алгоритм. Самый самый простой. Поглядим.
0
|
|
|
|
|
| 10.01.2012, 20:45 | |
|
Lazar, хочешь еще задачу? Сделай так, чтобы изображение головы и хвоста отличались от остальных звеньев змейки, при этом различались между собой и самое главное имели направление движения. Т.е. например движется голова вверх, а хвост влево и тут юзер нажимает вправо. Рисунок, изображающий голову должен быть например вытянутым (чтоб было видно направление), так вот при нажатии вправо рисунок головы меняется (поворачивается боком), а хвост поменяется только когда дойдет до нужного места.
Когда-то давно тоже змейку писал, очень меня заняла именно это проблема)
0
|
|
|
18 / 18 / 2
Регистрация: 28.12.2011
Сообщений: 176
|
|
| 10.01.2012, 20:55 | |
|
Кастанеда крут!)
0
|
|
|
|
||
| 10.01.2012, 21:16 | ||
|
Тогда и вставка, и удаление сегментов будут делаться просто и логично, и направление движения каждого отдельного сегмента определяется легко в любой момент. Все будет работать по цепочке без особого с вашей стороны участия.
0
|
||
| 10.01.2012, 21:16 | |
|
Помогаю со студенческими работами здесь
7
начало и конец цикла в коде.
Четные в начало массива, нечетные - в конец Перенос букв в начало строки, а цифр в конец C++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|