Созданные ответы форума
-
АвторСообщения
-
C++12345678Block* DIM1[20];for (int i = 0; i < 20; i++) {DIM1[i] = new Block("images/blocks/grass.png", 100 * i, 100);}window.clear();for (int i = 0; i < 20; i++) {window.draw(DIM1[i]->sprt);
а зачем 2 раза одно и тоже писать?
спасибо за подсказку
pugixml is a light-weight C++ XML processing library
нашёл ссылку на библиотеку пусть будет в теме.
спасибо за помощь.
можно еще вопрос, как можно упростить (уменьшить количество кода)
есть у меня объект “платформа” в игре у неё есть несколько логик движения влево, вправо, верх, вниз, по диагонали влево вверх, по диагонали вправо вверх и тоже самое но в обратном направлении (что бы в некоторых местах платформы могли двигаться друг навстречу другу). платформа загружается через тайл мап, поэтому у всех “платформ” разное имя. сейчас у меня получилось 12 классов платформ (то есть описывающих разную логику движения). можно сделать один класс платформ, а в тайл мапе или другим способом указывать какую логику движения использует платформа именно в в том месте где она находиться? а то скоро буду делать монстров, а там их ещё больше разновидностей.
надеюсь понятно спросил
спасибо за подсказку, но все равно не понял как ей воспользоваться, поскольку в конструкторе анимации имею следующее:
C++1234567891011121314void tick(float time){if (!isPlaying) return;currentFrame += speed * time;if (currentFrame > frames.size()) {currentFrame -= frames.size();if (!loop) { isPlaying = false; return; }}int i = currentFrame;sprite.setTextureRect(frames[i]);if (flip) sprite.setTextureRect(frames_flip[i]);}а затем запускается
C++1void loadFromXML(std::string fileName, Texture &t)куда
C++1setTextureRect()запихнуть так и не придумал.
вышел из ситуации следующим образом. В классе игрока вставил костыль
C++1234void draw(RenderWindow &window){anim.draw(window, x, y + h);}вроде все хорошо, пока.
спасибо за развернутый ответ.
решая одну проблемы мы создаём себе две и так далее…
дополнение к вышесказанному. пропадают “движущиеся” объекты которые “видимы” в окне. монстры за пределами “окна” не исчезают.
cпасибо за помощь! разобрался у меня игрок умирал, только в классе управления игроком забыл дописать if (life) { тут код управления игроком} поэтому я мог игроком управлять.
в общем метод кота работает
еще раз большое спасибо за помощь!
в class Entity я объявил health=N. переменная “N” определяется в “int main” при создании игрока и монстра. у монстров “N=1″, а у игрока “N=100″
C++1234567891011121314151617class EntityEntity(Image &image, String Name, float X, float Y, int W, int H, int N)health = N; // переменная N разное колличество жизней у монстров и игроковclass Player :public EntityPlayer(Image &image, String Name, Level &lev, float X, float Y, int W, int H, int N) :Entity(image, Name, X, Y, W, H, N)class Monstr :public EntityMonstr(Image &image, String Name, Level &lvl, float X, float Y, int W, int H, int N) : Entity (image, Name, X, Y, W, H, N)int main()for (int t = 0; t < c.size(); t++)//проходимся по элементам этого вектора(а именно по врагам)entilist.push_back(new Monstr(MonstrImage, "Monstr", lvl, c[t].rect.left, c[t].rect.top, 20, 20, 1));Object player = lvl.GetObject("Player");//объект игрока на нашей карте.задаем координаты игроку в начале при помощи негоPlayer p(heroImage, "Player", lvl, player.rect.left, player.rect.top, 32, 32, 100);при изменении переменной N у монстра, жизнь монстра меняется, а вот жизнь игрока никак не работает.
сейчас писал это и до меня дошло Player у меня не в закидывается entilist он отдельно от него, но как тогда взаимодействует с монстрами? и почему p.health начинается с отрицательного числа?
пробовал отслеживать как сказали, терминал показывает примерно следующее
intersection with Monstr, p.dy: 0.049113, p.onGround: 1, p.health: -3400
intersection with Monstr, p.dy: 0.04953, p.onGround: 1, p.health: -3450
intersection with Monstr, p.dy: 0.069093, p.onGround: 1, p.health: -3500
intersection with Monstr, p.dy: 0.067749, p.onGround: 1, p.health: -3550изначально в первой строке терминала p.health всегда отрицательное и больше 3000 (эта цифра произвольная в диапазоне от минус 3000 до минус 9000).
чуть выше есть такое
C++1if (health <=0) {life = false;}этого не достаточно? с монстрами срабатывает!
игрок ходит мимо монстров и никак с ними не взаимодействует, может только “убить” прыгнув сверху.
-
АвторСообщения