SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › Циклическая смена цвета
В этой теме 2 ответа, 2 участника, последнее обновление Den1s 7 года/лет, 10 мес. назад.
-
АвторСообщения
-
Добрый вечер, есть такое задание, построить шестиугольник, цвета секторов которого будут менять циклически. Циклов три, т е сначала все сектора по очереди становятся, например, красными, потом синими, потом зелеными. Шестиугольник построил, сделал смену цветов, но цвет у секторов меняется одновременно. Ни как не могу сделать циклически, уже множество способов перепробовал, но как то не могу додуматься, если кто то подкинет идейку или исправит какие нибудь ошибки буду очень благодарен, заранее спасибо)
C++123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293#include <SFML/Graphics.hpp>#include <iostream>int main(){sf::Clock clock;sf::Time time;const sf::Color colorArray[3] = { sf::Color::Red, sf::Color::Blue, sf::Color::Green};sf::RenderWindow window(sf::VideoMode(1024, 768), "My Window");sf::ConvexShape polygon[6];polygon[0].setPointCount(3);polygon[0].setFillColor(sf::Color::White);polygon[0].setPoint(0, sf::Vector2f(300, 300));polygon[0].setPoint(1, sf::Vector2f(300, 0));polygon[0].setPoint(2, sf::Vector2f(0, 100));polygon[0].setPosition(100, 50);polygon[1].setPointCount(3);polygon[1].setFillColor(sf::Color::White);polygon[1].setPoint(0, sf::Vector2f(300, 300));polygon[1].setPoint(1, sf::Vector2f(600, 100));polygon[1].setPoint(2, sf::Vector2f(300, 0));polygon[1].setPosition(100, 50);polygon[2].setPointCount(3);polygon[2].setFillColor(sf::Color::White);polygon[2].setPoint(0, sf::Vector2f(300, 300));polygon[2].setPoint(1, sf::Vector2f(600, 100));polygon[2].setPoint(2, sf::Vector2f(600, 500));polygon[2].setPosition(100, 50);polygon[3].setPointCount(3);polygon[3].setFillColor(sf::Color::White);polygon[3].setPoint(0, sf::Vector2f(300, 300));polygon[3].setPoint(1, sf::Vector2f(600, 500));polygon[3].setPoint(2, sf::Vector2f(300, 600));polygon[3].setPosition(100, 50);polygon[4].setPointCount(3);polygon[4].setFillColor(sf::Color::White);polygon[4].setPoint(0, sf::Vector2f(300, 300));polygon[4].setPoint(1, sf::Vector2f(0, 500));polygon[4].setPoint(2, sf::Vector2f(300, 600));polygon[4].setPosition(100, 50);polygon[5].setPointCount(3);polygon[5].setFillColor(sf::Color::White);polygon[5].setPoint(0, sf::Vector2f(300, 300));polygon[5].setPoint(1, sf::Vector2f(0, 100));polygon[5].setPoint(2, sf::Vector2f(0, 500));polygon[5].setPosition(100, 50);while (window.isOpen()){sf::Event event;while (window.pollEvent(event)){if (event.type == sf::Event::Closed)window.close();}int t = 0, i = 0;time = clock.getElapsedTime();if (time.asSeconds() > 1){for (t;t < 3;t++){for (i ; i < 6;i++){polygon[i].setFillColor(colorArray[t]);clock.restart().asSeconds();}i = 0;}}window.clear();for (int i = 0; i < 6;i++){window.draw(polygon[i]);}window.display();}return 0;}Изи
C++123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081#include <SFML/Graphics.hpp>using namespace sf;void main(){Clock clock;int i=0,t=0;float swichtime = 0;const Color colorArray[3] = { Color::Red, Color::Blue, Color::Green };RenderWindow window(VideoMode(1024, 768), "My Window");ConvexShape polygon[6];polygon[0].setPointCount(3);polygon[0].setFillColor(Color::White);polygon[0].setPoint(0, Vector2f(300, 300));polygon[0].setPoint(1, Vector2f(300, 0));polygon[0].setPoint(2, Vector2f(0, 100));polygon[0].setPosition(100, 50);polygon[1].setPointCount(3);polygon[1].setFillColor(Color::White);polygon[1].setPoint(0, Vector2f(300, 300));polygon[1].setPoint(1, Vector2f(600, 100));polygon[1].setPoint(2, Vector2f(300, 0));polygon[1].setPosition(100, 50);polygon[2].setPointCount(3);polygon[2].setFillColor(Color::White);polygon[2].setPoint(0, Vector2f(300, 300));polygon[2].setPoint(1, Vector2f(600, 100));polygon[2].setPoint(2, Vector2f(600, 500));polygon[2].setPosition(100, 50);polygon[3].setPointCount(3);polygon[3].setFillColor(Color::White);polygon[3].setPoint(0, Vector2f(300, 300));polygon[3].setPoint(1, Vector2f(600, 500));polygon[3].setPoint(2, Vector2f(300, 600));polygon[3].setPosition(100, 50);polygon[4].setPointCount(3);polygon[4].setFillColor(Color::White);polygon[4].setPoint(0, Vector2f(300, 300));polygon[4].setPoint(1, Vector2f(0, 500));polygon[4].setPoint(2, Vector2f(300, 600));polygon[4].setPosition(100, 50);polygon[5].setPointCount(3);polygon[5].setFillColor(Color::White);polygon[5].setPoint(0, Vector2f(300, 300));polygon[5].setPoint(1, Vector2f(0, 100));polygon[5].setPoint(2, Vector2f(0, 500));polygon[5].setPosition(100, 50);while (window.isOpen()){Event event;while (window.pollEvent(event)){if (event.type == Event::Closed)window.close();}if (swichtime == 0){polygon[i].setFillColor(colorArray[t]);i++;}swichtime = clock.getElapsedTime().asSeconds();if (swichtime>1){ clock.restart(); swichtime = 0; }if (i > 5){i = 0;t++;} if (t > 2) t = 0;window.clear();for (int i = 0; i < 6; i++){window.draw(polygon[i]);}window.display();}}Спасибо большое, очень вам благодарен)) Выручили
-
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.