Gra Arkanoid dla dwóch graczy w j zyku Ada Krzysztof Wesoªowski, Automatyka i Robotyka rok II, grupa III

Podobne dokumenty
Lekcja 6 Programowanie - Zaawansowane

Wzorce projektowe strukturalne cz. 1

Praca Dyplomowa Magisterska

Programowanie wspóªbie»ne

Moduł. Rama 2D suplement do wersji Konstruktora 4.6

1. Wprowadzenie do C/C++

Lab. 02: Algorytm Schrage

Microsoft Management Console

INFORMATOR TECHNICZNY WONDERWARE

Konfiguracja historii plików

Android. Podstawy tworzenia aplikacji. Piotr Fulma«ski. March 4, 2015

1. Wprowadzenie do C/C++

Obsługa pakietu biurowego OFFICE

Projekt konceptualny z Baz Danych "Centralny system zarz dzania salami na AGH"

1 Klasy. 1.1 Denicja klasy. 1.2 Skªadniki klasy.

Propozycja integracji elementów ±wiata gry przy u»yciu drzew zachowa«

PERSON Kraków

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski

Lekcja 3 Banki i nowe przedmioty

Subversion - jak dziaªa

Instrukcja obsługi programu Pilot PS 5rc

Metody dowodzenia twierdze«

Wzorce projektowe kreacyjne

YapS Plan testów. Šukasz Bieniasz-Krzywiec Dariusz Leniowski Jakub Š cki 29 maja 2007

Lekcja 8 - ANIMACJA. 1 Polecenia. 2 Typy animacji. 3 Pierwsza animacja - Mrugaj ca twarz

InsERT GT Własne COM 1.0

Model obiektu w JavaScript

Lekcja 3 - BANKI I NOWE PRZEDMIOTY

Programowanie i struktury danych

MiASI. Modelowanie analityczne. Piotr Fulma«ski. 18 stycznia Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska

Tworzenie aplikacji internetowych E14

W dobie postępującej digitalizacji zasobów oraz zwiększającej się liczby dostawców i wydawców

Temat: Programowanie zdarzeniowe. Zdarzenia: delegacje, wykorzystywanie zdarze. Elementy Windows Application (WPF Windows Presentation Foundation).

Metodydowodzenia twierdzeń

MiASI. Modelowanie systemów informatycznych. Piotr Fulma«ski. 18 stycznia Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska

Automatyzacja procesu publikowania w bibliotece cyfrowej

Interpreter opisu dziaªa«quadrokoptera wtyczki. 1 Ogólny opis zadania. 2 Skªadnia nowych polece« 2.1 Polecenie Grasper

Zadania do wykonaj przed przyst!pieniem do pracy:

Bazy danych. Andrzej Łachwa, UJ, /15

INFORMATOR TECHNICZNY WONDERWARE

System Informatyczny CELAB. Przygotowanie programu do pracy - Ewidencja Czasu Pracy

Przeniesienie lekcji SITA z płyt CD na ipoda touch

Edyta Juszczyk. Akademia im. Jana Dªugosza w Cz stochowie. Lekcja 1Wst p

obsług dowolnego typu formularzy (np. formularzy ankietowych), pobieranie wzorców formularzy z serwera centralnego,

Ostatnia cena sprzeda y klienta 1.0 dodatek do Symfonia Faktura dla 1 firmy

Programowanie wspóªbie»ne

Rzut oka na zagadnienia zwi zane z projektowaniem list rozkazów

EDUKARIS - O±rodek Ksztaªcenia

Kopia zapasowa i odzyskiwanie Podręcznik użytkownika

POLITECHNIKA WROCŠAWSKA WYDZIAŠ ELEKTRONIKI PRACA DYPLOMOWA MAGISTERSKA

ROZDZIAŁ 1 Instrukcja obsługi GRAND HAND VIEW III

Wdrożenie modułu płatności eservice dla systemu Virtuemart 2.0.x

Analiza wydajno±ci serwera openldap

Instalacja. Zawartość. Wyszukiwarka. Instalacja Konfiguracja Uruchomienie i praca z raportem Metody wyszukiwania...

INSTRUKCJA WebPTB 1.0

Rozwi zywanie Ukªadów Równa«Liniowych Ax=B metod dekompozycji LU, za pomoc JAVA RMI

Spis tre±ci. Przedmowa... Cz ± I

Systemy mikroprocesorowe - projekt

Baza danych - Access. 2 Budowa bazy danych

2.1 INFORMACJE OGÓLNE O SERII NX

CYKL ZAJ POZNAJEMY POWER POINT

System do kontroli i analizy wydawanych posiłków

Podstawy modelowania w j zyku UML

Posiadane punkty lojalnościowe można również wykorzystać na opłacenie kosztów przesyłki.

Dziaª utrzymania ruchu aplikacja wspomagaj ca zarz dzanie

Zintegrowane Systemy Zarządzania Biblioteką SOWA1 i SOWA2 SKONTRUM

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Modele wielorównaniowe. Problem identykacji

2 Skªadnia polece«w pliku

Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych ul. Koszykowa 75, Warszawa

Informacje o omawianym programie. Założenia programu omawianego w przykładzie

Cyfrowe Ukªady Scalone

Lekcja 5 Programowanie - Nowicjusz

JAO - J zyki, Automaty i Obliczenia - Wykªad 1. JAO - J zyki, Automaty i Obliczenia - Wykªad 1

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

Dokumentacja użytkownika aplikacji mobilna Aplikacja Uczestnika Gry Miejskiej

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

I. Zakładanie nowego konta użytkownika.

System zarządzania bazą danych (SZBD) Proces przechodzenia od świata rzeczywistego do jego informacyjnej reprezentacji w komputerze nazywać będziemy

Podstawa programowa kształcenia ogólnego informatyki w gimnazjum

OptiMore Importer Rejestru VAT. Instrukcja obsługi programu

Zarządzanie Zasobami by CTI. Instrukcja

Instrukcja obsługi panelu operacyjnego XV100 w SZR-MAX-1SX

VinCent Office. Moduł Drukarki Fiskalnej

Analityka SAP ERP on HANA

Centralizacji Systemu. Procedury zasilania danymi systemu LAS oprogramowania do aktualizacji LMN. etap C13 pkt 5

Ukªady równa«liniowych

CitiDirect EB - Mobile

CELAB. System Informatyczny. Punkt przyjęć krok po kroku LTC 1

1.Rysowanie wałka. Dostosowanie paska narzędzi Tworzenie nowego wałka. Uniwersytet Technologiczno Przyrodniczy w Bydgoszczy

Ashampoo Rescue Disc

Instrukcja do Arkusza kosztorysowania sieci klasy NGA na obszarach wymagających wsparcia publicznego.

Krótka instrukcja obsługi ZELARIS ELEMENTS

Opera Wykorzystanie certyfikatów niekwalifikowanych w oprogramowaniu Opera wersja 1.1 UNIZETO TECHNOLOGIES SA

Arkusz zawiera informacje prawnie chronione do momentu rozpocz cia egzaminu.

Optymalizacja R dlaczego warto przesi ± si na Linuxa?

Oprogramowanie klawiatury matrycowej i alfanumerycznego wyświetlacza LCD

P tle. Rozdziaª Wst p. 4.2 P tle P tla for(...);

Transkrypt:

Gra Arkanoid dla dwóch graczy w j zyku Ada 2005. Krzysztof Wesoªowski, Automatyka i Robotyka rok II, grupa III 04 XII 2008

Wst p Cel programu Motywem przewodnim projektu byªa prosta gra komputerowa, realizuj ca prost mechanik starej gry Arkanoid. W celu podniesienia jej atrakcyjno±ci miaªa ona umo»liwia rywalizacje dwóch graczy. Dodatkowo zadbano o ciekawa wizualizacje z zastosowaniem stosunkowo nowoczesnych technik oraz o mo»liwo± walki z komputerem. Dodatkowe wymagania Program jest zaliczeniem projektu z przedmiotu Programowanie Systemów Czasu Rzeczywistego, dlatego gªównym wymaganiem byªa wielow tkowa konstrukcja programu, maj ca na celu poznanie i zaprezentowanie mo»liwo±ci j zyka natywnie wspieraj cego wielow tkowo±. Kolejnym zaªo»eniem byªo wykorzystanie mechanizmów j zyka Ada w celu stworzenia stabilnego i niezawodnego programu. Realizacja projektu Analiza problemu W trakcie rozwa»a«na temat mo»liwych struktur programu, maj cych na celu maksymalizacje zarówno wygody jego tworzenia jak i niezawodno±ci zdecydowaªem si na podzielenie programu na jak najmniejsze jednostki logiczne, w celu odseparowania niezale»nych od siebie cz ±ci, zapewnienia ich wymienialno±ci oraz przejrzysto±ci struktury. Zastosowany schemat implementacji W celu usystematyzowaniu struktury zdecydowaªem si na zastosowanie wzorca MVC, w którym nast puje bardzo czytelny podziaª odpowiedzialno±ci miedzy cz ±ciami programu, i który jest wyj tkowo wygodny do implementacji w j zyku Ada. Zbiór 2 obiektów chronionych i zadanie modeluj ce zyk realizuj Model, na który skªadaj si ustawienia graczy i stan planszy do gry. Za realizacje widoku odpowiada obiekt chroniony przechowuj cy ustawienia widoku i osobny w tek, generuj cy wizualizacje modelu z wykorzystaniem bibliotek Open GL. Ostatnia cz ± schematu czyli kontroler jest realizowana przez kolejny w tek, obsªuguj cy wej±cie i odpowiednio na nie reaguj cy. Cz ± implementacji nie mogla speªni w peªni tych zaªo»e«, na wskutek ogranicze«narzuconych przez bibliotek odpowiedzialna za wizualizacje. 1

Struktura Logiczna programu Poni»ej zamieszczam schemat obiektów, zada«i komunikacji miedzy nimi. Szczegóªy implementacji Przechowywanie danych - typy W celu przechowywania informacji o stanie gry stworzyªem znaczn ilo± typów. Te wykorzystywane przez konkretn cz ± programu czy te» bardziej zªo»one znalazªy si w odpowiednio wªa±ciwej cz ±ci programu lub w odr bnym pliku zawieraj cym opis typu i kilka funkcji na nich dziaªaj cych. Pozostaªe typy, a zwªaszcza wyspecjalizowane typy podstawowe znalazªy si w pakiecie Common_Data, odpowiedzialnym za przechowywanie danych wykorzystywanych w wi kszej cz ±ci programu. Przechowywanie danych - obiekty chronione Jak ju» wcze±niej wspomniaªem informacje o modelu s przechowywane w obiektach chronionych. Ma to na celu umo»liwienie wydajnej pracy wielu w tkom wspóªpracuj cym jednocze±nie. Drugim rozwa»anym rozwi zaniem byªo zastosowanie Zadania- Serwera Danych, pomysª ten zostaª zarzucony z powodu zysku wydajno±ci: mo»liwo± równolegªego odczytu z zadania za pomoc funkcji pozwala wykonywa wi cej operacji jednocze±nie, podczas gdy wszystkie spotka- 2

nia byªyby dla takiego serwera blokuj ce. Za dane opisuj ce bie» cy stan naszej gry odpowiadaj 3 obiekty chronione: Board_State odpowiedzialny za przechowywanie informacji na temat planszy - przechowuje wszystkie klocki, informacje o kulce i padach - odbijakach. Player_State odpowiedzialny za informacje o graczach, zdobyte punkty i kon- guracje sterowania, oraz View_State przechowuj cy dane na temat k tów i odlegªo±ci widoku od planszy. Poza nimi wyst puje jeszcze obiekt chroniony Keyboard_State przechowuj cy stan klawiatury. Przetwarzanie danych - zadania Na program skªadaj si 2 zadania gªówne, pierwszy odpowiedzialny za wizualizacj stanu gry, oraz drugie odpowiadaj ce za realizacj zyki. Poza tym wyst puj jeszcze zadania pomocnicze, odpowiedzialne za przetwarzanie wej±cia, wymuszanie od±wie»ania, logowanie informacji. Pierwsza warte rozszerzonego opisu zadanie jest elementem modelu: modykuje ono obiekt symuluj c up- ªyw czasu, realizuje ruch padów i kulki, wykrywa kolizje obiektów odpowiednio na nie reaguje. Kolejne zadanie wykonuje zap tlon procedur GlutMainLoop, która jest cz ±ci biblioteki GLUT odpowiedzialnej za wy±wietlanie graki. W trakcie inicjalizacji zadanie inicjalizuje okno, po czym wchodzi w ww zap tlon procedur. Procedura ta w trakcie dziaªania wywoªuje funkcje wcze±niej zdeniowane jako przeznaczone do obsªugi zdarze«(callback). Z kolei obsªuga zdarze«cz sto ingeruje w obiekt przechowuj cy stan klawiatury, lub te» za pomoc menu wykonuje inne zmiany. Kolejne zadanie odczytuje stan klawiatury z obiektu chronionego Keyboard_State, i na jego podstawie modykuje poªo»enie padów. Wizualizacja wyników Za wizualizacje stanu gry odpowiada zadanie Process_Graphics. Zadanie to zawiera funkcje rysuj c bie» cy stan gry na ekranie, funkcja jest wywoªywana przez zewn trzny Task wymuszaj cy przerysowanie po zadanym w ustawieniach czasu. Pakiet zawieraj cy to zadanie zawiera funkcje pomocnicze rysuj ce pojedyncze obiekty. Integracja z ±wiatem zewn trznym Pierwszy kontakt programu z otoczeniem to wczytanie pliku zaraz po uruchomieniu. Wczytywana jest domy±lna plansza któr w ka»dej chwili mo»na zmieni rozpoczynaj c now gr. Poza tym program za pomoc specjalnych procedur biblioteki GLUT pozwala sterowa za pomoc klawiatury i JOYSTICKA. W trakcie dziaªania wszystkie wydarzenie s zapisywane w pliku loguj cym uruchomienie programu, oraz zgodnie. 3

Podsumowanie Instrukcja Obsªugi Program tu» po uruchomieniu wy±wietla przykªadow plansze (numer 0), pozwala tez sterowa za pomoc kombinacji klawiszy A i D. Jest to tryb DEMO, grywalny ale sªu» cy raczej do prezentacji. W ka»dej chwili dziaªania gry mo»na u»y menu, dost pnego pod prawym klawiszem myszy. Omówi po krotce dost pne opcje: Nowa Gra: Menu pozwalaj ce rozpocz caªkowicie now gr, z listy rozwijanej nale»y wybra numer oczekiwanej planszy. Zatrzymaj: Zatrzymuje gr. Wznów: Wznawia gr. Sterowanie: Mo»na zmieni sterowania dla ka»dego z obu graczy, nale»y wybra spo±ród opcji Klawiatura A-D, Klawiatura J-L, Pad Lewo-Prawo. Dla gracza zielonego mo»na te» wybra sterowanie przez komputer. Rozmiar Okna: Domy±lnie gra wy±wietla si w oknie, mo»na dla wygody rozszerzy ja na caªy ekran. Zako«cz: Pozwala wyj± z programu, potrzebne zwªaszcza w trybie peªnego ekranu. Mo»liwo± przyszªej rozbudowy Gdyby dalsza rozbudowa miaªa by przeprowadzona, b dzie ona bardzo ªatwa, pod wzgl dem integracji z istniej cym kodem. Jako przykªad mo»e sªu»y dodana ju» po zamkni ciu przeze mnie programu obsªuga gracza komputerowego - jego dodanie sprowadzaªo si do stworzenia zadania, czytaj cego stan planszy z obiektu Board_State, oraz zapisuj cego sterowanie poprzez naci±ni cie wirtualnego przycisku na klawiaturze (obiekt Keyboard_State, metody Key_Down i Set_Key_Up). Kolejn mo»liw rozbudow jest stworzenie bardziej zªo»onego systemu zapisu plansz, tak aby mo»liwe byªo tworzenie plansz o ro»nych rozmiarach, zapisywanie w nich informacji o autorze czy tez wymaganiach. Wymagaªoby to rozbudowy metod Load_Pattern_From_File, oraz ewentualnie rozszerzenie obiektu Board_State o dodatkowe zmienne, czy te» wypisanie dodatkowych informacji w Wizualizacji. 4

Wnioski z przeprowadzonego projektu W trakcie tworzenia projektu nauczyªem si systematycznego podej±cia do projektowania zªo»onych projektów. Zdecydowanie doceniªem ªatwo± implementacji bardziej zªo»onych problemów za pomoc wielu niezale»nych zada«- procesów. Nauczyªem si te» adaptowa zaªo»enia projektowe do mo»liwo±ci wybranego sytemu/±rodowiska, oraz dostosowywa je w celu uªatwienia implementacji. Skªadnie i mo»liwo±ci j zyka Ada uªatwiªy tak implementacje, szczególnie poprzez dostarczanie struktur j zyka dedykowanych do synchronizacji dost pu do zasobów. Z kolei GLUT jako mened»er okna i system obsªuguj cy wej±cia byª wspólnym, stosunkowo sªabym ogniwem, uªatwiª jednak wiele czynno±ci, powoduj c»e stworzenie wizualizacji 3D czy obsªuga Joysticka staªy si mo»liwe. 5