Autor Wątek: Sredniawo-Zaawansowany - I co dalej ?  (Przeczytany 3097 razy)

Offline Bloodian

  • Użytkownik

# Październik 28, 2009, 19:30:07
 Jestem w kropce. Zgubilem sie. Nie wiem co robic.
Jestem na poziomie gdzie rozumiem C++, napisalem swoje pierwsze gry w Irrlichcie. Dosyc latwo mi sie czyta API chociaz czasem mam problemy i zwracam sie z nimi tutaj :)
Moj kod nijak nie przypomina kodu "profesjonalnego". To znaczy sie, jest na podstawach OOP, ma obiekty wrogow, bohatera, silnika, ale ciagle mam wrazenie ze dla prawdziwego programisty wygladalo by to smiesznie. Dochodze do swojego wymarzonego planu, zrobilem kolizje, jakies skakanie, strzelanie, poruszanie sie z akceleracja. Wszystko dziala, ale napisane jest prosto typu:

klasa wrog
{
zmienna skakania
tablica modeli[30]
zmienna pozycji.x

poruszanie()
oblicz kolizje(mesh boxa)
}

pozniej tylko tworze klase poza petla, w konstruktorze loaduja mi sie wszystkie dane a w petli robie poruszanie() i oblicz kolizje dla kazdego osobnego boxa.

Przeszukalem pare ksiazek, miedzy innymi ostatnio:
- Programming Role Playing Games with DirectX
- Game Coding Complete

i przedstawione sa tam znowu metody ktore uwazam sa juz ekstremalne. W Programming Role Playing Games, autor stworzyl silnik skryptowy, uzywajac jakichs zewnetrznych programow pozniej implementuje elementy gry.
Co wy robliscie ? Skad nauczyliscie sie prawidlowych struktur programow ? Czytalem tez algorytmy i struktury danych, i mam mniej wiecej pomysl, jak to mozna uzyc w grach, ale tez nie do konca potrafilbym cos takiego napisac, bo mi tablice calkowicie wystarczaja :)
Jakies ksiazki o schematach OOP/strukturach danych... Cokolwiek. Co wy robliscie kiedy byliscie na takim poziomie ?
Jestem praktykiem, wszystkiego wole sie nauczyc piszac kod, niz klepac ksiazke po ksiazce. Tak tez zrobilem, na szybko przeczytalem kurs c++, a pozniej majac jakas podstawowa wiedze, robilem kupe bledow, ale szybko sie uczylem.

edit:
typo
ps.sorry za brak polskich znakow-> angielski windows.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Liosan

  • Redaktor

# Październik 28, 2009, 19:53:40
Narzekasz, że Twój kod jest prosty?  ;D :D

Skad nauczyliscie sie prawidlowych struktur programow ?
Czego? :) "Prawidłowe" jest to co działa; "bardziej prawidłowe" jest to co działa na dłuższą metę, mimo przerw w programowaniu, i to w zespole 3+ programistów. Co oczywiście nie znaczy, że takie "bardziej prawidłowe" jest zawsze lepszym wyborem - trzeba rozważyć cenę (czas/zachód) kontra zysk. Np w pisaniu gry na compo najlepsze rozwiązanie to to, które działa :D

Chcesz się nauczyć lepiej programować? Pisz więcej :) Chcesz się dowiedzieć, jak prawidłowo budować programy, moduły, klasy? Czytanie tekstów o projektowaniu kodu i inżynierii oprogramowania może pomóc... ale może też namącić w głowie. Proponuję wrócić do starego kodu i sprawdzić co Cię od niego odrzuca, albo dodać coś do kodu czego wcześniej nie przewidziałeś, albo napisać grę z kolegą o podobnym stopniu zaawansowania :)

I o co Ci chodzi z angielskim Windowsem? 90% moich postów tu na forum jest z angielskiego XP i nie ma z tym problemu. Trzeba tylko język zainstalować.

Liosan

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Październik 28, 2009, 19:56:26
Cytuj
I co dalej ?
Do kompilatora i kodować! :)

Cytuj
Skad nauczyliscie sie prawidlowych struktur programow ?
Tego już życie uczy. Po prostu pisz tak, jak uważasz, że jest Ci najwygodniej, a potem zbieraj obserwacje i wdrażaj przy najstępnych projektach. :)

Cytuj
Jakies ksiazki o schematach OOP/strukturach danych...
W OOP za daleko nie popadaj. Wielu koderów już wpadło w tą pułapkę i marnują masę czasu na tworzenie rozdmuchanego i politycznie poprawnego kodu do najprostszych rzeczy, nie mając czasu przez to na skończenie projektu. Wydumane filozofie nadają się do zespołowych projektów. Dopóki piszesz sam, pisz tak, jak Tobie jest wygodnie.

Cytuj
Co wy robliscie kiedy byliscie na takim poziomie ?
Kodowałem. Wszystko, co mi fajnego do głowy wpadło i ile tylko się dało. Kod wychodził badziewny, ale zawsze wychodziło z tego jakieś doświadczenie, czego i jak nie robić.

Cytuj
Jestem praktykiem, wszystkiego wole sie nauczyc piszac kod, niz klepac ksiazke po ksiazce. Tak tez zrobilem, na szybko przeczytalem kurs c++, a pozniej majac jakas podstawowa wiedze, robilem kupe bledow, ale szybko sie uczylem.
No to jazda do kompilatora zamiast marnować czas na forum. ;)

Cytuj
Moj kod nijak nie przypomina kodu "profesjonalnego".
Kwestia wyglądu. Przyjmij sobie jakąś notację, przykładowo nazywając klasy jako CNazwaKlasy, pola normalnie albo m_PoleKlasy (aczkolwiek format "m_..." osobiście mi się nie sprawdził), a metody w JakiśInnySposób (ewentualnie w sposóbNazewnictwaWziętyZJavy). Od razu kod będzie wyglądał bardziej profesjonalnie. Poza tym unikaj tablic z wpisaną na sztywno liczbą elementów - zapoznaj się z std::vector i po kłopocie. :)

Cytuj
w konstruktorze loaduja mi sie wszystkie dane
Konstruktor jest średnim miejscem na ładowanie danych, bo czasem ciężko nad tym procesem zapanować (ale to tylko moje doświadczenia).

Offline sobol

  • Użytkownik

# Październik 28, 2009, 20:22:32
Co rozumiesz przez kod "profesjonalny" ? :)
Myślisz, że w firmach soft-dev kod jest taki piękny, idealny etc? :)
Najważniejsze w kodzie jest to, żeby działał. Potem to, żeby działał :P Potem to jak się go czyta i wydajność, moim zdaniem na równi. Szpikowanie kodu jakimiś pampuchami językowymi nie powoduje, że czyta się go łatwiej ani że jest wydajniejszy. Nie powoduje też, że magicznie zaczyna działać :P Make it simple, takie jest moje podejście.

Offline Bloodian

  • Użytkownik

# Październik 28, 2009, 20:25:56
Hmmm... Bardzo mnie ucieszyly Wasze odpowiedzi, bo zawsze fascynowalo mnie to w programowaniu ze mozna zrobic jedna rzecz na tysiace sposobow.

Wiaze jednak swoja przyszlosc z kodzeniem, dlatego chcialem znalezc sposob zeby "ujednolicic" kod z innymi programistami. Tak naprawde, to gubia mnie te wszystkie ksiazki, reguly, wzory, poradniki.
Skupie sie wiec na tym zeby moj kod byl czytelny, nie "profesjonalny".

Jeszcze jedno, pytanie, warto uczyc sie wszystkich struktur danych ? To jest srednio 300-400 stron ksiazki, a mozna przeciez uzyc STL.



Offline Charibo

  • Redaktor

# Październik 28, 2009, 20:27:20
Według mnie, najważniejsze żeby kod pisało się szybko, prosto i żeby w miarę łatwo dało się go utrzymać. A co dalej? Spróbuj napisać grę od A-Z. Niekoniecznie skomplikowaną, ale pełną: z grafiką, dźwiękiem, gameplayem, menusami, intrem, paroma levelami, ikonką... :)

Offline sobol

  • Użytkownik

# Październik 28, 2009, 20:28:31
Tu moje zdanie jest takie - zły programista nie wie co to STL / Boost :P Przeciętny umie ich użyć. Dobry programista używa ich świadomie, bo sam zaimplementował część struktur / algo, wie jak działają, wie jakie są ich zalety / wady etc. Niestety to nie jest jedyny wyznacznik dobrego programisty :D
To tak IMHO

wine

  • Gość
# Październik 28, 2009, 20:29:32
Jeszcze jedno, pytanie, warto uczyć się wszystkich struktur danych ? To jest średnio 300-400 stron książki, a można przecież użyć STL.
Nie są ci potrzebne? Nie ucz się ich. Masz za dużo wolnego czasu? Koduj. Proste. Ucz się tego co jest Ci potrzebne. Poza tym STL to tylko ich przepisanie w C++...

A i korzystaj z j. polskiego, pozwoliłem sobie poprawić bo Ci się ogonki gubią... Mnie Mozilla poprawia ;D

Offline Dab

  • Redaktor
    • blog

# Październik 28, 2009, 20:31:15
Tu moje zdanie jest takie - zły programista nie wie co to STL / Boost :P Przeciętny umie ich użyć. Dobry programista używa ich świadomie, bo sam zaimplementował część struktur / algo, wie jak działają, wie jakie są ich zalety / wady etc. Niestety to nie jest jedyny wyznacznik dobrego programisty :D
To tak IMHO
Słaby programista nie wie co to Boost.
Średni wie.
Dobry używa.
Znakomity wie, żeby nie używać. ;)

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Październik 28, 2009, 20:36:09
Cytuj
Wiaze jednak swoja przyszlosc z kodzeniem, dlatego chcialem znalezc sposob zeby "ujednolicic" kod z innymi programistami.
Zrobisz to jak pójdziesz do pracy. Nie ma jednego standardu, a nawet w obrębie danego projektu często różne moduły pisane są nieco różnym stylem. Po prostu jak przyjdzie Ci pracować z cudzym kodem, pisz tak, żeby Twój kod wyglądał podobnie.

Cytuj
Tu moje zdanie jest takie - zły programista nie wie co to STL / Boost :P Przeciętny umie ich użyć
W takim razie z perspektywy boosta jestem gdzieś między złym, a przeciętnym (wiem co to jest i kiedyś miałem boosta na dysku, ale że brakowało mi miejsca na dysku to musiałem skasować coś niepotrzebnego i padło na boosta). ;)

Offline Bloodian

  • Użytkownik

# Październik 28, 2009, 20:36:14
Ok. Dzieki wielkie. Podniesliscie mnie na duchu.

Musze w koncu zainstalowac polskie znaki, bo na tym forum to must-have  :D

Offline sobol

  • Użytkownik

# Październik 28, 2009, 20:45:09
Co do tego nieszczęsnego boosta - nie do końca zrozumieliście moje przesłanie :P Nie mówię, że trzeba używać boosta. Dab to nieźle ujął
Cytuj
Znakomity wie, żeby nie używać. Wink
Albo wie, żeby nie używać, albo wie, co z niego używać, albo ma alternatywę, albo... Chodzi o świadomość :) Jeśli ktoś ma napisane przez siebie wydajne kontenery to nie używa STLa, wtedy interpretując moją poprzednią wypowiedź wprost jest złym programistą :) A nie taki był cel ofc.

Offline PsichiX (ΨΧΞ)

  • Użytkownik
    • PsichiX Website

# Październik 28, 2009, 20:57:25
Cytuj
Tu moje zdanie jest takie - zły programista nie wie co to STL / Boost
Cytuj
Znakomity wie, żeby nie używać.
dzięki dzięki xD a tak serio: fakt taktem że osobiście wole zrobić dane algorytmy i struktury po swojemu, wiedząc całkowicie jak się zachowują, gdzie może być ewentualny błąd w użyciu, jak je udoskonalić . Też za książkami i za metodą kopiego-pasta nie przepadam, sam wole poszukać rozwiązania, a co nieco potrzebnych rzeczy gdy na gwałt potrzebuję, pytam doświadczonych. Tak więc koledzy mają rację, pisz dużo, samo z czasem przyjdzie to, jak najlepiej pisać Tobie, aby używało się kodu szybko i pewnie, bez zbędnych bajerów :P

Offline Angru

  • Użytkownik

# Październik 28, 2009, 21:13:07
Jeszcze jedno, pytanie, warto uczyc sie wszystkich struktur danych ? To jest srednio 300-400 stron ksiazki, a mozna przeciez uzyc STL.
Uczyć się nie warto. Poznawać zwykle warto. Wykorzystać czasami warto, jeżeli jest to uzasadnione z kontekstu problemu. Jak wykorzystasz parę razy to już będziesz umiał. To się sprawdza chyba dla każdej dziedziny inżynierskiej. W sumie chyba nie warto zawracać sobie głowy takimi pytaniami. Jeżeli Cię coś interesuje to się nie powstrzymuj. Książka Cię nie ugryzie jeżeli nie przeczytasz jej od dechy do dechy, a szczególnie takie książki żadko się czyta od początku do końca (choć zaleca się od lewej do prawej ;) ).

Offline rm-f

  • Użytkownik
    • Tu trolluje

# Październik 28, 2009, 21:14:23
dzięki dzięki xD a tak serio: fakt taktem że osobiście wole zrobić dane algorytmy i struktury po swojemu, wiedząc całkowicie jak się zachowują, gdzie może być ewentualny błąd w użyciu, jak je udoskonalić .
I wątpię by twoje algo/struktury były szybkie, bezpieczne, proste. ;( Mam pytanie, czy kiedykolwiek robiłeś porównanie, swych optymalizacji i własnego kodu vs stl/boost ect?  Możesz pokazać wyniki, przykłady?