Созданные ответы форума
-
АвторСообщения
-
Указатель с глобальной видимостью.
Попробуйте создать глобальный указатель на переменную.
Насколько я знаю нет.
C++12345678910111213Entity* buff1,*buff2;for (it = entities.begin(); it != entities.end(); it++){if ((*it)->name == "button")if (*it)->id == 0)*buff1=*it;if ((*it)->name == "platform")if (*it)->id == 0)*buff2=*it;}if (Keyboard::isKeyPressed(Keyboard::F)) (*buff2)->dx = 0.8;Так легче всёго. Но можно заморочиться с буферами.
Проверка на то что прямоугольник игрока соприкоснуля с прямоугольником it.
Добавить каждому обекту id или груповой id. Вот как то-так.
C++12345678910struct Object{ Enemy* entities; int id,groupid; };list<Object> entities;for(it = entities.begin(); it != entities.end(); it++){if((*it.ebtities)->name == "easyEnemy"){if(*it.id)=0)///////}}Вот как я решил ету проблему:
C++123456if (damagtime == 0){Life -= 10; getdamge = true;}if (getdamge == true)damagtime = damageclock.getElapsedTime().asSeconds();if (damagtime > 0.5) { damageclock.restart(); damagtime = 0; getdamge = false; }std:: vector<> принемает любую переменную. sf::RectangleShape базовый класс SFML, если он не определен значит у вас проблемы с подключением библиотек.
C++12345Color getColore(){vector<Color> color = { Color::Cyan, sf::Color::Blue, sf::Color::Green, sf::Color::Red, sf::Color::Yellow };return color[0 + rand() % 4];}Вот вам небольшая наброска того как я вижи решение задачи.Создал два класса: сетки и шариков. Сетка состоит из квадратов 30 на30, а шарики представляют и себя структур которая содержит : объект (круг,цвет,размер,и положение на координатной сетке) и маркер(красный,зелёный и синий). По маркеру можно будет отличать шарики в проверке на пересечения. В методе void rulechek() небольшой пример: если два красных шара соприкоснуться они удаляються.
C++123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121class net{public:vector<RectangleShape> netcell;void create(vector<Balls> ballArrey){for (int i = 0; i < 81; i++){RectangleShape cell;cell.setOutlineThickness(1);cell.setOutlineColor(Color::Black);cell.setFillColor(Color::Transparent);cell.setSize(Vector2f(30, 30));netcell.push_back(cell);}pos.x = 0; pos.y = 0;for (int i = 0; i < netcell.size(); i++){pos.x = x;pos.y = y;x += 31;ii++;if (ii > 9){x = 0;y += 31;ii = 0;}netcell[i].setPosition(pos);}for (int i = 0; i < ballArrey.size(); i++)ballArrey[i].ball.setPosition(Vector2f(netcell[i].getPosition().x+1, netcell[i].getPosition().y+1));}void drow(RenderWindow & win){for (int i = 0; i < netcell.size(); i++)win.draw(netcell[i]);}private:int x = 0, y = 0, ii = 0;Vector2f pos;};class Ball{public:struct Balls{ CircleShape ball; enum { Red, Green, Blue }color; };vector<Balls> ballArrey;void create(){Balls ball;for (int i = 0; i < 25; i++){CircleShape redball;redball.setFillColor(Color::Red);redball.setRadius(15);ball.ball = redball;ball.color = ball.Red;ballArrey.push_back(ball);}for (int i = 0; i < 25; i++){CircleShape greenball;greenball.setFillColor(Color::Red);greenball.setRadius(15);ball.ball = greenball;ball.color = ball.Green;ballArrey.push_back(ball);}for (int i = 0; i < 25; i++){CircleShape blueball;blueball.setFillColor(Color::Red);blueball.setRadius(15);ball.ball = blueball;ball.color = ball.Blue;ballArrey.push_back(ball);}for (int i = 0; i < ballArrey.size(); i++){if (ballArrey[i].color == 0)Red.push_back(ballArrey[i]);if (ballArrey[i].color == 1)Green.push_back(ballArrey[i]);if (ballArrey[i].color == 2)Blue.push_back(ballArrey[i]);}}void update(){rulechek();}void drow(RenderWindow & win){for (int i = 0; i < ballArrey.size(); i++)win.draw(ballArrey[i].ball);}private:vector<Balls> Red;vector<Balls> Green;vector<Balls> Blue;void rulechek(){for (int i = 0; i < ballArrey.size(); i++)for (int ii = 0; ii < Red.size(); ii++){if (Red[ii].ball.getGlobalBounds().intersects(ballArrey[i].ball.getLocalBounds()));if (ballArrey[i].color == 1){// ballArrey.erase(ballArrey.begin() + i);// Red.erase(Red.begin() + ii);}}}void control(){}};Вы использовали одну камеру в разных сценах. Она у вас просто уезжала из позиции кнопок)). window.setView(window.getDefaultView()); Перед циклом .
открой консоль и посмотри там полюбом будет сообщения типа :”неудалось загрузить файл”.Попробуй скопировать папку release.
А файлы ресуры ты переносил вместе с exe ?
Для каждой версии проги есть свой набор либок для debug ето библиотеки с суффиксом -d (sfml-graphics-d), а для релиза просто sfml-graphics.
Скорость всех обектов на 0, а потом вернуть.Или вклинить в основной цикл другой цикл.LTBL2 и так реализована на базе SFML.
-
АвторСообщения