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

Sfml - snake

Object Storage Arubacloud
+1 głos
629 wizyt
pytanie zadane 18 maja 2016 w Nasze projekty przez sofnir Gaduła (4,690 p.)
Hej, chciałem prosić Was o ocenę mojej gry napisanej w SFML  - snake.

http://www9.zippyshare.com/v/GqDkfDmJ/file.html

Screeny z gry:

https://zapodaj.net/e9a1d3906b6ee.png.html
https://zapodaj.net/3ddbb1d09aca8.png.html

1 odpowiedź

+1 głos
odpowiedź 18 maja 2016 przez Lafoniz Gaduła (4,370 p.)

Zaczynając od samej rozgrywki: gra się bardzo przyjemnie, oprawa audiowizualna jest dobrze dobrana, całość tworzy naprawdę miłe wrażenie. Z punktu widzenia gracza byłoby chyba lepiej, gdyby waż na początku poruszał się trochę wolniej.

Z punktu widzenia kodu też jest dobrze (a nawet bardzo dobrze, patrząc na to co można znaleźć w projektach innych użytkowników). Najbardziej bolesne z punktu widzenia osoby, która próbuje zrozumieć kod, jest to, że nie używasz żadnego zbiornika na zasoby.

Powinieneś napisać klasę, której głównym zadaniem jest wczytywanie zasobów oraz dzielenie się nimi z innymi obiektami. Wtedy twój kod zyskałby bardzo mocno na czytelności, gdyż nie byłoby w nim elementów, które zarządzałyby obiektami klasy sf::Texture i sf::SoundBuffer.

Zauważ, że np. metoda Menu::createBackground() byłaby o połowę krótsza, gdyby przyjmowała gotowe do użycia tekstury.

Z drugiej strony zapomniałeś napisać malutkiego kawałka kodu dla obsługi zdarzenia sf::Event::Closed, przez co Twojej gry nie można wyłączyć klikając w krzyżyk znajdujący się w prawym górnym rogu.

W wielu miejscach korzystasz z "magicznych" liczb, które mi kompletnie nic nie mówią. Ustawiasz np. jakiś kolor i podajesz tylko jego wartości w formacie RGBA. Byłoby dużo lepiej, gdybyś zdefiniował swoje kolory wcześniej (np. w postaci zmiennych statycznych) nadając im określone nazwy, np. kolor łososiowy. Wtedy w kodzie odwołujesz się do koloru łosiowego, a nie 4 magicznych liczb, które mówią mi niewiele.

Poza tym proponuję, abyś spróbował rozbudować grę, dodając chociażby więcej możliwych stanów (poza menu i właściwą grą, np. tablica wyników), być może wtedy dostrzeżesz potrzebę przebudowania mechanizmów związanych z zarządzaniem tego typu stanami.

Podsumowując, jest dobrze, ale wciąż może być lepiej. Ważne, żebyś dalej poznawał język (zainteresuj się chociażby standardem 11 C++, jest tam wiele ciekawych rzeczy, które ułatwiają / przyspieszają pracę).

komentarz 18 maja 2016 przez sofnir Gaduła (4,690 p.)
Hej, bardzo dziękuję za odpowiedź :) Nie chcę już grzebać w tym kodzie. W następnym projekcie zastosuję się do Twoich wszystkich porad. Z tym kontenerem danych, chodzi o to, żebym stworzył osobną klasę, która przechowuje tekstury, muzykę, czcionkę itd? Jeśli tak, to nie bardzo wiem, jak to miałoby wyglądać. Np:

Tworzę klasę, która zawiera to wszystko i na początku gry wczytuję wszystkie tekstury, czcionki itp. I teraz nie wiem jak to przekazać do klas, które będą tego potrzebowały ;/

Byłbyś w stanie mi to jakoś prosto wytłumaczyć?
komentarz 18 maja 2016 przez Lafoniz Gaduła (4,370 p.)

W twojej klasie tak naprawdę będą Ci potrzebne 3 rzeczy: kontener na zasoby, metoda do ich wczytywania oraz metoda do ich zwracania. Najlepszym wyborem na kontener jest std::map. Jest to kontener asocjacyjny (możesz odwoływać się do jego elementów np. korzystając z napisów lub enumeratorów, czyli całkiem inaczej niż np. u zwykłej tablicy, gdzie odwołujesz się do elementów poprzez indeks w postaci liczby całkowitej).

Metoda wczytująca dodaje elementy do mapy, a metoda zwracająca oddaje elementy w postaci referencji albo stałej referencji.

Jeżeli ten opis nie wzbudził w Tobie zbyt wielu pomysłów, nie martw się - istnieje bardzo fajna biblioteka dla SFML-a o nazwie Thor, która dodaje tego typu funkcjonalności, od razu gotowe do użycia.

Poczytaj o niej pod następującym linkiem: http://www.bromeon.ch/libraries/thor/download/index.html

Podobne pytania

+1 głos
2 odpowiedzi 641 wizyt
pytanie zadane 1 maja 2016 w C i C++ przez Curiosity Nowicjusz (130 p.)
+2 głosów
1 odpowiedź 805 wizyt
pytanie zadane 2 czerwca 2016 w C i C++ przez Pixel040 Gaduła (3,100 p.)
0 głosów
1 odpowiedź 293 wizyt
pytanie zadane 25 marca 2016 w C i C++ przez Munvik Dyskutant (9,350 p.)

92,572 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 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!

...