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

Sfml - snake

+1 głos
861 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 864 wizyt
pytanie zadane 1 maja 2016 w C i C++ przez Curiosity Nowicjusz (130 p.)
+2 głosów
1 odpowiedź 1,023 wizyt
pytanie zadane 2 czerwca 2016 w C i C++ przez Pixel040 Gaduła (3,100 p.)
0 głosów
1 odpowiedź 429 wizyt
pytanie zadane 25 marca 2016 w C i C++ przez Munvik Dyskutant (9,350 p.)

93,604 zapytań

142,529 odpowiedzi

322,997 komentarzy

63,092 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

Kursy INF.02 i INF.03
...