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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2022, 20:29   #21
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Покажите текущий код.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 28.01.2022, 21:23   #22
Timurkh77
Форумчанин
 
Регистрация: 16.02.2013
Сообщений: 137
По умолчанию

if(s2==1)
{
Invalidate(FALSE);
int p=rand()%l2;
i2=stekE1[p];
j2=stekE2[p];
l2=0;
k2=0;
}

Последний раз редактировалось Timurkh77; 28.01.2022 в 22:07.
Timurkh77 вне форума Ответить с цитированием
Старый 29.01.2022, 00:12   #23
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Упустил из виду, что вы сразу меняете координаты bitmapEnemy (в каждом ифе), а нужно их менять уже после выбора, в какую из свободных клеток будет сделан шаг.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 29.01.2022, 20:23   #24
Timurkh77
Форумчанин
 
Регистрация: 16.02.2013
Сообщений: 137
По умолчанию

Не понял где менять координаты bitmapEnemy , движение осуществляется если клетка свободна ,
а это проверяется только в if-е.
Timurkh77 вне форума Ответить с цитированием
Старый 29.01.2022, 20:46   #25
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Из if'ов убрать изменение координат, а сюда добавить:
Код:
if(s2 == 1)
{
    Invalidate(FALSE);
    int p = rand() % l2;
    i2 = stekE1[p];
    j2 = stekE2[p];
    bitmapEnemy.x = j2 * 20 + 2;
    bitmapEnemy.y = i2 * 20 + 2;
    l2 = 0;
    k2 = 0;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 29.01.2022, 22:45   #26
Timurkh77
Форумчанин
 
Регистрация: 16.02.2013
Сообщений: 137
По умолчанию

Через стены не проходит.Добавил случайность в движение,но ходит все равно неправильно.Как сделать так , чтобы противник ходил нормально?

if(m[i2-1][j2]==' ')
{
if(rand()%4==1)
{
stekE1[l2++]=i2-1;
stekE2[k2++]=j2;
s2=1;
}
}
else if(m[i2-1][j2]=='*')
{
if(rand()%4==1)
{
score+=5;
stekE1[l2++]=i2-1;
stekE2[k2++]=j2;
s2=1;
}
}
Вложения
Тип файла: rar pacman12.rar (446.3 Кб, 1 просмотров)
Timurkh77 вне форума Ответить с цитированием
Старый 30.01.2022, 07:59   #27
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Цитата:
Сообщение от Timurkh77 Посмотреть сообщение
Добавил случайность в движение
Случайность уже и так была (когда выбирается одна из свободных клеток с помощью int p = rand() % l2;). А сейчас получается, что даже если клетка свободна, то есть шанс, что она не будет рассматриваться. Кстати, увеличение счета score тоже нужно делать уже после выбора клетки, куда делается шаг.
Цитата:
Сообщение от Timurkh77 Посмотреть сообщение
но ходит все равно неправильно
В чем это выражается?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 31.01.2022, 16:05   #28
Timurkh77
Форумчанин
 
Регистрация: 16.02.2013
Сообщений: 137
По умолчанию

Ходит в одном месте.Как сделать так , чтобы ходил по всему полю?
Timurkh77 вне форума Ответить с цитированием
Старый 31.01.2022, 17:36   #29
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Можно попробовать так: выбрать случайную свободную клетку на карте, волновым алгоритмом построить до нее маршрут, идти по маршруту до достижения клетки, повторить сначала. Или, например: волновым алгоритмом оценить расстояние до всех звездочек, выбрать ближайшую, идти к ней, если её кто-то съел (игрок, текущий противник, другой противник), то вернуться к началу алгоритма.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 02.02.2022, 21:42   #30
Timurkh77
Форумчанин
 
Регистрация: 16.02.2013
Сообщений: 137
По умолчанию

Написал так:
void TMyWin::EvTimet(UINT)
{
int s2;

s2=0;

static int k=1;
static int l=1;

if(m[i2+k][j2]==' ')
{
stekE1[l2++]=i2+k;
stekE2[k2++]=j2;
s2=1;
k++;
}
else
if(m[i2+k][j2]=='*')
{
stekE1[l2++]=i2+k;
stekE2[k2++]=j2;
s2=1;
k++;
}
else
if(m[i2+k][j2]=='.')
{
k=1;
}

if(m[i2-k][j2]==' ')
{
stekE1[l2++]=i2-k;
stekE2[k2++]=j2;
s2=1;
k--;
}
else
if(m[i2-k][j2]=='*')
{
stekE1[l2++]=i2-k;
stekE2[k2++]=j2;
s2=1;
k--;
}
else
if(m[i2-k][j2]=='.')
{
k=1;
}

if(m[i2][j2+l]==' ')
{
stekE1[l2++]=i2;
stekE2[k2++]=j2+l;
s2=1;
l++;
}
else
if(m[i2][j2+l]=='*')
{
stekE1[l2++]=i2;
stekE2[k2++]=j2+l;
s2=1;
l++;
}
else
if(m[i2][[j2+l]=='.')
{
l=1;
}
if(m[i2][j2-l]==' ')
{
stekE1[l2++]=i2;
stekE2[k2++]=j2-l;
s2=1;
l--;
}
else
if(m[i2][j2-l]=='*')
{
stekE1[l2++]=i2;
stekE2[k2++]=j2-l
s2=1;
l--;
}
else
if(m[i2][j2-l]=='.')
{
l=1;
}
Ходит нормально,но опять проходит сквозь стены.Почему то исчезает.

Последний раз редактировалось Timurkh77; 02.02.2022 в 21:55.
Timurkh77 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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