Jak zaprojektować i rozplanować kod menu do gry

0

Piszę grę bomberman. Jakąś wersję w którą można pograć już mam (zaznaczam to bo wiem, że często odpowiedzi w wątkach tego typu sprowadzają się do "weź się za coś prostszego potem napisz grę").

Używam silnika ZenGL (http://www.zengl.org/).
Mój problem polega na tym, że nie wiem jak napisać menu by kod wyglądał sensownie. Mam zamiar zrobić jak najprostsze menu typu:

1.Start
Poziom trudności:

  • Łatwy
  • Normalny
  • Trudny
  1. Opcje
  • Grafika
    • Fullscreen
    • Rozciągnięcie
  • Klawiszologia
    • góra
    • dół
    • prawo
    • lewo
    • postaw bombę
    • detonuj bombę
  1. Wyjdź.

I dla każdego takiego menu i podmenu musiał bym pisać odpowiednią procedurę rysującą i odpowiednie procedury obsługi klawiszy. @furious programming podpowiedział mi, by te wszystkie procedury umieścić w tablicy i na podstawie enuma wybierać odpowiednie. Jest to jakieś rozwiązanie jednak przeraża mnie ilość kodu który będę musiał napisać a w większości przypadków kod będzie się powtarzał (co mógłbym ominąć rozbijając kod na większą ilość procedur i funkcji) i wcale nie zdziwił bym się gdyby kod miał coś koło 6k LoC z czego 4k to by było menu...

I tu pojawia się moje pytanie:
Da się to napisać jakoś krócej? Sensowniej rozplanować? Przy czym pisanie czegoś w rodzaju LCL pod ZenGL raczej odpada.

0

To co ma być rysowane w każdym ekranie menu to rysuj niezależnie od położenia w menu (np. tło), rozdzielić trzeba to, co się powtarzać nie będzie; Trzeba zrobić coś na tej zasadzie jak menu w programach konsolowych, gdzie wyświetlaniem zajmuje się Write, a ilość opcji może być różna :P

0

To to ja wiem. Aż taki głupi nie jestem :P

0

Zrób sobie podsystem GUI, najłatwiejsza opcja.

1
babubabu napisał(a)

co masz na myśli?

Napisz po prostu sobie do tej apki GUI - no wiesz, przyciski, slidery i inne takie. Wtedy stworzenie takiego menu to będzie parę minut.
Ja gdy coś takiego pisałem wyszło ok. 2k linijek kodu, ale masz za to coś używalnego w całej aplikacji.

0

@Patryk27 No właśnie tego chciałem uniknąć :P Ale w sumie do innych projektów też się może przydać. Pomyślę jeszcze.

0

@babubabu - to co kiedyś Ci proponowałem to trzymanie np. enuma, służącego do rozpoznania "lokalizacji" w menu (np. menu główne, menu wyboru trybu, menu ustawień ekranu itd.); Macierz wskaźników na procedury służyć ma do odpalenia kawałka kodu, rysującego unikalne dla danego menu elementy, jednak elementy rysowane bez względu na to które menu jest wyświetlane, powinny być rysowane zawsze i niezależnie od wartości enuma;

Natomiast to w jaki sposób zaimplementujesz sobie GUI, zależy tylko od Ciebie; Rysowanie pojedynczej etykiety menu powinno być uniwersalne, z rozróżnieniem aktywności danej pozycji (np. dodatkowy parametr typu Boolean) i używane dla każdej pozycji menu przez wszystkie procedury z macierzy;

Gdybanie nic nie da - spróbuj coś naskrobać, wtedy łatwiej będzie coś doradzić :]

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