Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
TamaGOch
9 / 9 / 0
Регистрация: 11.12.2012
Сообщений: 152
#1

Прошу совета в привидении игры к логике - C++

14.06.2013, 19:23. Просмотров 187. Ответов 0
Метки нет (Все метки)

Представьте себе такую игру: несколько, для краткости, так сказать, юнитов. Есть игровое поле. Каждый юнит управляется отдельной программой, написанной игроком. Есть 9 вариантов поведения юнита: 4 направления движения, 4 направления "выпускания" атакующего снаряда, и вариант стояния на месте. Есть следующие фазы игры: шаг юнита, проверка всех действующих снарядов на попадание в юнитов, шаг снарядов (т.е. перемещение на следующую клетку, в соответствии с направлением движения снаряда). Я никак не могу решить, какой из "тактов" игрового процесса выбрать в качестве оптимального:
1) предположим в игре два юнита, алгоритм такой:
о- юниту доставляется информация о положении дел на поле,, ну понятно в общем
о- юнит делает ход (одно из 9-ти вариантов выше, в случае решения об атаке, снаряд появляется в клетке,
смежной с юнитом, в соответствии с направлением, это ясно)
о- проверка попадания снарядов (на случай, если юнит наступил на клетку со снарядом)
о- движение снарядов в их следующие клетки
о- снова проверка снарядов, на случай попадания их в игроков

плюсы данного алгоритма:
+ игрок не может наступить в клетку, в которую пустил снаряд в предыдущем ходу, да и вообще не может
попасть на свои снаряды
минусы:
- со стороны программы юнита приходится в качестве клеток, нежелательных к ходу принимать не только клетку
с действующим снарядом, но и учитывать, что после него будет n-1 движений снаряда, после хода
остальных игроков, т.е. усложнение алгоритмов поведения юнитов, дополнительная головная боль для игрока, да
и к тому же, с какой-то стороны, нелогичность в плане разницы между количеством ходов отдельного юнита
и снарядов на поле, ну вы поняли

2) вторая версия:
о- всем игрокам доставляется одинаковая информация о положении дел на поле, каждый принимает решение,
которые мы записываем в массив
о- осуществляем ход каждого юнита
о- проверяем попадание снарядов в юнитов
о- делаем ход всех снарядов
о- снова проверяем снаряды на попадание

плюсы:
+ работа игрока над алгоритмом юнита становится не столько нудной, сколько чуть более интересной, т.к. тут
все игроки ходят одновременно и кто его знает, что будет потом,
+ игроку не надо просчитывать, что будет с его юнитом спустя все ходы соперников и где будут находится
летящие в разные стороны снаряды
+ присутствует хоть что-то похожее на риал-тайм
минусов побольше чем в первом:
- игрок может наступить на пущенный им в прошлом ходу снаряд (хотя и можно кинуть эту проблему на плечи
игроку, мол, не стоит наступать туда, куда стреляешь)
- мне кажется, что наблюдателю будет сложно усмотреть за всеми юнитами сразу, поправьте, если не прав
- а этот минус скорее не минус, а временный вопрос о том, что необходимо будет ввести в игру понятие
перезарядки, т.е. количество ходов, через которое можно совершить следующий выстрел, думаю это оправдано

в общем я всеми руками за второй метод, однако не могу придумать решения проблемы наступания на собственные же снаряды, поэтому решил обратиться за помощью, ну или просто послушать здравые мысли, заранее благодарю.

странно, что где-то не туда нажал на тач паде и откуда-то вылетел этот текст "в момент следующего хода представляет интерес", с первого взгляда не нашёл того места, быть может исправлю))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2013, 19:23     Прошу совета в привидении игры к логике
Посмотрите здесь:

Совсем нуб просит совета C++
C++ Работа с файлами, новичек ищет совета.
Задача по математической логике C++
C++ Прошу!
C++ Профилирование, C++ и вставки ASM, прошу совета
C++ Ошибка в логике программы
По какой логике работают плейсхолдеры в данных примерах? C++
C++ Вывести результаты голосования совета факультета в процентах
Ошибка при компиляции. В логике ошибок не замечено C++
C++ Прошу совета по выбору API для изучения

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 03:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru