Postanowiłem wyświetlać planszę gry w taki sposób, aby wypełniała całą przestrzeń ekranu na wysokość i podobnie na szerokość, z tym że z poprawką (rozszerzającą ten drugi wymiar) na to, aby wszystkie kluczowe wymiary dały się łatwo wyliczyć w dzieleniach bez reszty.
Górną część planszy zajmował będzie obszar gry, zaś u dołu zostanie przestrzeń, którą poświęcę na prezentację wyniku, pozostałych żyć, numeru planszy, etc.
Wstępnie postanowiłem, że obszar samej gry będzie miał szerokość równą szerokości 13 cegiełek, zaś wysokość równą wysokości 20 cegiełek. Cegiełki mają proporcje 2:1, przy czym dłuższym wymiarem jest szerokość.
Rakieta będzie szeroka na dwie cegiełki, o wysokości równej lub nieco mniejszej od wysokości cegiełki. Ten ostatni wymiar pozostaje bez wpływu na całą resztę, więc nie musi być rezultatem jakiejś eleganckiej proporcji.
Na potrzeby testów kod wyliczający istotne wymiary elementów znajdujących się na ekranie ująłem do postaci funkcji, aczkolwiek niewykluczone, że w finalnym kodzie znajdzie się on w nieco innej postaci. Oto funkcja wyliczająca kluczowe wymiary w oparciu o podaną wysokość ekranu, grubość obramowań oraz wymiary obszaru gry liczone w cegiełkach a wynik zwracajaca w postaci slownika:
def wymiary_planszy(wysokosc_ekranu, grubosc_ramki, ile_klockow_szer = 13, ile_klockow_wys = 20):
wnetrzetmp = wysokosc_ekranu - (2 * grubosc_ramki)
szerokosc_wnetrza = (ile_klockow_szer - wnetrzetmp%ile_klockow_szer) + wnetrzetmp
if (szerokosc_wnetrza / ile_klockow_szer)%2 == 1:
szerokosc_wnetrza = szerokosc_wnetrza + ile_klockow_szer
klocek_szerokosc = szerokosc_wnetrza / ile_klockow_szer
klocek_wysokosc = klocek_szerokosc / 2
szerokosc_planszy = szerokosc_wnetrza + (2 * grubosc_ramki)
wysokosc_obszaru_gry = ile_klockow_wys * klocek_wysokosc
wysokosc_menu = wysokosc_ekranu - wysokosc_obszaru_gry - (3 * grubosc_ramki)
plansza_wymiary = {'grubosc_ramki' : grubosc_ramki, 'szerokosc_planszy' : szerokosc_planszy, 'wysokosc_planszy' : wysokosc_ekranu, 'szerokosc_wnetrza' : szerokosc_wnetrza, 'wysokosc_obszaru_gry' : wysokosc_obszaru_gry, 'wysokosc_menu' : wysokosc_menu, 'klocek_szerokosc' : klocek_szerokosc, 'klocek_wysokosc' : klocek_wysokosc, 'rakieta_szerokosc' : (2*klocek_szerokosc), 'rakieta_wysokosc' : ((int)(klocek_wysokosc*0.8))}
return plansza_wymiary
Wstępne testy wykazały, że funkcja działa poprawnie, aczkolwiek w pełni będzie można to ocenić dopiero po napisaniu kodu wyświetlającego przykładowy obszar gry w oparciu o zwracane wymiary.
Brak komentarzy:
Prześlij komentarz