SFML и C++ Уроки \ Разработка игр › Форумы › Логика игр › движение врага и его преследование игрока › Ответ в теме: движение врага и его преследование игрока
Решила использовать алгоритм поиска пути. Начала с того что на прорисовке карты сразу указала 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 в обработчике событий пытаюсь передать эти координаты, но возникает ошибка. Как это исправить?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
Player 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'; } |