SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › Вывод нескольких врагов на экран через промежуток времени из одной точки
В этой теме 1 ответ, 2 участника, последнее обновление Heisenberg 7 года/лет, 9 мес. назад.
Просмотр 2 сообщений - с 1 по 2 (из 2 всего)
-
АвторСообщения
-
C++1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798int main(){RenderWindow window(VideoMode(1280, 700), "Lesson 22. kychka-pc.ru");float timer = 0;Level lvl;//создали экземпляр класса уровеньlvl.LoadFromFile("map.tmx");//загрузили в него карту, внутри класса с помощью методов он ее обработает.Image easyEnemyImage;easyEnemyImage.loadFromFile("B1.png");Image TowerImage;TowerImage.loadFromFile("B2.png");list<Entity*>entites;list<Entity*>::iterator it;Object e = lvl.GetObject("easyEnemy");//int ee = 10;for (int i = 0; i < 10;i++)entites.push_back(new Enemy (easyEnemyImage,"EasyEnemy", lvl, e.rect.left, e.rect.top, 32, 32));/*list<Tower*>towers;list<Tower*>::iterator wit;Object tw = lvl.GetObject("tower");*/Object TowerObject = lvl.GetObject("tower1");Tower Tower1(TowerImage, "tower1", lvl, TowerObject.rect.left, TowerObject.rect.top, 32, 32);bool isMowe = false;float dX = 0;float dY = 0;Clock clock;while (window.isOpen()){ float time = clock.getElapsedTime().asMicroseconds();clock.restart();time = time / 1000;timer += time;Vector2i pixelPos = Mouse::getPosition(window);Vector2f pos = window.mapPixelToCoords(pixelPos);Event event;while (window.pollEvent(event)){ if (event.type==Event::MouseButtonPressed)if (event.key.code==Mouse::Left)if (Tower1.sprite.getGlobalBounds().contains(pos.x, pos.y)){dX = pos.x - Tower1.sprite.getPosition().x + 10;dY = pos.y - Tower1.sprite.getPosition().y + 10;isMowe = true;}if (event.type == Event::MouseButtonReleased)//если отпустили клавишуif (event.key.code == Mouse::Left) //а именно левуюisMowe = false; //то не можем двигать спрайтTower1.sprite.setColor(Color::White);//и даем ему прежний цвет}if (isMowe){Tower1.sprite.setColor(Color::Green);Tower1.x = pos.x - dX;Tower1.y = pos.y - dY;}for (it = entites.begin(); it != entites.end();it++){(*it)->update(time);}Tower1.update(time);window.clear(Color(77, 83, 140));lvl.Draw(window);//рисуем новую картуfor (it = entites.begin(); it != entites.end(); it++){window.draw((*it)->sprite);}window.draw(Tower1.sprite);window.display();}return 0;}
вот инт
C++12for (int i = 0; i < 10;i++)entites.push_back(new Enemy (easyEnemyImage,"EasyEnemy", lvl, e.rect.left, e.rect.top, 32, 32));У тебя они создаются сразу в одно мгновение 10 шт. Сделай цикл с таймером для промежутка их создания.
C++12345678float timer = 0; //до главного циклаcount = 0;timer += time; //в главном циклеif(timer >= 1000 && count < 10) { //Секундаentites.push_back(new Enemy (easyEnemyImage,"EasyEnemy", lvl, e.rect.left, e.rect.top, 32, 32));count++;timer -= 1000;} -
АвторСообщения
Просмотр 2 сообщений - с 1 по 2 (из 2 всего)
Для ответа в этой теме необходимо авторизоваться.