Созданные ответы форума
-
АвторСообщения
-
Решила использовать алгоритм поиска пути. Начала с того что на прорисовке карты сразу указала G и S
if (map->TileMap[i][j] == ‘G’) s_map.setTextureRect(sf::IntRect(65,1380, 32, 32));//герой
if (map->TileMap[i][j] == ‘S’) s_map.setTextureRect(sf::IntRect(0,1186, 32, 32));//враг
if (map->TileMap[i][j] == ‘+’) s_map.setTextureRect(sf::IntRect(960,96, 32, 32));//путь
Реализовала алгоритм в классе map поиска пути и получилась такая картина как во вложении. Т.е. все работает и поиск работает.Теперь хочу передавать координаты игрока и врага и прорисовывать на карте в этом месте ‘G’ ‘S’. Соответственно уже будет прокладываться дорожка к реальным персонажам.
Реализация игры такая же как в кодах на сайте через двумерный массив. В классе Main в обработчике событий пытаюсь передать эти координаты, но возникает ошибка. Как это исправить?C++12345678910111213141516171819202122232425Player pacman(map,view, heroimage,"Player1",460,730,32.0,32.0);//передаем координаты прямоугольника player из карты в координаты нашего игрокаstd::list<Entity*> entities;//список,куда будем бросать объектыstd::list <Entity*>::iterator it;//итератор, чтобы проходить по элементам спискаstd::list <Entity*>::iterator it2;//враг-врагentities.push_back(new Enemy(map,easyEnemyImage,"EasyEnemy",410,290,32.0,32.0));//entities.push_back(new Enemy(map,easyEnemyImage,"EasyEnemy",425,290,32.0,32.0));//entities.push_back(new Enemy(map,easyEnemyImage,"EasyEnemy",440,190,32.0,32.0));.......for (it = entities.begin(); it != entities.end(); it++)//проходимся по эл-там списка{if ((*it)->name=="EasyEnemy"){// int i=int(pacman.x);// int j=int(pacman.y);// map->TileMap[i][j] = 'G';// map->TileMap[int((*it)->x)][int((*it)->y)] = 'S';}Вложения:
You must be logged in to view attached files.вот интересно, если использовать Tiled Map, как с ним подружить волновой алгоритм? Или какой алгоритм с использованием TiledMap подойдет для умный врагов? Просто если брать тотже волновой алгоритм , то он завязан на том, что мы создаем аналогичную карту этой. А как это реализовать с TiledMap? Может кто видел именно для использования TiledMap и для варианта как в игре с пакманом?
И еще хотела спросить, когда мои враги взаимодействуют с друг другом и вид опять таки не как в платформере, а вид сверху как змейка, пакман нужно ли что-то менять здесь, а то они периодически, если соприкасаются начинают “плясать” друг на друге и никак не могут разойтись.
C++123456789for(it2= entities.begin(); it2!=entities.end(); it2++){if((*it)->getRect()!=((*it2)->getRect())){if (((*it)->getRect().intersects((*it2)->getRect())) && ((*it)->name == "EasyEnemy") && ((*it2)->name == "EasyEnemy"))//если столкнулись два объекта и они враги{(*it)->dx *= -1;//меняем направление движения врага}} -
АвторСообщения