Celem projektu jest stworzenie gry w której gracz ma za zadanie

Transkrypt

Celem projektu jest stworzenie gry w której gracz ma za zadanie
Analiza, projektowanie
i programowanie obiektowe
Projekt: Gra Galaxia
Diana Kisiała
Tomasz Jewiarz
Grupa I rok IV
Gra Galaxia
Diana Kisiała, Tomasz Jewiarz gr. 1
Wymagania:
Celem projektu jest stworzenie gry, w której gracz ma za zadanie wyeliminować zbliżających
się przeciwników przy użyciu dostępnej broni.
Gracz steruje nowoczesnym statkiem kosmicznym. Jego zadaniem jest obrona Ziemi przed
niebezpiecznymi statkami, które do niej się zbliżają. Za zniszczenie wrogiego statku gracz
dostaje odpowiednią liczbę punktów - w zależności od zlikwidowanego pojazdu: 1,2 lub 3 .
Co jakiś czas na planszy pojawia się duży przeciwnik, za którego gracz może dostać aż 10
punktów. Po zabiciu wszystkich przeciwników na planszy przechodzimy do następnego
poziomu. Do przejścia mamy 6 poziomów, które różnią się układem przeciwników na
planszy.
Gracz:
Porusza się w prawo i lewo.
Posiada (1-5) żyć – o ilości żyć decyduje sam gracz… zmieniając w opcjach
Może zmienić szybkość przeciwników ( max 6 stopni) oraz ilość plansz , które chce
przejść – max 6 plansz
Ma zniszczyć przeciwników przy użyciu aktualnie posiadanej broni.
Niszcząc przeciwnika otrzymuje punkty.
Przeciwnicy:
Trzy różnego rodzaju statki obcych:
o Poruszają się w prawo w lewo oraz w miarę upływu czasu w dół ekranu.
o Każdy stwór ma inną liczbę punktów (1,2,3).
Jeden duży statek o dużo szybszej broni oraz większej liczbie punktów (10)
o Statek ten pojawia się na planszy co jakiś czas
o Przesuwa się tylko i wyłącznie od lewej do prawej strony planszy
Diagram przypadków użycia:
<<include>>
GRA
Rozpocznij
grę
Zobacz
rekord
Zobacz
instrukcje
Gracz
Zobacz
autorów
Zmień
Opcje
Wyjdź
z gry
2
Gra Galaxia
Diana Kisiała, Tomasz Jewiarz gr. 1
Opis przypadków użycia:
1. Rozpocznij grę:
a. Opis:
2.
3.
4.
5.
6.
Gracz rozpoczyna nową grę.
b. Scenariusz:
 Gracz przyciska przycisk „nowa gra” i rozpoczyna grę.
Zobacz rekord:
a. Opis:
Będzie zawierać najlepszy wynik osiągnięty w grze przez gracza.
Zobacz instrukcje:
a. Opis:
Gracz ma do dyspozycji instrukcję, która będzie sposób sterowania.
Zmień opcje:
a. Opis:
Gracz ma możliwość zmiany 3 opcji :
Ilość żyć (1-5)
Ilość plansz do przejścia (1-6)
Szybkość przeciwników (0-6)
Zobacz autorów:
a. Opis:
Opcja będzie zawierć autorów projektu.
Wyjdź z gry:
a. Opis.
Gracz w dowolnym momencie opuszcza grę przez przyciśnięcie klawisza
„K”. Spowoduje to powrót do menu głównego, z którego gracz wybiera
opcję „Wyjdź z gry”
Lista kandydatów na klasy:










Intro
Menu
Plansza
Gracz
Przeciwnik : duży, 4 małe i duży stwór
Broń
Osoba
Gra
Baza
Pliki
3
Gra Galaxia
Diana Kisiała, Tomasz Jewiarz gr. 1
Lista klas:







Obrazek
Broń
Wróg
Gracz
Plansza
Menu
Pliki
Diagramy klas:
Pliki
Obrazek
Menu
1
6
Plansza
1
1
Broń
wypuszcza
wypuszcza
25
1
Wróg
zabija
Gracz
4
Gra Galaxia
Diana Kisiała, Tomasz Jewiarz gr. 1
Opis klas:
Obrazek
Zadaniem obiektów tej klasy jest rysowanie obrazków i cyfr na planszy
- cyfry : SDL_Surface
- cyfry - obrazki cyfr od 0 -9
+ rysuj()
+ ustaw_cyfre()
+ rysuj() - rysuje obrazki na planszy
+ ustaw_cyfre() - ustawia cyfrę na planszy
Broń
Klasa ta będzie opisywać broń i jej siłę użytą w grze.
- kula : SDL_Surface
+ x : int
+ y : int
- kula – obrazek kuli
+ x - położenie kuli na osi x
+ y - położenie kuli na osi y
+ ustaw()
+ rysuj_b ()
+ ustaw() - ustawia położenie broni na planszy
+ rysuj_b () - rysuje lecącą kule
Wróg
- nr_wroga : int
- il_punktow : int
- czas : float
- ograniczenie : int
- przec : SDL_Surface
+ x : int
+ y : int
+ x_dw : int
Klasa będzie opisywać wroga
- nr_wroga - numer wroga do wyboru mamy 3 wrogów
- il_punktow - ile punktów za każdego wroga
- czas - zmienna potrzebna do określenia szybkości przesuwania i
opadania wroga
- ograniczenie - ograniczenie przesunięcia wroga na planszy
- przec - obrazki wrogów
+ x - położenie wroga na osi x
+ y - położenie wroga na osi y
+ x_dw – położenie dużego wroga na osi x
- gr : SDL_Surface
- zycia : SDL_Surface
- punkty : SDL_Surface
- przez : SDL_Surface
- il_zyc : int
- punkty: int
- xpos : int
- ypos : int
+ ustaw() - ustawia miejsce gdzie ma stać wróg
+ ustaw-dw() - ustawia miejsce gdzie ma stać duży wróg
+ rysuj_w() - rysuje i przesuwa wroga
+ ile_pkt() - zwraca ilość punktów dla konkretnego wroga
Klasa ta będzie opisywać gracza
- gr - obrazek gracza
- zycia – obrazek : napis życia
- punkty – obrazek : napis punkty
- przez – obrazek „/”
- il_zyc - ile żyć ma gracz
- punkty – ile punktów ma gracz
- xpos - położenie gracza na osi x
- ypos - położenie gracza na osi y
+ ustaw_punkty()
+ ile_zyc()
+ ustaw_ile_zyc()
+ numer_planszy()
+ odejmij_zycie()
+ ustaw_punkty() - ustawienie punktów na planszy
+ ile_zyc() - zwraca ilość żyć gracza
+ ustaw_ile_zyc() – ustawia ilość żyć dla gracza
+ numer_planszy() - rysuje numer planszy
+ odejmij_zycie() - odejmuje życie gdy je stracimy
+ ustaw()
+ ustaw_dw();
+ rysuj_w()
+ ile_pkt()
Gracz
5
Gra Galaxia
Diana Kisiała, Tomasz Jewiarz gr. 1
+ dodaj_punkty()
+ ile_pkt ()
+ zeruj()
+ ustaw ()
Plansza
- tlo : SDL_Surface
- czy_wystrzelony : int
- il_przec : int
- czy_wrog_aktywny : int
- ktory_wrog: int
- przesun_wroga : int
- il_zabitych_przec:int
- czy_wystrzelony_wr : int
- czy_wystrzelony_dw :int
- nr_planszy: int
- koniec_gry : int
- poczatek_gry: int
+ wrog_przydziel_pam()
+ zeruj()
+ wrog_zeruj()
+ laduj ()
+ inicjalizacja_planszy()
+ rysuj_tlo ()
+ ile_zdobyto_pk()
+ laduj_plansze()
+ rysuj_plansze
+ wynik()
+ porusz_graczem
+ kolizja ()
+ utrata_zycia
+ utrata_zycia_dw()
+ dodaj_naboj()
+ strzal ()
+ dodaj_naboj_wrogowi ()
+ strzal_wroga()
+ dodaj_naboj_dw()
+ strzal_dw()
+ czy_koniec_planszy ()
+ koniecGry()
+ wrog_przydziel_pam()
+ opcje ()
Menu
- back : SDL_Surface
- autorzy : SDL_Surface
- wynik : SDL_Surface
- instrukcja : SDL_Surface
+ dodaj_punkty() - dodaje punkty gdy zabijemy wroga
+ ile_pkt () - zwraca ilość punktów dla gracza
+ zeruj() - zeruje ustawienia gracza
+ ustaw () - rysujemy gracza na planszy
Zadaniem obiektów tej klasy jest rozmieszczenie gracza i przeciwników
na planszy i obsługa zdarzeń czasie gry,
- tlo - rysunek tła
- czy_wystrzelony - czy gracz wystrzelił kulę
- il_przec - ilość przeciwników na planszy
- czy_wrog_aktywny - czy dany wróg jest aktywny na planszy czy go juz
tam nie ma
- ktory_wrog - jaki wróg gdzie stoi na planszy ( do wyboru wróg 0,1,2)
- przesun_wroga - czy wrogowie się przesuwają czy nie
- il_zabitych_przec - ilość zabitych przeciwników
- czy_wystrzelony_wr - czy wróg wystrzelił kulę
- czy_wystrzelony_dw - czy duży wróg wystrzelił kulę
- nr_planszy - numer aktywnej planszy
- koniec_gry - czy gra się zakończyła
- poczatek_gry - zmienna potrzebna przy utracie życia na 1 planszy bez
niej gra ładuje się na nowo - wszystkie życia i 0 punktów
+ wrog_przydziel_pam() – przydziela pamięć dla wrogów
+ zeruj() - zeruje planszę
+ wrog_zeruj() - zeruje dane dotyczące wroga
+ laduj () - laduje tło
+ inicjalizacja_planszy() - inicjalizuje 1 plansze gry
+ rysuj_tlo () - rysuje tło
+ ile_zdobyto_pk() - zwraca ilość zdobytych punktów – potrzebne do
rekordu
+ laduj_plansze() - inicjalizuje plansze –ustawnie przeciwników
+ rysuj_plansze() - rysuje ustawionych wrogów na planszy
+ wynik() - rysuje dane : punkty i ilość żyć
+ porusz_graczem() - poruszenie graczem po przyciśnięciu klawiszy
+ kolizja () - sprawdzenie kolizji przeciwnika z kula gracza, zabicie
przeciwnika
+ utrata_zycia() - sprawdzenie kolizji kuli wroga z graczem - utrata życia
+ int utrata_zycia_dw() – sprawdza kolizje kuli od dużego wroga z
graczem – utrata życia
+ dodaj_naboj() - dodaje kuli graczowi
+ strzal () - gracz strzela
+ dodaj_naboj_wrogowi () - dodanie kuli wrogowi
+ strzal_wroga() - wrog strzela
+ dodaj_naboj_dw () - dodanie kuli dużemu wrogowi
+ strzal_dw() - duży wrog strzela
+ czy_koniec_planszy () - sprawdzenie czy nastąpił koniec planszy
+ koniecGry() - koniec gry wiadomo o co chodzi ;)
+ wrog_przydziel_pam() – przydziela pamięć dla wrogów
+ opcje() – wywołuje funkcje ustawiającą ilość żyć dla gracza
W klasie będzie się znajdować menu gry, autorzy, instrukcja, najlepszy
wynik osiągnięty w grze
- back; - obrazek tła głównego
- autorzy - obrazek autorzy
- wynik - obrazek zdobyłeś ....punktów
- instrukcja - obrazek instrukcja
6
Gra Galaxia
Diana Kisiała, Tomasz Jewiarz gr. 1
- koniec : SDL_Surface
- koniec_info : SDL_Surface
- rekord_napis : SDL_Surface
- buton : SDL_Surface
- strzałki : SDL_Surface
- która_plansza : int
- czy_przyciski_aktywne : int
- czy_menu_aktywne: int
- rekord : int
- done : int
- il_zyc1 : SDL_Surface
- il_plansz1: SDL_Surface
- szybkosc1: SDL_Surface
- il_roznych_przec1: SDL_Surface
+ laduj()
+ tlo()
+ gra()
+ okno()
- koniec - obrazek - koniec gry
- koniec_info- obrazek - koniec gry
- rekord_napis - napis - ranking
- buton – obrazki przycisków
- strzałki – obrazki strzałek w opcjach
- ktora_plansza – liczba pomocnicza informująca nas o numerze planszy
- czy_przyciski_aktywne - czy przyciski gracza są aktywne
- czy_menu_aktywne – czy przyciski menu są aktywne
- rekord – najlepszy wynik w grze
- done – zmienna potrzebna do zamknięcia okna
- il_zyc - obrazek ilość żyć
- il_plansz1: obrazek ilość plansz
- szybkosc1: obrazek szybkość
- il_roznych_przec1: obrazek ilość rożnych przeciwnikow
+ laduj() - ładuje obraki
+ tlo() - rysuje tło
+ gra() - obsługa gry
+ okno() - rysuje okno , menu gry, elementy po wyborze opcji z menu
Pliki
+ Rekord : int
+ ilosc_zyc : int
+ ilosc_plansz : int
+ predkosc : int
+ ilosc_roznych_przec : int
+ czytaj_rekord ()
+ zapisz_rekord ()
+ zapisz_opcje ()
+ czytaj_opcje ()
W klasa ta odpowiada za operację na plikach – wpisywanie do pliku i
czytanie z pliku – rekordu oraz opcji
+ Rekord – przechowuje najwyższy rekord
+ ilosc_zyc - przechowuje opcje – ilość żyć
+ ilosc_plansz – przechowuje opcję – ilość plansz
+ predkosc - przechowuje opcje - prędkość
+ ilosc_roznych_przec – przechowuje opcję –ilość różnych przeciwników
+ czytaj_rekord () – czyta rekord z pliku
+ zapisz_rekord () – zapisuje rekord do pliku
+ zapisz_opcje () - czyta opcje z pliku
+ czytaj_opcje () – zapisuje opcje do pliku
7
Diagramy przebiegu:
m:Menu
Gracz
wyswietl_rekord()
P:Pliki
czytaj_rekord()
Wyświetlenie najlepszego wyniku
m:Menu
p: Plansza
g:Gracz
w:Wróg
strzelaj()
czy_skonczona()
kolejna_plnasza()
Przejście do nastepnego poziomu
czy_zniszczony()
dodajPunkty()
Gracz strzela
Gra Galaxia
Diana Kisiała, Tomasz Jewiarz gr. 1
w:Wróg
m:Menu
Gracz
g:Gracz
strzelaj()
p: Plansza
m:Menu
Gracz
g:Gracz
czas_minal ()
czy_zniszczony()
czy_zniszczony()
zwrocDane()
zwrocDane()
wpisz()
wpisz()
zakonczGre()
Gracz ginie
zakonczGre()
Przeciwnik zbliżył się do gracz - gracz ginie
9
Gra Galaxia
Diana Kisiała, Tomasz Jewiarz gr. 1
g:Menu
Gracz
rozpocznijGre()
<<create>>
: Plansza
<<create>>
<<create>>
g: Gracz
:Wróg
ustawGracza()
Ustaw_wroga()
ustaw_dw()
<<destroy>>
zakonczGre()
<<destroy>>
<<destroy>>
Rozpoczęcie gry
10
Gra Galaxia
Diana Kisiała, Tomasz Jewiarz gr. 1
m: Menu
Gracz
wyswietl_instrukcje()
wyswietl_autorow()
Wyświetlenie autorów
Wyświetlenie instrukcji
m:Menu
Gracz
wyswietl_opcje()
m: Menu
Gracz
P:Pliki
czytaj_opcje()
zmien_il_zyc()
zmien_il_plansz()
zmien_szybkosc()
zapisz_opcje()
Wyświetlenie i zmiana opcji
11