|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.07.2021, 21:27 | #1 |
Форумчанин
Регистрация: 16.02.2013
Сообщений: 169
|
Интеллект с противником в игре Pacman пр
Запрограммировал движение врага в функции EvTimer(UINT).При натыкании на стену враг должен не идти,однако он проходит сквозь стену.
Код на проход врага в функции EvTimer (здесь),вся программа ниже.В функции EvKeyDown осуществляется движение колобка нашего , функция проверяет на стену,если он натыкается на стену, то ничего не происходит. Код:
Последний раз редактировалось BDA; 24.08.2021 в 03:10. |
15.08.2021, 23:24 | #2 |
Форумчанин
Регистрация: 16.02.2013
Сообщений: 169
|
Я осуществляю поиск свободного пути просматривая карту местности , если есть путь в соседнюю клетку , то по таймеру я в неё перемещаюсь.Например если свободна верхняя клетка:
Код:
Последний раз редактировалось BDA; 24.08.2021 в 03:10. |
22.08.2021, 20:24 | #3 |
Форумчанин
Регистрация: 16.02.2013
Сообщений: 169
|
По карте местности ищем пустую вершину,путь в соседнюю клетку.
if(m[i2-1][j2]==' ') Здесь в ширину 32 клетки в каждых кавычках Код:
Последний раз редактировалось BDA; 24.08.2021 в 03:10. |
29.11.2021, 21:18 | #4 |
Форумчанин
Регистрация: 16.02.2013
Сообщений: 169
|
Ichi , помоги пожалуйста.
|
05.12.2021, 17:16 | #5 |
Форумчанин
Регистрация: 14.03.2012
Сообщений: 147
|
Сложно понять почему враг через стену проходит, вроде бы по коду проверки есть пересечение для пустой клетки и для жемчужины, но нет проверки пересечения для стены. Может быть в этом причина? Я не понял какую роль играет массивы стэк stekE1 и stekE2?
Последний раз редактировалось ichi; 05.12.2021 в 17:23. |
08.12.2021, 21:57 | #6 |
Форумчанин
Регистрация: 16.02.2013
Сообщений: 169
|
Враг перемещается по таймеру , если есть пустая клетка вверху ,внизу,слева,справа ,то мы перемещаемся в эту клетку: сохраняем эту вершину stekE1[l2++]=i2-1,stekE2[k2++]=j2 и если есть путь if(s2==1) , то мы делаем текущей следующую клетку i2=stekE1[--l2],j2=stekE2[--k2] и перемещаемся в нее bitmapEnemy.y-=20.В противном случае ,если стена , то ничего не делается.
|
09.12.2021, 07:41 | #7 |
Форумчанин
Регистрация: 14.03.2012
Сообщений: 147
|
Могу предположить, что в массивы stekE1 и stekE2 каким-то образом, в какой-то момент, при каких-то условиях, записываются координаты стены и враг начинает гулять через стену. Надо в отладчике Borland С++ проверить.
Последний раз редактировалось ichi; 09.12.2021 в 07:44. |
09.12.2021, 07:48 | #8 |
фрилансер
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,010
|
а где происходит проверка на не выход за края массива ?
|
09.12.2021, 23:04 | #9 |
Форумчанин
Регистрация: 16.02.2013
Сообщений: 169
|
Мы сохраняем пустую клетку
if(m[i2-1][j2]==' ') { stekE1[l2++]=i2-1; stekE2[k2++]=j2; } Другая клетка туда попасть не может. |
10.12.2021, 00:04 | #10 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,342
|
Программу не запускал. У вас в 42 строке справа дырка в карте. А стеки могут переполниться, так как можете положить 4 точки в них (свободно со всех сторон), а забираете только одну.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с загрузкой звука в игре типа Pacman | Timurkh77 | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 12 | 13.09.2018 05:23 |
Графическая ошибка в игре типа Pacman | Timurkh77 | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 2 | 18.08.2018 22:08 |
Какие знания по php и mysql нужно иметь, что бы в игре сделать такой бой в онлайн текстовой игре | jonikster | Общие вопросы Web | 4 | 15.06.2016 18:10 |
Интеллект компьютера в игре покер на костях | Pepsy | Общие вопросы C/C++ | 1 | 06.04.2013 21:17 |
Зависание игры после отбивания шара (TShape) противником (Delphi) | alex 2000 | Помощь студентам | 0 | 06.02.2012 13:47 |