Пятница, 29 Марта 2024, 11:44

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » C/C++ » Условный оператор If, и его проблемы
Условный оператор If, и его проблемы
BetMoraДата: Воскресенье, 21 Февраля 2010, 16:43 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
при оспользовании операторов if, else может возникнуть проблемка.
к примру мне нужно реализовать часть ИИ в игре:
существует 2D сетка:
|x1y1|x2y1|x3y1|
|x1y2|x1y2|x1y3|
|x1y4|x1y5|x1y6|
мне нужно:
если игрок находится в x1y4, а бот в x1y1, бот передевигался в клетку x2y1,
я предлагаю реализовать так:
if (humanPosition==x1y4)
{
*тут комманды передвижения бота в клетку x2y1*
*следующие действия, к примеру спрятаться*
}
else
{
*комманда остаться на месте...*
}

но проблемма в том что, если игрок позиция игрока не равна х1у4, пойдет на выполнение оператор: *следующие действия......*
сообственно вопрос:
убрать оператор else, заменив оператор *следующие действия..* на стоять на месте? или же есть другой способо?
p.s. вслучаи верности условия, мне нужно будет выполнить еще несколько операторов включая *следующие действия...*, а если я его
заменю на остаться на месте, бот перейдет на другую клетку, и останиться там, а мне нужны совершенно другие результаты...


Перекуём баги на фичи!
nilremДата: Воскресенье, 21 Февраля 2010, 16:49 | Сообщение # 2
Просветленный разум
Сейчас нет на сайте
А почему не так:

Code

if (humanPosition != x1y4)

зы: Это не проблема if, это твоя неспособность придумать правильный алгоритм. Почитай про поиск пути, или про алгоритмы, например Р.Сэджвик. "Фундаментальные алгоритмы на С++"


Windmill 2

WindMill 2D Game Engine
BetMoraДата: Воскресенье, 21 Февраля 2010, 17:01 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
ну так тогда получается что оператор выполнится в случае того если игрок в любой позиции кроме x1y4, а в целях сохранения задумки, мне нужно что бы было именно так

это не его проблемы, это проблемы для меня

лан спс, буду додумывать, пока качается Седжвик smile


Перекуём баги на фичи!

Сообщение отредактировал BetMora - Воскресенье, 21 Февраля 2010, 17:01
nilremДата: Воскресенье, 21 Февраля 2010, 17:03 | Сообщение # 4
Просветленный разум
Сейчас нет на сайте
А дошло. Хоть бы описывал понятно.
Тебе нужно следующее.
Если в зоне видимости бота появляется игрок, бот должен его атаковать.
Одним if тут уже не обойдешься. Нужно работать, например, с состояниями бота.
Пример:
Бот имеет 2 состояния

Стоять
Атаковать - (все действия бота по движению к цели и ее атаке)

Алгоритм:

if(расстояние до цели < 2)
{
перевести бота в состояние Атаковать.
}
else
{
перевести бота в состояние Стоять
}

Ничего сложного. (на словах smile )


Windmill 2

WindMill 2D Game Engine
BetMoraДата: Воскресенье, 21 Февраля 2010, 17:43 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
во спасибки smile так уже лучше, я еще хотел реализовать режим, наверное большинство играли в зуму? biggrin и в zuma's revenge надеюсь тоже, в конце режима адвенчур, нужно будет победить отражения лягушки, если двинуть мышку влево, твоя лягушка сдвинется вправо на такое же расстояние, сообственно что-то вроде этого я и хотел реализовать smile а точнее. Если игрок передвигается, бот передвигается в противоположном направление, игрок стреляет - бот стреляет тоже.

Перекуём баги на фичи!

Сообщение отредактировал BetMora - Воскресенье, 21 Февраля 2010, 17:46
Форум игроделов » Программирование » C/C++ » Условный оператор If, и его проблемы
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг