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

Lekki zarys gry i problemy z OOP

Object Storage Arubacloud
0 głosów
393 wizyt
pytanie zadane 14 sierpnia 2017 w C i C++ przez DragonCoder Nałogowiec (36,500 p.)
Witam, tworze gre, ale pojawiaja sie problemy jak to zwykle bywa. Oprocz tego rozbilem projekt na mniejsze pliki i foldery, chcialbym uslyszec Wasza opinie na temat rozbicia czytelnosci i co mozna poprawic. (Wiem, ze pojawia sie ludzie, ktorzy powiedza, ze wszystko jest do poprawy itd, ze to syf itp, itd. Z tego miejsca chcialbym juz powiedziec, ze kod sam w sobie, bedzie przechodzil gruntowne zmiany, jak i rozszerzenie. Finalna wersje pokaze na pewno, tylko ze potrzebuje troche czasu, zarowno na kod jak i fabule, gdyz gra bedzie pisana w 2 jezykach :) ).

 

EDIT:: wyskakuja dodatkowo bledy w plikach klas:

class_charackter\class_sarutahiko.cpp|7|error: no 'int Hero::Sarutahiko(int, int, int, int, int, int, int, int, int, int)' member function declared in class 'Hero'|

http://johannesgge.de/zeug/krystian/Gra/

Pozdrawiam i milego popoludnia :)

2 odpowiedzi

0 głosów
odpowiedź 14 sierpnia 2017 przez j23 Mędrzec (194,920 p.)

class_sarutahiko.cpp:

Hero::Sarutahiko( /* parametry */ ) { ... }

To Hero co tam robi?

komentarz 14 sierpnia 2017 przez DragonCoder Nałogowiec (36,500 p.)
To hero dalem to, poiewaz wyskakiwaly mi inne bledu, czyli:

|5|error: prototype for 'Senninowie::Senninowie(int, int, int, int, int, int, int, int, int, double)' does not match any in class 'Senninowie'|

|5|error: candidates are: Senninowie::Senninowie(const Senninowie&)|

|15|error:                 Senninowie::Senninowie(int, int, int, int, int, int, int, int, int, int)|

 

EDIT:: to na przykladzie innej klasy, gdyz w tamtej problem zniknal
komentarz 14 sierpnia 2017 przez j23 Mędrzec (194,920 p.)

Te inne błędy dotyczą innej klasy. W przypadku klasy Sarutahiko konstruktor powinien wyglądać tak: Sarutahiko::Sarutahiko( /* parametry */ ) { ... }

W klasie Senninowie masz różne typy w ostatnim parametrze konstruktora. Podejrzewam, że reszta błędów jest podobnego kalibru...

komentarz 14 sierpnia 2017 przez DragonCoder Nałogowiec (36,500 p.)
Ok, dziekuje zaraz przejrze parametry, aczkolwiek zmienialem je, na poczatku problemy te byly takze z kasa sarutahiko, Juz sprawdzam :)
komentarz 14 sierpnia 2017 przez DragonCoder Nałogowiec (36,500 p.)
A co do samego kodu, tzn. podzialu kodu i czytelnosci?
komentarz 14 sierpnia 2017 przez j23 Mędrzec (194,920 p.)
Skupiłem się na błędach, które podałeś. Całości nie przeglądałem, bo musiałbym ściągać wszystko plik po pliku - szczerze mówiąc nie bardzo mi się chce. Wrzuć projekt do jakiegoś archiwum, żeby można było ściągnąć wszystkie pliki naraz.
komentarz 14 sierpnia 2017 przez DragonCoder Nałogowiec (36,500 p.)
Juz rozwiazane i dziekuje bardzo :)
0 głosów
odpowiedź 14 sierpnia 2017 przez Ehlert Ekspert (212,670 p.)
  1. Na wstępie ładne nazewnictwo zmiennych tak trzymaj.
  2. A pro pos modelowania... Sarutahiko i inne te wyglądają jak imiona bohaterów. Czy w grze będzie wiele instancji tych klas? np trzech Sarutahiko, trzech Susanoo? Jeśli nie to nie ma potrzeby tworzyć im klas.
  3. Zamiast twoPointsUpToStrength używaj argumentów funkcji.
  4. Konstruktor klasy Hero ma 10 argumentów. To dużo, ale takie rzeczy się zdarzają. Tyle że klasy dziedziczące po bazowych powinny w jakiś sposób specjalizować obiekty abstrakcyjne. To znaczy że klasa Hachiman nie powinna mieć aż 10 argumentów konstruktora, bo część powinna być już znana.
  5. Korzystaj z listy inicjalizacyjnej konstruktora. Tam przekazuj argumenty.
  6. Moim zdaniem powinieneś rozbić to jeszcze drobniej. Monster ma dużo cech wspólnych z Hero. Mają życie itp. Wyodrębnij do klasy bazowej.
  7. Rób klasy w stylu Fightable z jedną metodą wirtualną fight. Wtedy masz pewność że każdy obiekt dziedziczący jest w stanie walczyć i robi to na swój sposób. 
  8. Implementując Fightable pozbywasz się metod takich jak fightNinja itp. Masz wtedy tylko jedną:
    bool fight(Fightable * enemy);
    
  9. Do maximalDamage nie musisz dodawać Monster, bo to chyba jasne skoro jest w tej klasie. 
  10. Unikaj przyjaźni. Dobrze zaprojektowany mechanizm nie potrzebuje przyjaźni. 

Jeśli programujesz od niedawna to mimo tych uwag to, co napisałeś wygląda ambitnie. Proponuję odstawić konsolę i łapać SFMLa.  

komentarz 14 sierpnia 2017 przez DragonCoder Nałogowiec (36,500 p.)

Programowalem wczesniej, ale to byly tylko petle itd, a pozniej musialem odlozyc to bo mialem duzo problemow prywatnych, szkola itd, praca nie mialm po prostu czasu. Teraz wracam i zaczynam z duzym projektem. Nie bede klamal, zapomnialem wiele rzeczy, wiec bede startowal od nowa, wzsytskie lekcje itd, a to tylko to co siedzialo mi w glowie i zdarzylem przeczytac, przez 2 dni :).

 

1. Dziekuje, takie rady dostawalem wczesniej, ale i to mi pomaga wiedziec, do czego sluzy funkcja

2. Poki co jest to typowy RPG, co znaczy jest, bedzie to typowy RPG, ktory bede chcial rozbudowac o MMO itd, nie stety ie mam grafika itd, ale dam rade :) dodatkowo bede musial poduczyc sie pythona a gra pojawi sie takze w pascalu

3. Zamiast twoPointsUpToStrength używaj argumentów funkcji. Masz na mysli, zebym odwolywal sie do funkcji i robil to x2, jesli nie to bylbym wdzieczny gdybys zademonstrowal na przykladze kodu :)

4. Szczerze mowiac, to kazdy argument konstruktora jest znanny, bo dziedziczy go od klasy hero, jedyne co jest nie znane, to DMG, PTK MANY itd, czyli to co jest w konstruktorze

5. Poczytam o tym

6. Poomysle jak to rozbic jeszcze, ogolnie plan mam w glowie, tzn. Stworzyc klase bazowa dla Monster i Hero, proste, do klasy hero dodac dodatkowe metody i argumenty, ktorych nie ma w klasie bazowej, z klasy hero dziedzicza inne potacie. Dobrze rozumiem?

7. Co do metod wirtualnych to jak mowie, ucze sie dopiero i nie programowalem juz okolo roku :/

9. Co prawda to prawda, jakos juz tak sie przyzwyczailem i po prostu myslalem, ze gdy bede tego uzywalem pozniej, to kod bedzie bardziej czytelnny :)

10.. Wiem, gdy tylko opanuje OOP, nawet  teraz bede probowal sie tego pozbyc :) 

 

Dziekuje bardzo :) i chetnie bym sie wzial za SFML, ale sie obawiam

komentarz 14 sierpnia 2017 przez Ehlert Ekspert (212,670 p.)

Masteruj OOP i zaczynaj powoli SFML. smiley

komentarz 14 sierpnia 2017 przez DragonCoder Nałogowiec (36,500 p.)
Mam nadzieje, ze w niedlugim czasie, bedzie mozna zobaczyc gre w wersji v1.0 :) bo od wersji 3.0 chcialbym zeby dziala pelni z baza danych zapisami itd, ale wszystko pokaze za niedlugo :)
komentarz 14 sierpnia 2017 przez DragonCoder Nałogowiec (36,500 p.)

3. Zamiast twoPointsUpToStrength używaj argumentów funkcji. Masz na mysli, zebym odwolywal sie do funkcji i robil to x2, jesli nie to bylbym wdzieczny gdybys zademonstrowal na przykladze kodu :)

 

6. Poomysle jak to rozbic jeszcze, ogolnie plan mam w glowie, tzn. Stworzyc klase bazowa dla Monster i Hero, proste, do klasy hero dodac dodatkowe metody i argumenty, ktorych nie ma w klasie bazowej, z klasy hero dziedzicza inne potacie. Dobrze rozumiem?

Podobne pytania

+2 głosów
2 odpowiedzi 453 wizyt
+4 głosów
1 odpowiedź 1,830 wizyt
pytanie zadane 17 września 2016 w Java przez Carmen Sandiego Początkujący (280 p.)
0 głosów
0 odpowiedzi 189 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

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

...