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

SFML - jak zrobić własną klasę?

Object Storage Arubacloud
0 głosów
490 wizyt
pytanie zadane 27 września 2015 w C i C++ przez sofnir Gaduła (4,690 p.)

Hej, nie potrafię sobie pordzić z programowaniem obiektowym w sfmlu, mam taki oto obiekt:

sf::RectangleShape pole1(sf::Vector2f(50, 50));
    pole1.setFillColor(sf::Color(0, 0, 0));
    pole1.setOutlineThickness(5);
    pole1.setOutlineColor(sf::Color(250, 255, 255));
    pole1.setPosition(222.5, 50);

Takich obiektów chciałbym mieć 9 sztuk i zmieniać tylko ich położenie, więc odrazu w głowie zapaliła mi się lampka! Zrobię klasę! Jednak mam z tym problem.

class Pole
{
public:
	Pole()
	{
		;
	}
};

Nie mam pojęcia jak to zapisać żeby działało, wcześniej to było proste, a teraz mam klase w klasie i się gubie. Jeśli ktoś pokazałby mi na tym prostym przykładzie jak to ma wyglądać to byłbym bardzo wdzięczny :)

 

3 odpowiedzi

+1 głos
odpowiedź 27 września 2015 przez Patrycjerz Mędrzec (192,320 p.)
wybrane 27 września 2015 przez sofnir
 
Najlepsza

Najpierw radzę ci zainteresować się jakimś kontenerem, np. std::vector. Wtedy dzięki jednej pętli for będziesz mógł zautomatyzować różne elementy programu i wszystko będziesz miał w jednym miejscu.

Co do klasy, to nie wiem, co chcesz osiągnąć? Czy ma ona zawierać obiekt klasy sf::RectangleShape, czy co? Sprecyzuj najpierw swoje pomysły i napisz, jak będziesz gotów.

komentarz 27 września 2015 przez sofnir Gaduła (4,690 p.)

Chciałbym stwarzać obiekty w ten sposob:

Pole p1(100,100);

Co oznacza, że obiekt p1 to kwadrat o współrzędnych (100,100), białym tle, wymiarach 50x50 i białej ramce 5px. Taki konstruktor z wartościami domyślnymi, już wiesz o co mi codzi? :)

komentarz 27 września 2015 przez Patrycjerz Mędrzec (192,320 p.)

Aha, czyli nie chcesz ciągle pisać nadawania początkowych atrybutów. Ja radziłbym stworzyć jakąś funkcję, która to uczyni, bo robić tylko z tego powodu klasę - wg mnie nie ma to sensu. Możesz to zrobić np. tak:

void nadajAtrybuty(sf::RectangleShape& pole, const sf::Vector2f& rozmiar)
{
	pole.setSize(rozmiar);
	pole.setFillColor(sf::Color(0, 0, 0));
	pole.setOutlineThickness(5);
	pole.setOutlineColor(sf::Color(250, 255, 255));
	pole.setPosition(222.5, 50);
}

Poprzez referencję otrzymasz obiekt z nadanymi atrybutami. Potem tylko wywołanie tej funkcji masowo w jakieś pętli for i po kłopocie.

+1 głos
odpowiedź 27 września 2015 przez Grzyboo Nałogowiec (28,860 p.)
Zobacz sobie to:

http://cpp0x.pl/kursy/Wytwarzanie-Gier-2D-C++/Wprawianie-obiektow-gry-w-ruch/415

 

Tutaj jest pokazane jak przechowywać kilka obiektów. Tylko zamiast RObiekt analogicznie sobie robisz dla sf::RectangleShape.
0 głosów
odpowiedź 27 września 2015 przez sofnir Gaduła (4,690 p.)
Dzięki za pomoc, udało mi się osiągnąć zamierzony efekt, ale z tego co zauważyłem to mam spore braki i muszę wrócić do nauki na wcześniejszym etapie.

Podobne pytania

0 głosów
1 odpowiedź 851 wizyt
pytanie zadane 20 września 2015 w C i C++ przez krolkoreipolnocnej Nowicjusz (240 p.)
0 głosów
3 odpowiedzi 819 wizyt
+2 głosów
1 odpowiedź 805 wizyt

92,584 zapytań

141,433 odpowiedzi

319,668 komentarzy

61,966 pasjonatów

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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...