• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zmiana koloru przeszkód - flappy bird - gra 2D

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
158 wizyt
pytanie zadane 3 kwietnia 2020 w C i C++ przez gorgonkowa Obywatel (1,810 p.)

Hejka!

Chciałabym Was poprosić o małą podpowiedź, co można w kodzie zmienić, żeby uzyskać zmienność kolorów przeszkód - spritów. Kod klasy przedstawia się następująco:
 

#include "Rura.hpp" // Dołączenie pliku nagłówkowego 'Rura'
#include "DEFINICJE.hpp" // Dołączenie pliku nagłówkowego 'DEFINICJE'

#include <iostream> // Standardowa biblioteka obsługująca operacje wejścia/wyjścia

/// \namespace MPB_BOSS
///
/// \brief To nazwa przestrzeni.
///
///

namespace MPB_BOSS // Nazwa przestrzeni
{
	/// \brief Konstruktor głównego menu, posiadający parametr danych gry, o wartości automatycznej przypisanej do referencji danych.
	Rura::Rura(StanOdpoczynku dane) : _dane(dane)
	{
	}
	//! Metoda tworzenia dolnych rur.
	void Rura::StworzDolnaRure() // Metoda tworzenia dolnych rur
	{
		/// \brief Klasa obiektów tworząca obiekt zainicjowana w zasobach.
		sf::Sprite sprite(this->_dane->zasoby.GetTexture("Rura w gore"));

		/// \brief Ustawienie pozycji obiektu
		sprite.setPosition(this->_dane->okno.getSize().x, this->_dane->okno.getSize().y - sprite.getLocalBounds().height);

		/// \brief Dodaje nowy element obiektu na końcu wektora.
		obiektyRur.push_back(sprite); // Dodaje nowy element obiektu na końcu wektora
	}
	//! Metoda tworzenia górnych rur.
	void Rura::StworzGornaRure() // Metoda tworzenia górnych rur
	{
		/// \class Klasa obiektów tworząca obiekt zainicjowana w zasobach.
		sf::Sprite sprite(this->_dane->zasoby.GetTexture("Rura w dol")); // Klasa obiektów tworząca obiekt zainicjowana w zasobach

		/// \brief Ustawienie pozycji obiektu.
		sprite.setPosition(this->_dane->okno.getSize().x, 0); // Ustawienie pozycji obiektu

		/// \brief Dodaje nowy element obiektu na końcu wektora.
		obiektyRur.push_back(sprite); // Dodaje nowy element obiektu na końcu wektora
	}

	//! Metoda tworzenia niewidzialnych rur.
	void Rura::StworzNiewidzialnaRure() // Metoda tworzenia niewidzialnych rur
	{
		/// \class Klasa obiektów tworząca obiekt zainicjowana w zasobach.
		sf::Sprite sprite(this->_dane->zasoby.GetTexture("Rura w dol")); // Klasa obiektów tworząca obiekt zainicjowana w zasobach

		/// \brief Ustawienie pozycji obiektu.
		sprite.setPosition(this->_dane->okno.getSize().x, 0); // Ustawienie pozycji obiektu
		/// \brief Ustawienie koloru obiektu.
		sprite.setColor(sf::Color(0, 0, 0, 0)); // Ustawienie koloru obiektu

		/// \brief Dodaje nowy element obiektu na końcu wektora.
		obiektyRur.push_back(sprite); // Dodaje nowy element obiektu na końcu wektora
	}

	//! Metoda ruszania rurami.
	void Rura::RuchRur(float klatka) // Metoda ruszania rurami.
	{
		/// \brief Zapętlenie rur do momentu, gdy i < długości zwracanego obiektu rury.
		for (int i = 0; i < obiektyRur.size(); i++) // Zapętlenie rur do momentu, gdy i < długości zwracanego obiektu rury
		{
			/// \brief Jeśli pozycja obiektu zwróconej referencji jest odjęta od zwróconej referencji szerokości prostokąta.
			if (obiektyRur.at(i).getPosition().x < 0 - obiektyRur.at(i).getLocalBounds().width)
			{
				/// \brief To rury zostaną usunięte po wyjściu za ekran.
				obiektyRur.erase(obiektyRur.begin() + i); // To rury zostaną usunięte po wyjściu za ekran
			}
			else // W innym wypadku...
			{
				/// \brief Tworzenie wektora pozycji rury.
				sf::Vector2f pozycja = obiektyRur.at(i).getPosition(); // Tworzenie wektora pozycji rury
				/// \var ruch Obliczenie szybkości ruchu rur.
				float ruch = SZYBKOSC_RUCHU_RUR * klatka; // Obliczenie szybkości ruchu rur

				/// \brief Ustawienie i przesunięcie rur w lewo (ponieważ jest minus - oś OX)
				obiektyRur.at(i).move(-ruch, 0); // Ustawienie i przesunięcie rur w lewo (ponieważ jest minus - oś OX)
			}
		}
	}

	void Rura::RysowanieRur() // Metoda rysująca rury w klasie rur.
	{
		/// \brief Zapętlenie rur do momentu, gdy i < długości zwracanego obiektu rury.
		/// \param i To parametr pozwalający na liczenie długości zwracanego obiektu rur.
		/// \param obiektyRur.size() To parametr pozwalający na sprawdzenie obecnego rozmiaru rur.
		/// \param i++ Parametr odpowiadający za inkrementację długości w pętli.
		for (unsigned short int i = 0; i < obiektyRur.size(); i++) // Zapętlenie rur do momentu, gdy i < długości zwracanego obiektu rury
		{
			/// \brief Rysowanie rur w oknie.
			/// \param i To parametr odwołujący się do obecnej liczby długości obiektu rur do narysowania.
			this->_dane->okno.draw(obiektyRur.at(i)); // Rysowanie rur w oknie
		}
	}
}

Próbowałam zmieniać parametr w pętli, czyli obiektyRur.size() na jakąś konkretną wartość, próbowałam również do tego dać warunek sprawdzający, jednak rury pojawiały się i znikały w połowie ekranu. Podobnie próbowałam ustawić lekką klasę sf::Clock, jednak coś robię nie tak. Czy macie jakieś pomysły, jak to zrobić, żeby po pewnym czasie zmienić kolor rur?

Byłabym MEGA wdzięczna za odpowiedzi! :)

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+14 głosów
7 odpowiedzi 1,243 wizyt
pytanie zadane 8 kwietnia 2017 w Nasze projekty przez 10kw10 Pasjonat (22,880 p.)
0 głosów
2 odpowiedzi 315 wizyt
0 głosów
0 odpowiedzi 374 wizyt
pytanie zadane 23 listopada 2021 w JavaScript przez DzikieHarce Użytkownik (690 p.)

93,182 zapytań

142,196 odpowiedzi

322,002 komentarzy

62,513 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2127p. - dia-Chann
  2. 2092p. - Łukasz Piwowar
  3. 2079p. - Łukasz Eckert
  4. 2037p. - Tomasz Bielak
  5. 2006p. - rucin93
  6. 2005p. - Łukasz Siedlecki
  7. 1964p. - CC PL
  8. 1785p. - Michal Drewniak
  9. 1744p. - rafalszastok
  10. 1724p. - Adrian Wieprzkowicz
  11. 1684p. - Mikbac
  12. 1624p. - Anonim 3619784
  13. 1520p. - Marcin Putra
  14. 1480p. - ssynowiec
  15. 1365p. - Dawid128
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...