Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Prośba o łopatologiczne wytłumaczenie programowania obiektowego(w grach)

Ostatnio zmodyfikowano 2013-07-22 13:17
Autor Wiadomość
marcin107
Temat założony przez niniejszego użytkownika
Prośba o łopatologiczne wytłumaczenie programowania obiektowego(w grach)
» 2013-07-22 00:05:59
Witam, ostatnio stwierdziłem, że pora przejść z programowania proceduralnego na obiektowe, jednak żeby to zrobić chciałbym najpierw wiedzieć jaka by była tu różnica.
Chodzi mi tu głównie o gry(na razie konsolowe). Gdzie zradza się u mnie pytanie, mianowicie  wyobraźcie sobie, że mamy walkę są statystyki moje i przeciwnika i to by była jedna klasa? Tzn. Czy np. część z walką to jedna klasa, część ze sklepem to druga klasa, część z drzewkiem umiejętności to trzecia klasa? Jeżeli tak to z kolei jest dalsza kwestia, ponieważ danymi trzeba się wymieniać tzn. np. danymi ze skilltree, które są potrzebne to poziomy umiejętności, żeby odpowiednio je przełączyć w walce. Tu chyba wchodzi coś takiego jak zaprzyjaźnienie klas czy dziedziczenie, nie wnikałem jeszcze bo chce zrozumieć najpierw sens programowania obiektowego zanim przystąpię do jego dalszych części. Tylko dalsza kwestia po co używać programowania obiektowego skoro i tak to się wszystko ze sobą łączy, to tak jakby klas nie było bo i tak to wszystko będzie zwarte ze sobą. Dalej zastanawiała mnie jeszcze rzecz: po co takie coś jak private, protected i public w grze?

Bardzo proszę o pomoc, prawdopodobnie jak naprostujecie mój tok rozumowania, to będzie mi łatwiej przystąpić do nauki tego działu.
P-88511
Bimbol
» 2013-07-22 01:40:02
W programowaniu obiektowym pracujesz na obiektach. Obiektem może być do słownie wszystko, samochód, plansza, deska, co kol wiek.
Klasą może być np. w grze Kółko krzyżyk Gracz, Plansza. Klasa gracz, oczywiście może posiadać takie informacje jak jego nazwa, jego znak (O, bądź X) i kilka metod. (To funkcje w klasie)
Z kolei plansza posiada na pewno informacje o jej rozmiarze, oraz szereg metod, takich jak rysowanie planszy, sprawdzanie pól itd.

Klasa to taka struktura, tyle, że posiada specyfikator dostępu. (private, protected, public)

O co w tym chodzi?
Otóż specyfikatory dostępu określają dostęp do danej zmiennej, stałej.
Przykładowo zmienne, które umieścimy w
private
, nie są dostępne nigdzie indziej jak w tej klasie. Możemy się do nich odwołać tylko w niej, czyli w jej metodach.
protected
 działa tak samo jak
private
, z tym, że gdy jakaś klasa dziedziczy z klasy macierzystej to zmienne, które są w speyfikatorze dostępu
protected
, są też dziedziczone, a w
private
 nie.
Zaś w
public
 wszystko jest publiczne, czyli, możemy się do tego odwołać z każdego miejsca działania programu, tam gdzie oczywiście sięga nasza klasa.

Do dziedziczenia mogę przytoczyć prosty przykład:
Zwierzęta:
Ssaki, Gady, Ptaki
gdzie Ssaki, Gady, Ptaki dzielą się na jakieś odmiany.

A więc co dziedziczymy?
Na pewno Zwierzęta mają wage, więc w klasie Zwierzęta będzie zmienna waga, która jest dziedziczona dalej.

Nie jesteś jeszcze mocno wtajemniczony, ale myślę, że choć trochę Ci pomogłem.
P-88514
killjoy
» 2013-07-22 02:29:27
Nie powinieneś brać się za gry, jeżeli nie wiesz jak się zabrać za zaprojektowanie jej, nie ma czegoś takiego jak poradnik "jak napisać grę"(aczkolwiek widziałem gdzieś poradnik do napisania kółko krzyżyk :D). Jeżeli chcesz się nauczyć programowania obiektowego to znajdź sobie jakiś dobry kurs i powoli wprowadzaj klasy do swoich programów, bo naprawdę nie da się tego wytłumaczyć w jednym poście.
P-88515
marcin107
Temat założony przez niniejszego użytkownika
» 2013-07-22 08:47:35
Bimbol - trochę pomogłeś, widzę, że teraz muszę trochę poczytać o tym obiektowym i spróbować przepisać moją dosową grę na obiektowe i pewnie w trakcie zrodzą się jakieś pytania. Jak na razie dzięki.
killjoypl - nie piszę przecież bardzo rozwiniętych gier tylko dosowe, które po optymalizacjach i tak mają po 2500-3000 linijek(projekty nie dokończone). Gry dosowe bardzo łatwo napisać proceduralnie.
P-88521
pekfos
» 2013-07-22 11:52:32
po co takie coś jak private, protected i public w grze?
prawdopodobnie jak naprostujecie mój tok rozumowania, to będzie mi łatwiej przystąpić do nauki tego działu.
Już po zadawanych pytaniach widać, że nie nie wiesz za dużo o programowaniu obiektowym. Przynajmniej się na końcu przyznałeś ;P
OOP jest po to, by lepiej zorganizować kod, zapisać zależności między różnymi elementami, itp. To pozwala na np uproszczenie implementacji. To nie jest tak, że jak w grze użyjesz public, itp to będzie to widać, czy co tam sobie myślałeś, zadając te pytanie..

Gry dosowe
Konsola to nie DOS..
P-88537
dambo
» 2013-07-22 12:22:57
podam przykład, który sam często używam - masz na ekranie wielu przeciwników różnego rodzaju, każdy ma inna ilość życia, wielkość, obrazek, ale każdy dziedziczy z klasy przeciwnik. W programowaniu proceduralnym wszystkie parametry byłyby porozrzucanymi zmiennymi, ale tutaj każdy obiekt ma swoje zmienne i wszystko jest ładnie poukładane i zamiast pisać kod np poruszania się dla każdego osobno używam np tablicy wskaźników na klasę bazową i to znakomicie wszystko upraszcza.
P-88540
marcin107
Temat założony przez niniejszego użytkownika
» 2013-07-22 13:17:37
Dobra, na razie wystarczy tłumaczeń coś tam świta, jak znajdę teraz chwilę to posiedzę trochę nad tym. W razie czego jeszcze się odezwę.

Dzięki! ;)
P-88545
« 1 »
  Strona 1 z 1