Uprościć kod programu poprzez przesunięcie odpowiednich jego fragmentów do funkcji

0

Jak mogę uprościć kod programu i zapisać go w funkcji? czy mógłbym prosić o jakiś przykład? Tutaj mam część swojego programu którą chce uprościć

int main()
{

	srand(time(NULL));
	sf::ContextSettings settings;
	settings.antialiasingLevel = 8;

	sf::RenderWindow window(sf::VideoMode(800, 600), "Armatka");//główne
	
	float r = 100;
	sf::CircleShape kolo1(r);//kolo1 z obwodka
	kolo1.setFillColor(sf::Color::Green);
	kolo1.setOutlineThickness(-0.04*r);
	kolo1.setOutlineColor(sf::Color::Red);


	sf::CircleShape kolo2(30);//kolo2 z obwodka
	kolo2.setFillColor(sf::Color::Yellow);
	kolo2.setOutlineThickness(-0.04*r);
	kolo2.setOutlineColor(sf::Color::Magenta);

	//kwadrat
	sf::RectangleShape rectangle(sf::Vector2f(1.3 * r, 0.4*r));
	rectangle.setFillColor(sf::Color::Blue);

	//określanie pozycji i rozmiaru kółek i prostokąta
	kolo1.setOrigin(r, r); 
	kolo1.setPosition(3 * r, 3 * r);
	kolo2.setOrigin(0.3*r, 0.3*r);
	kolo2.setPosition(3 * r, 3 * r);
	rectangle.setOrigin(0, 0.2*r);
	rectangle.setPosition(3 * r, 3 * r);

	CircleShape pestka;//pocisk
	//pestka.setFillColor(Color::Red);
	pestka.setRadius(rectangle.getSize().y / 3);
	pestka.setPosition(-100, -100);
	pestka.setOrigin(pestka.getRadius(), pestka.getRadius());

	//zmienna pomocniczna
	int zmienna = 0;

	//czas
	Clock clock;
	Time reload;



	const int x = 38;

	sf::CircleShape kulki[x];    //tablica na x kulek i ich parametry
	for (int z = 0; z < x; z++)
	{
		int a = (rand() % 25) + 10;
		kulki[z].setRadius(a);
		kulki[z].setOrigin(a, a);
		int b = (rand() % 750) + 20;
		int c = (rand() % 550) + 20;
		kulki[z].setPosition(b, c);
		kulki[z].setFillColor(sf::Color(rand() % 250 + 5, rand() % 250 + 5, rand() % 250 + 5));
		kulki[z].setOutlineColor(sf::Color(rand() % 255 + 5, rand() % 255 + 5, rand() % 255 + 5));
		//kulki[z].setOutlineThickness(-2);
	}
             ...............
             ..............
            }

0

Na przykład takie coś ci się powtarza:

    sf::CircleShape kolo1(r);//kolo1 z obwodka
    kolo1.setFillColor(sf::Color::Green);
    kolo1.setOutlineThickness(-0.04*r);
    kolo1.setOutlineColor(sf::Color::Red);

Mozesz wyciągnąć parametry (kolory i grubość). Nawet napisałeś komentarz. Lepiej wpisz to w nazwie funkcji. ;) Podobnie jak w innych przypadkach gdzie piszesz komentarze opisujące czynności powinny one właściwie być zawarte w nazwach funkcji.

        int a = (rand() % 25) + 10;
        kulki[z].setRadius(a);
        kulki[z].setOrigin(a, a);
        int b = (rand() % 750) + 20;
        int c = (rand() % 550) + 20;

Ten kod nie wiadomo co robi. Raz że liczby wpisane bezpośrednio to jest tzw. smrodek, bo raz że nie wiadomo o co chodzi, a dwa, że jeśli się powtarzają i kiedyś się zmienią to możesz mieć problem. Poza tym wyłonienie funkcji też by pomogło.

1 użytkowników online, w tym zalogowanych: 0, gości: 1