Jump to content

Archived

This topic is now archived and is closed to further replies.

wichniar24

C++ co po podstawach

Recommended Posts

Mam mały dylemat bo zapoznałem się z podstawami c++ i troche WinApi (większość z megatutoriala) i nie wiem co dalej robić. Chciałbym przerzucić sie na jakąś bibliotekę graficzną( 2D oczywiście) tylko nie wiem jaką... Zastanawiałem sie nad SDL i Allegro ale nie wiem która będzie lepsza na początek, jeżeli ktoś ma jakieś inne propozycje to z chęcią ich wysłucham.

Dodam tylko że nie interesują mnie gotowce czyli silniki graficzne w których można dodawać elementy kliknięciem myszki wole dojść do wszystkiego sam :cool:

Link to comment
Share on other sites

Co to znaczy podstawy C++? Wskaźniki, klasy, dziedziczenie, przestrzenie nazw, polimorfizm, szablony? Najpierw opanuj język.

Zanim weźmiesz się za programowanie grafiki, zapoznaj się z biblioteką standardową C oraz STL. Nie zaszkodzi Ci też wiedza o tym czym różni się lista od wektora.

Nigdy nie korzystałem z Allegro. Z SDL + OpenGL skorzystałem raz w życiu, aplikacja miała działać na Windowsie i na Linuxie. Według mnie jest to niezłe połączenie na początek. SDL ułatwi Ci otwarcie okna i obsługę komunikatów, oraz urządzeń wejściowych. OGL da Ci dostęp do sprzętowo wspomaganej grafiki.

Link to comment
Share on other sites

"Wskaźniki, klasy, dziedziczenie, przestrzenie nazw, polimorfizm, szablony" - Ogólną wiedze mam ale nie da sie tego opanować tylko w konsolowych programach.

Hakken - pokaż mi jakiś twój projekt, chociażby konsolowy to pogadamy bo jak na razie to masz kłopoty z interpretacją switcha :P

Co do Allegro - po pierwszym spotkaniu bardzo pozytywnie mnie zaskoczyło, w porównaniu do WinApi jest baaardzo mało kodu i jest o bardziej przejrzysty.

Link to comment
Share on other sites

"przejrzystszy" jakoś dziwnie mi to brzmi. Chyba powinno być "bardziej przejrzysty", o kodzie można też powiedzieć "czytelniejszy".

"Ogólną wiedze mam ale nie da sie tego opanować tylko w konsolowych programach." Jak to się nie da?

Wskaźniki - napisz aplikację, która będzie realizowała bazę danych teleadresowych. Każdy wpis to struktura zawierająca dane jednej osoby, tj. imię, nazwisko, numer telefonu, adres korespondencyjny. Ilość wpisów nieograniczona. Dane przechowywane na dysku. Niewolno używać STL.

Klasy - Napisz klasy, które pozwolą na obsługę terminala windows, tj. wykrycie zmiany/ustawianie rozmiaru okna, obsługa myszy, wirtualne terminale, kolorowy tekst, czyszczenie ekranu, ustawianie pozycji kursora.

Dziedziczenie i polimorfizm - stwórz zbiór interfejsów i klas pozwalający na obsługę czasu, tj. pobranie aktualnej daty, pobranie aktualnej godziny, pobranie danych z zegara wysokiej rozdzielczości, wyznaczanie czasu jaki upłynął na podstawie danych z zegara wysokiej rozdzielczości, obliczanie "fps'ów" (wykonań pętli na sekundę), na systemach Windows i Linux :).

Szablony, dziedziczenie - spróbuj zaimplementować wzorzec Singleton za pomocą szablonów.

Przestrzenie nazw - tu nie ma co ćwiczyć, trzeba je zwyczajnie stosować.

Link to comment
Share on other sites

przykłady można wykonać przy użyciu biblioteki graficznej
Co będzie dodatkową niepotrzebną komplikacją. Zamiast skupić się na zrozumieniu jak działa dany mechanizm języka, to będziesz dumał najpierw czemu program się nie buduje, a potem czemu nic nie widać.

a przy okazji można sie nauczyć kilku przydatnych rzeczy
Na przykład jakich? Nie zrozum mnie źle, nie chcę Cię zniechęcać do grafiki. Zwyczajnie radzę Ci opanować sam język. Nie wiem jak Allegro, ale taki SDL + OGL nie wymaga żadnej wiedzy (z C/C++) ponad funkcje i wskaźniki. Bawiąc się tą technologią nie poznasz ani klas, ani szablonów, nie nauczysz się stosować obiektowości. Da Ci to okazje aby dowiedzieć się sporo o grafice komputerowej, ale jako programista nie posuniesz się na krok do przodu.

Jeśli pytasz się mnie co powinieneś robić po poznaniu podstaw C++, to ja Ci radzę zgłębić to co w C++ jest bardzo ważne: klasy, polimorfizm, szablony oraz bibliotekę standardową.

Jeśli pytasz się czy podstawy C++ wystarczą aby robić grafikę, to moim zdaniem tak. Biblioteki graficzne są raczej mało wyrafinowanymi tworami (parę funkcji i struktur na krzyż). Chyba najbardziej zaawansowany jest DirectX (model COM). Pomijam oczywiście biblioteki do robienia GUI, jak Qt.

Link to comment
Share on other sites

Akurat Qt w obecnej wersji też nie wymaga jakiejś kosmicznej wiedzy, by z niego sprawnie korzystać. Wystarczy opanować programowanie obiektowe i później już jakoś to idzie. Jedynie liczba funkcji może trochę przerażać, ale do ich stosowania nie potrzeba dużej wiedzy.

Tak czy owak najpierw należy poznać język, a później można się bawić z bibliotekami graficznymi. Wbrew pozorom taka kolejność wiąże się z oszczędnością czasu, bo znając język łatwiej będzie wyłapać błąd, który się pojawi.

Tak przy okazji dobrze też jest się zapoznać z obsługą jakiegoś debuggera.

Link to comment
Share on other sites

Sevard - jeśli chodzi o błędy ( i inne problemy )to chyba najwięcej nauczył mnie WinApi.

"Tak przy okazji dobrze też jest się zapoznać z obsługą jakiegoś debuggera." - nie bardzo wiem o co chodzi, ma to coś wspólnego z wyjątkami?

Mormegil - no dobra przkonałeś mnie :cool: bo faktycznie mam pewne braki ale to głównie chodzi o biblioteki standardowe a w szczególności o obsługe plików dyskowych.

Hakken - stawianie sie w czyjejś sytuacji nie zawsze jest równoważne z decyzja jaką byś podjął sam mając taki problem.

"Nie mówie że jestem od ciebie lepsszy, tylko co bym zrobił na twoim miejscu." - przecież ja też nie uważam że jestem lepszy od ciebie ;)

Link to comment
Share on other sites

Najpierw przeczytaj to, lub lepiej to. Debugger w skrócie i uproszczeniu to program, który pomaga wyłapywać błędy w programie, poprzez analizę krok po kroku programu.

Jednym z popularniejszych debuugerów dla C/C++ jest GNU Debugger (GDB), jednak jego obsługa może okazać się być dosyć skomplikowana. Całkiem wygodny debugger znajedziesz w Microsoft Visual Studio. W ogóle Visual Studio to całkiem wygodne środowisko i jedna z niewielu rzeczy, która Microsoftowi się nawet całkiem udała.

Tak swoją drogą wyjątki też warto opanować.

Link to comment
Share on other sites

Ja bym jeszcze poradził zapoznać się z wzorcami projektowymi - takie obserwatory czy wizytatory naprawdę ułatwiają tworzenie aplikacji graficznych i nie tylko graficznych. Przydatna jest też znajomość bibliotek Loki, Boost ;)

Link to comment
Share on other sites

Wichniar24 - zadałeś pytanie i mam wrażenie, że oczekiwałeś odpowiedzi, jaka ci się spodoba, czyli: tak rozpocznij już zabawę z grafiką i programuj proste gierki. No, ale niestety chyba powinieneś podciągnąć samą wiedzę z C++. Oczywiście nic nie stoi na przeszkodzie żebyś coś popróbował jednak i tak szybko okaże się, że musisz wrócić do samego języka( ale sam na twoim miejscu pokombinowałbym troszkę z programowaniem grafiki, bo w pewnym momencie ma się dosyć konsoli). W moim przypadku było tak: Postanowiłem przed próbami z DirectX sprawdzić swoją wiedzę i zrobić poważniejszy projekt konsolowy mianowicie kolejnego klona Sokobana. I po miesiącu kodzenia doszedłem do wniosku, że Sokobana nie ukończę i jeszcze dużo pracy przede mną( i raczej będzie to zabawa w konsoli).

PS. W konsoli można robić naprawdę fajne rzeczy zajrzyj na gamedev.pl i zobacz, jakie cudeńka niektórzy robią w konsoli.

Pozdrawiam

lukaszsa

Link to comment
Share on other sites

To jeszcze zależy, czy chcerz zostać programistą, czy raczej hobbystycznie, bo w przypadku pierwszym, to lepiej ciągnąć język, natomiast jeśli jako hobby... no cóż, może zrobienie prostej gierki z grafika 2D będzie większą przyjemnościa niż szlifowanie języka ;P

Link to comment
Share on other sites



  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...