Bloodian
Newbie
wiadomości: 39
|
 |
« : Październik 28, 2009, 20: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.
|
|
|
|
|
Zapisane
|
|
|
|
|
Liosan
|
 |
« Odpowiedz #1 : Październik 28, 2009, 20:53:40 » |
|
Narzekasz, że Twój kod jest prosty?  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  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
|
|
|
|
|
Zapisane
|
w ich zylach plynie praslowianska krew - oni musza wiedziec jak sie robi software Demo WG RC1!
|
|
|
|
Krzysiek K.
|
 |
« Odpowiedz #2 : Październik 28, 2009, 20:56:26 » |
|
I co dalej ? Do kompilatora i kodować!  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.  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. 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ć. 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.  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.  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).
|
|
|
|
|
Zapisane
|
|
|
|
|
sobol
|
 |
« Odpowiedz #3 : Październik 28, 2009, 21: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ł  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ć  Make it simple, takie jest moje podejście.
|
|
|
|
|
Zapisane
|
|
|
|
Bloodian
Newbie
wiadomości: 39
|
 |
« Odpowiedz #4 : Październik 28, 2009, 21: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.
|
|
|
|
|
Zapisane
|
|
|
|
|
Charibo
|
 |
« Odpowiedz #5 : Październik 28, 2009, 21: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ą... 
|
|
|
|
|
Zapisane
|
Now these points of data make a beautiful line And we're out of beta we're releasing on time.Blogassek.
|
|
|
|
sobol
|
 |
« Odpowiedz #6 : Październik 28, 2009, 21:28:31 » |
|
Tu moje zdanie jest takie - zły programista nie wie co to STL / Boost  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  To tak IMHO
|
|
|
|
|
Zapisane
|
|
|
|
|
wine
Gość
|
 |
« Odpowiedz #7 : Październik 28, 2009, 21: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 
|
|
|
|
|
Zapisane
|
|
|
|
|
Dab
|
 |
« Odpowiedz #8 : Październik 28, 2009, 21:31:15 » |
|
Tu moje zdanie jest takie - zły programista nie wie co to STL / Boost  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  To tak IMHO Słaby programista nie wie co to Boost. Średni wie. Dobry używa. Znakomity wie, żeby nie używać. 
|
|
|
|
|
Zapisane
|
|
|
|
|
Krzysiek K.
|
 |
« Odpowiedz #9 : Październik 28, 2009, 21:36:09 » |
|
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. Tu moje zdanie jest takie - zły programista nie wie co to STL / Boost  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). 
|
|
|
|
|
Zapisane
|
|
|
|
Bloodian
Newbie
wiadomości: 39
|
 |
« Odpowiedz #10 : Październik 28, 2009, 21:36:14 » |
|
Ok. Dzieki wielkie. Podniesliscie mnie na duchu. Musze w koncu zainstalowac polskie znaki, bo na tym forum to must-have 
|
|
|
|
|
Zapisane
|
|
|
|
|
sobol
|
 |
« Odpowiedz #11 : Październik 28, 2009, 21:45:09 » |
|
Co do tego nieszczęsnego boosta - nie do końca zrozumieliście moje przesłanie  Nie mówię, że trzeba używać boosta. Dab to nieźle ujął 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.
|
|
|
|
|
Zapisane
|
|
|
|
|
PsichiX
|
 |
« Odpowiedz #12 : Październik 28, 2009, 21:57:25 » |
|
Tu moje zdanie jest takie - zły programista nie wie co to STL / Boost 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 
|
|
|
|
|
Zapisane
|
|
|
|
Angru
Jr. Member

wiadomości: 96
|
 |
« Odpowiedz #13 : Październik 28, 2009, 22: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  ).
|
|
|
|
|
Zapisane
|
"Ten kto zadaje pytanie jest głupcem przez 5 minut. Ten kto tego nie robi jest głupcem przez całe życie." - przysłowie chińskie
|
|
|
|
świrus
|
 |
« Odpowiedz #14 : Październik 28, 2009, 22: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?
|
|
|
|
|
Zapisane
|
Restore "Prezydent" from backup copy: FAILED Catchable fatal error: Argument 1 passed to set_first_lady() must be an instance of Wife, Cat given rm-f/świrus 
|
|
|
|