Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2022, 09:12   #61
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Цитата:
Сообщение от Timurkh77 Посмотреть сообщение
Изменил , все равно зависает.
Попробуйте добавить отладочную печать или приостановить выполнение кода и посмотреть, где именно происходит зацикливание. Я не могу скомпилировать ваш код, так как нет под рукой Borland C++, поэтому заменил графическую часть на OpenGL. В логической части расхождений не нахожу, но у меня противник "бегает" без проблем.
Изображения
Тип файла: png pacman.png (15.6 Кб, 1 просмотров)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 14.02.2022, 17:48   #62
Timurkh77
Форумчанин
 
Регистрация: 16.02.2013
Сообщений: 149
По умолчанию

Нажимаю F7 два раза программа зависает после выполнения функции Run().Не знаю как добавить отладочную печать.Как приостановить выполнение кода?Не могу понять в чем дело.
Timurkh77 вне форума Ответить с цитированием
Старый 17.02.2022, 12:30   #63
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Смог запустить ваш код (Visual Studio + OWLNext) с минимальными правками. Вы используете массив m в нескольких местах программы, но убрали его инициализацию из SetupWindow, поэтому выполнение зацикливается при выборе координат персонажа.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 18.02.2022, 19:42   #64
Timurkh77
Форумчанин
 
Регистрация: 16.02.2013
Сообщений: 149
По умолчанию

Поставил инициализацию матрицы m[i][j] в SetupWindow() противник бегает .Файл pacmang.cpp работает по алгоритму,а в файле pacmang2.cpp с произвольным k=vars[rand()%vars_count] усовершенствованием противник ходит сквозь стены.Не пойму в чем дело?
Вложения
Тип файла: rar pacmang.rar (503.3 Кб, 1 просмотров)
Timurkh77 вне форума Ответить с цитированием
Старый 18.02.2022, 21:34   #65
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Потеряли обнуление vars_count:
Код:
vars_count = 0;
for (k = 0; k < 4; ++k)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 25.07.2022, 19:07   #66
Timurkh77
Форумчанин
 
Регистрация: 16.02.2013
Сообщений: 149
По умолчанию

Программа работает.Противник бегает.Но как сделать так , чтобы он следил за игроком.
Вложения
Тип файла: rar pacmang2.rar (446.1 Кб, 0 просмотров)
Timurkh77 вне форума Ответить с цитированием
Старый 26.07.2022, 09:47   #67
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 493
По умолчанию

Timurkh77, очень просто. Необходимо каждый раз при перемещении игрока рассчитывать кратчайший путь от противника к игроку не меняя направление движения противника. Т.е. если противник движется по длинному коридору вправо, то он должен двигаться до конца коридора и не может вернуться в этот коридор, даже если игрок вошёл в этот коридор с обратной стороны.

Последний раз редактировалось Valick; 26.07.2022 в 09:51.
Valick вне форума Ответить с цитированием
Старый 29.07.2022, 18:44   #68
Timurkh77
Форумчанин
 
Регистрация: 16.02.2013
Сообщений: 149
По умолчанию

Сделал вот так,противник слишком быстро съедает меня,что можно сделать?
do
{
do
{
bx=j;
by=i;
}
while((j2==bx&&i2==by)||m[by][bx]=='.');
}while(!lee(j2,i2,bx,by));
Вложения
Тип файла: rar pacman3.rar (445.1 Кб, 3 просмотров)
Timurkh77 вне форума Ответить с цитированием
Старый 02.08.2022, 03:15   #69
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

С таким условием противник всегда следует по кратчайшему пути к игроку. Каким-либо способом "замедлите" противника: увеличьте интервал таймера, чтобы игрок шел быстрее, чем противник; меняйте направление противника, только когда он упирается в стену; выбирайте из всех свободных клеток вокруг противника одну для хода, но с чуть большим приоритетом ту, которая ближе к игроку. Почитайте, какое сложное поведение у противников в оригинальном пакмене (https://ru.wikipedia.org/wiki/Pac-Man).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 02.08.2022, 08:49   #70
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 493
По умолчанию

Скорость противника и скорость игрока - это вообще то что должно быть заложено изначально в игру. А ещё если не ошибаюсь в пакмане догоняет не только противник, иногда противник и убегает. Создание игры - это сложный и интересный процесс.
Valick вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с загрузкой звука в игре типа 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