[C++/SDL]Struktura programu okienkowego.

0

Cześć.
Być może temat podchodzi troche pod inżynierie oprogramowania, jak coś to sorki...
Przymierzam się do pisania gry ( dla zabawy/zwiększenia swoich umiejętności ). Problem stwarza mi ogarnięcie tego jak to powinno działać, otóż wiem że w tzn głównej pętli, która wykonuje się aż do końca działania gry. Wszystko byłoby proste, gdyby nie fakt że chciałem zrobić menu na początku gry. Wymyśliłem coś takiego, ale nie wiem czy jest co zgodne z metodą programowania:

while( game_state != GAME_QUIT )
{
  while( game_state == GAME_MENU )
  {
      // jesteś w menu
      // obsługa zdarzeń
      // rendering grafiki
  }

  while( game_state == GAME_PLAY )
  {
      // grasz
      // obsługa zdarzeń
      // rendering grafiki
  }
}

Czyli dla każdego stanu gry MENU i PLAY obsługa zdarzeń musi być napisana na nowo, troszke mi to nie pasuje, ale ja się nie znam... :-P Może dobrze wykombinowałem?

Aha no i jeszcze takie pytanko, bo chciałem w swojej grze zrobić system własnych okienek, przycisków i takich tam. I moje pytanie jest takie czy to w ogóle się opłaca, pisać klasy dla każdego obiektu jaki można stworzyć, po to żeby móc później budować z nich program jak przy dynamicznym tworzeniu aplikacji API na obiektach TForm, TEdit, ... itd.

0

strasznie zawile piszesz. musisz się zdecydować czy piszesz silnik, czy grę. Jeśli silnik to nie licz na nic super uniwersalnego-do tego zauważyłem że piszesz te grę sam więc zabieraj się za logikę a nie szczegóły. Taki program możesz zrobić na wiele sposobów i nikt Ci tu nie powie czy wybrałeś zły czy dobry sposób. Możesz robić wszystko od zera-nawet własne kontrolki klasy rysujące itp. Albo znaleźć darmowy silnik i zajmować się tylko logiką/grafiką/muzyką gry. Wybór należy do Ciebie.
Z doświadczenia wiem jednak że pisząc samodzielnie taki projekt nie powinieneś myśleć o czymś w stylu SIMSOW/HL2 tylko kółko i krzyżyk. Chyba że uda Ci się zorganizować grupę powiedzmy 5ludzi.
Mimo to życzę powodzenia.

0
Ranma napisał(a)

strasznie zawile piszesz.
Sorki, jakos nie idzie mi opisywanie problemów i w ogóle czegokolwiek( pewnie dlatego miałem 2 z j.Polskiego :-P )

Ranma napisał(a)

Z doświadczenia wiem jednak że pisząc samodzielnie taki projekt nie powinieneś myśleć o czymś w stylu SIMSOW/HL2 tylko kółko i krzyżyk. Chyba że uda Ci się zorganizować grupę powiedzmy 5ludzi.
Wydaje mi się że mam dość racjonalne podejście do tematu i mimo braków wiedzy to staram się uzupełniać je na bieżąco. A co do gry to na razie proste chodzenie ludzikiem po planszy, docelowo jakiś tandetny rodzaj RPG, ale dzięki temu nauczę się wykorzystywać wiedzę w praktyce.

Ranma napisał(a)

Mimo to życzę powodzenia.
Dzięki :D

0
valmico napisał(a)

Cześć.
Czyli dla każdego stanu gry MENU i PLAY obsługa zdarzeń musi być napisana na nowo, troszke mi to nie pasuje, ale ja się nie znam... :-P Może dobrze wykombinowałem?

Te dwie pętle to nie jest poprawny sposób, dlaczego? Ano co jeśli w trakcie wykonywania pętli menu zechcesz opuścić grę, nawet jak ustawisz, warunek przerwania pętli głównej i tak wejdziesz w pętlę gry...

Na pewno nie może być więcej niż jedna pętla przez cały program, musisz mieć jedną funkcję(metodę) rysującą i to właśnie w niej będziesz decydował czy ma być rysowane menu czy gra w danym momencie, to rzecz podstawowa, najprościej będzie zrobić jakąś zmienną sterującą co ma być w danym momencie, np. menu główne, opcje, wczytywanie gry, i wreszcie gra, funkcja renderująca musi wiedzieć co rysować...
Zawsze pamiętaj, że w programie są dane(obiekty) i metody do robienia coś z tymi danymi, to wszystko, co trzeba wiedzieć, to musi być twój elementarz, zakładając że robisz silnik w którym nie masz jeszcze gotowych zasobów(jakiś modeli jeśli to ma być 3D, albo bitmap/animacji jeśli 2D), czy w momencie pisania silnika nie wiesz jak co będzie wyglądać, musisz skonstruować taki system, aby można było potem dodawać właściwe zasoby z zewnątrz programu(jak już silnik będzie napisany), więc podczas pisania tego silnika musisz potworzyć jakieś kontenery, na obiekty które powstaną, nawet nie wiesz ile tych obiektów będzie, dlatego tu niezbędne jest świetne posługiwanie się dynamicznymi wielkościami...

valmico napisał(a)

Aha no i jeszcze takie pytanko, bo chciałem w swojej grze zrobić system własnych okienek, przycisków i takich tam. I moje pytanie jest takie czy to w ogóle się opłaca, pisać klasy dla każdego obiektu jaki można stworzyć, po to żeby móc później budować z nich program jak przy dynamicznym tworzeniu aplikacji API na obiektach TForm, TEdit, ... itd.

Jeśli masz czas czemu nie, własne kontrolki będą na +

1 użytkowników online, w tym zalogowanych: 0, gości: 1