Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Projekt edukacyjny: Termin realizacji: 09.2014 – 01.2015 Zespół projektowy: Dominik Grzybowski Michał Kozłowski.

Podobne prezentacje


Prezentacja na temat: "Projekt edukacyjny: Termin realizacji: 09.2014 – 01.2015 Zespół projektowy: Dominik Grzybowski Michał Kozłowski."— Zapis prezentacji:

1 Projekt edukacyjny: Termin realizacji: – Zespół projektowy: Dominik Grzybowski Michał Kozłowski

2 Gra została przeze mnie napisana w języku C++, w programie Code::Blocks. Używałem następujących bibliotek (w tym autorskiej klasy SOUNDS.h, o której powiem coś później):

3 Jest ich 15 (bez funkcji ‘main’ i ‘gotoxy’): menu główne wypełnianie tabeli cyframi wybór trudności losowanie współrzędnych bomb oblicz bomby w otoczeniu strzelanie wypisywanie tabeli w programie wypisywanie tabeli po przegranej sprawdź pole sprawdzanie całej planszy ekran o grze napis wygrana przechowywacz hall of fame

4 W grze zastosowałem zapis wyniku w postaci cyfr. Ustalany jest on na podstawie poziomu trudności i czasu przejścia planszy. Znacznik rozpoczęcia pomiaru czasu gry umieściłem na początku funkcji ‘strzelanie’, a zakończenia na początku funkcji ‘wygrana’. Jeżeli chodzi o obliczanie wyniku to posłużę się przykładem: Czas: 15 Poziom trudności: Easy, czyli od czasu odejmuję 20 (próg punktowy, dla każdego poziomu inny) Różnicę czasu i progu punktowego mnożę x(-2) i dodaję do wyniku Wynik ostateczny = 5 Obliczenia: 15 – 20 = -5 ; (15 – 20) x -2 = 10 ; = 5

5 Klasa ta oprócz konstruktora posiada 6 funkcji: PLAY_SOUND, PAUSE, STEMPO, USTEMPO, SLIDE i REPEAT. Za pomocą tej pierwszej dźwięk o określonej długości (ustalanej z tempa i odpowiednich mnożników) i określonej wysokości. W klasie SOUNDS zdefiniowałem wysokości wszystkich dźwięków od C0 do B7, czyli 8 oktaw. Funkcja PAUSE powoduje wstawienie pauzy w wybrane miejsce, a jej długość również zależy od tempa. STEMPO ustawia tempo na żądaną wartość, a USTEMPO ustawia je na domyślną wartość (możliwą do zmiany) 150BPM. SLIDE powoduje ześlizgnięcie się lub podjazd z jednego do drugiego dźwięku w określonym czasie. REPEAT umożliwia powtórzenie sekwencji dźwięków (max 16) wybraną ilość razy oraz zezwala na określenie długości poszczególnych dźwięków składowych. Oto, jak wygląda w całości:

6

7 1. Lista dostępnych akcji 2. Wpisanie 4 = wywołanie funkcji ‘ekran o grze’ 3. Wpisanie 1 = rozpoczęcie gry; widać wywołanie wielu funkcji, które m.in. przygotowują tabele do gry 4. Wpisanie 5 = wyjście z gry 5. Wpisanie 2 = wywołanie funkcji ‘hall of fame’ 6. [niewidoczne na screenie] Wpisanie 3 = otworzenie instrukcji do gry

8 MINESWEEPER MENU GŁÓWNE

9 1. Dwie pętle ‘for’, odpowiadające za wstawienie cyfry określonej podczas wywoływania tej funkcji 2. Tutaj następuje owo przypisanie

10 1.Za pomocą funkcji ‘gotoxy’ (zielona strzałka) określiłem pole wpisywania poziomu trudności przez gracza w miejscu oznaczonym strzałką czerwoną 2.Po raz pierwszy pojawia się bardziej złożona melodia, którą napisałem z wykorzystaniem mojej autorskiej klasy (klasa – własny typ danych) SOUNDS.h. Jest ona odtwarzana, gdy gracz wybierze tryb Impossible

11 MINESWEEPER WYBÓR TRUDNOŚCI

12 MINESWEEPER PRZYKŁADOWY WYBÓR POZIOMU TRUDNOŚCI

13 1. Zmienna ‘liczba_bomb’ określa ile min ma się znajdować na planszy w określonym poziomie trudności, np. na poziomie Easy są tylko 3 miny, a na Impossible ‘rand()’ oznacza, że cyfra jest losowana (w tym przypadku współrzędne), ale zaraz obok widzimy ograniczenie w postaci wyrażenia ‘x %= 10’, czyli losowa zmienna x równa jest reszcie z dzielenia (operator ‘%’) x / 10; oznacza to, że x może wynosić od 0 do 9; instrukcja ‘if’ powoduje, że jak wylosowane współrzędne są współrzędnymi miny, obieg pętli wykonywany jest jeszcze raz

14 1. Obliczana jest suma wartości wszystkich bomb w otoczeniu konkretnego pola (tu: dla prawego górnego rogu) 2. Bomba (jak można było zauważyć w wcześniejszym slajdzie) ma wartość 9, więc suma jest dzielona przez 9, dzięki czemu wynikiem jest liczba bomb w otoczeniu 3. Wartość sumy jest przypisywana do tablicy ‘schowek’ 4. Zawartość ‘schowka’ jest przepisywana to tablicy ‘tab’, która pokazuje po tej operacji obraz planszy po wygranej

15 1. Wywołanie funkcji ‘napis’ 2. Informacje o wybranym trybie strzału (domyślne jest odkrywanie planszy) 3. Jeżeli gracz będzie chciał odkryć pole już wcześniej odkryte, zostanie wyświetlony stosowny komunikat 4. Wywołanie funkcji ‘sprawdź pole’ 5. Informacje o wybranym trybie (tym razem o flagowaniu) 6. Analogicznie do punktu 3 7. Jeżeli gracz postawi flagę na fladze, wówczas to pole stanie się polem nieodkrytym (ze znakiem ‘?’)

16 1. Wywołanie funkcji ‘sprawdzanie całej planszy’ 2. Jeżeli zmienna ‘czywygrana’ jest równa 1 to następuje wyjście z funkcji ‘strzelanie’ 3. Wywołanie funkcji ‘wypisywanie tabeli w programie’ 4. Jeżeli podając współrzędną ‘x’ gracz wpisze ‘e’ to będzie mógł wyjść z gry 5. Tak samo: jeżeli wpisze ‘A’, wywoła funkcję ‘ekran o grze’

17 1. Jeżeli podając zmienną ‘x’ gracz wpisze ‘f’, tryb strzelania zmieni się na flagowanie 2. Co się dzieje wewnątrz operacji flagowania

18 MINESWEEPER PRZYKŁADOWY EKRAN GRY

19 MINESWEEPER FLAGOWANIE

20 MINESWEEPER ALERT 1 I 2

21 MINESWEEPER RUCH TUŻ-TUŻ PRZED WYGRANĄ

22 MINESWEEPER EKRAN WYJŚCIA PODCZAS GRY

23 1. Wewnątrz funkcji ma miejsce narysowanie tabeli w oknie programu, dodając kolory do poszczególnych rodzajów pól, tutaj: mina 2. Tutaj: pole nieodkryte 3. Tutaj: flaga (kolory pól z liczą bomb w otoczeniu są niewidoczne screenie)

24 1. To samo, co w poprzedniej funkcji, ale jest dodane pole, które spowodowało przegraną oraz zmieniony jest znak bomby na ‘X’

25 MINESWEEPER PLANSZA PO PRZEGRANEJ I „GAME OVER”

26 1. Jeżeli wartość pola jest równa 0, to wykonywane są poniższe operacje 2. Odrębna operacja dla każdego pola na planszy (tu: dla pól środkowych) 3. Wywołanie funkcji przez samą siebie, ze zmodyfikowanymi argumentami; przypomina to pętlę, która kończy się w momencie, aż żaden warunek w instrukcjach ‘if’ nie został spełniony 4. Jeżeli gracz trafi w bombę, to wywoływana jest funkcja ‘wypisywanie tabeli po przegranej’ 5. Melodia (z wykorzystaniem SOUNDS.h) odtwarzana ekranowi przegranej

27 1. Następuje sprawdzenie całej planszy i zapisanie w zmiennych ilości pól: z minami, z flagami, z polami nieodkrytymi 2. Obliczana jest ilość flag, które można postawić (na podstawie liczby bomb i postawionych wcześniej flag) 3. Zaprezentowanie na ekranie wyników obliczeń 4. Jeżeli ilość dostępnych flag będzie wynosić 0, a wszystkie pola zostaną odkryte, zostaje wywołana funkcja ‘wygrana’

28 1. Zostaje wyświetlone logo gry 2. Tablice znakowe zawierające wyrażenia, które zostaną wypisane w punkcie 3 3. Pętla, która w sposób audio-wizualny wypisuje na ekran treść tablic znakowych

29 MINESWEEPER O GRZE

30 1. Wypisanie nagłówka na górze ekranu gry

31 1. Wypisanie dużego napisu w ASCII art. 2. Jeżeli wygrasz grę na poziomie wyższym niż Medium, zostaje odtworzona 40 sekundowa melodia (napisana za pomocą SOUNDS.h), której monstrualny kod nie zmieściłby się na jednym slajdzie(!) 3. Po tym wszystkim następuje wywołanie funkcji ‘przechowywacz’, która jest odpowiedzialna za zapis

32 MINESWEEPER WYGRANA

33 1. W tych zmiennych zapisane będą dane o aktualnej dacie i imię gracza 2. Pobór aktualnej daty i zapis jej do zmiennej ‘aktualnyczas’ 3. Definicja kilku operacji (dla wygody) 4. Napis podsumowanie 5. Ustalenie wartości kilku zmiennych na podstawie wybranego poziomu trudności 6. Obliczeni innych liczb składowych potrzebnych do określenia wyniku (jego zapis do pliku znajduje się poniżej, ale nie zmieściłby się nawet na dwóch slajdach, ze względu na dużą ilość operacji)

34 MINESWEEPER EKRAN PODSUMOWANIA I DWA ODMIENNE WYNIKI

35 1. Pobór danych z plików, zawierających zapisane informacje 2. Ładne zaprezentowanie ich na ekranie, z wyróżnieniem pierwszego miejsca

36 MINESWEEPER EKRAN ZAPISU I WIDOCZNE POTEM HALL OF FAME

37


Pobierz ppt "Projekt edukacyjny: Termin realizacji: 09.2014 – 01.2015 Zespół projektowy: Dominik Grzybowski Michał Kozłowski."

Podobne prezentacje


Reklamy Google