UW/Programowanie obiektowe
Archive
Spis treści |
[edytuj] Informacje podstawowe
- Smalltalk
http://www.bitwisemag.com/copy/other/download/download_dolphin_smalltalk.html - Przydatne informacje
http://marcin.org/Smalltalk/ - Strona wykładowcy
http://www.mimuw.edu.pl/~janusz/dydaktyka/2005-2006/info_po/info_po.html - Kolokwia z poprzednich lat: 22.01.2001
[edytuj] Kolokwia z poprzednich lat
Uwaga! Zadania o dokumentach i raportach nie są z kolokwium, tylko z egzaminu. Ponadto zadanie o raportach miało jeszcze drugą stronę z przykładem ilustrującym zadanie - wiem bo sam je pisałem.
[edytuj] Laboratorium 2007/2008
[edytuj] Program zaliczeniowy
[edytuj] Wstęp
Przedmiotem zadania jest stworzenie pewnej gry, czy też raczej “gropodobnej symulacji”, którą tym niemniej dla uproszczenia będziemy nazywać Grą.
[edytuj] Plansza i pola
Gra rozgrywa się na dwuwymiarowej planszy (siatce kwadratowych pól). Istnieją różne typy pól, reprezentujące typy terenu świata gry, np. trawa, piach, drzewo, ziemia, woda itp. Na polu może znajdować się dowolna kolekcja obiektów, a także gracz. W niektórych sytuacjach interesować nas będą także krawędzie między polami - na krawędzi może się znajdować np. płot lub ściana.
Gracz porusza się w czterech kierunkach: do góry, na dół, w prawo lub w lewo. Gracz nie może przechodzić przez ściany i płoty - jeśli na krawędzi między polem, na którym stoi gracz, i polem, na które gracz chce przejść, znajduje się płot lub ściana, to gracz nie może wykonać ruchu. Gracz nie może chodzić po wodzie. Jeśli pole, na które gracz chce wejść, jest polem typu woda, to taki ruch jest niedozwolony.
[edytuj] Obiekty
W Grze istnieje wiele różnych rodzajów obiektów, mają one jednak pewne cechy wspólne:
- Każdy obiekt posiada masę (dodatnia liczba rzeczywista) i jakość (liczba z przedziału (0,100)).
- Pewne obiekty (np piasek, woda) są podzielne - jeśli mamy 3.14159kg piasku i zużyjemy 0.1kg, to pozostaje nam nadal 3.04159kg; inne są niepodzielne i możemy zużyć je tylko w całości.
- Niektóre obiekty mogą być pojemnikami - można w nich przechowywać inne obiekty. Pojemnik ma ustaloną pojemność.
- Jakość przedmiotu maleje z użyciem, gdy dojdzie do 0, przedmiot jest całkowicie zużyty i znika.
- Jakość przedmiotu maleje też z czasem - patrz dział “Upływ czasu”
- Jakość przedmiotu wpływa na skuteczność użycia danego przedmiotu. Im niższa jakość, tym częściej działanie za pomocą tego przedmiotu jest nieudane - patrz również dział “Akcje”
[edytuj] Akcje
- Gracz może podnosić przedmioty, które znajdują się na tym samym polu, co gracz. Łączna masa niesionych przez gracza przedmiotów nie może przekroczyć pewnej ustalonej liczby, która jest parametrem gry.
- Jeśli gracz przemieszcza się po planszy, razem z nim przemieszczają się przedmioty, które gracz niesie.
- Gracz może przy użyciu posiadanych obiektów oddziaływać na inne obiekty lub pole, i uzyskiwać różne efekty, np.
- działanie przy użyciu siekiery na pole z drzewem daje w efekcie pole trawy, na którym leży pień
- działanie przy użyciu siekiery na pień zużywa jego część i daje w wyniku belkę
- udane działanie przy użyciu piły na belkę daje w wyniku deskę i pewną ilość wiórów. Część belki zużywa się.
- nieudane działanie przy użyciu piły na belkę daje w wyniku tylko wióry.
- działanie przy pomocy skrzynki z narzędziami na pole, na którym znajduje się co najmniej 8 desek daje w efekcie fragment ściany. Deski zużywają się.
- działanie przy pomocy skrzynki z narzędziami na pole, na którym znajduje się co najmniej 5 desek daje w efekcie fragment płotu. Deski zużywają się.
- Fragment płotu lub ściany można postawić między dwoma polami.
- Fragment płotu lub ściany można zniszczyć przy pomocy siekiery. Płot lub ściana znikają, natomiast na polach sąsiadujących ze ścianą/płotem pojawiają się wióry.
- Działanie przy pomocy pojemników
- Działanie pustym pojemnikiem na pole z wodą daje w efekcie pojemnik całkowicie napełniony wodą. Działanie częściowo zapełnionym pojemnikiem na pole z wodą daje w efekcie pojemnik zapełniony wodą o niższej jakości (jakość wyraża się wzorem: wolna_przestrzen / calkowita_pojemnosc_pojemnika). Aby oddziaływać na pole z wodą gracz musi znajdować się w bezpośrednim sąsiedztwie pola z wodą.
- Działanie pustym pojemnikiem na pole z piachem daje w efekcie pojemnik całkowicie napełniony piaskiem. Oddziaływać na pole z piachem gracz może tylko znajdując się na tym polu.
- Gracz może wysypać zawartość pojemnika na pole, na którym znajduje się pojemnik. Jeśli zawartość nie jest wodą, to pozostaje na polu w takiej ilości, jaka znajdowała się w pojemniku. Jeśli zawartością pojemnika była woda, to wsiąka w podłoże i na polu pozostaje pusty pojemnik.
- W wyniku działania jeden z obiektów może być zużyty w części (jeśli jest podzielny) lub w całości.
[edytuj] Upływ czasu
Symulację można zrealizować na dwa sposoby:
- jako turową - jednostką czasu jest wtedy jeden ruch gracza. Wtedy musimy dopuścić także specjalny ruch - pas (nie rób nic), prawdopodobnie także ruch “czekaj N tur.”
- jako czasu (quasi)rzeczywistego - wtedy jednostką czasu jest np. sekunda
[edytuj] Format planszy
Opis planszy jest plikiem tekstowym. W pierwszym wierszu znajduje się informacja o wymiarach planszy: dwie liczby całkowite rozdzielone średnikiem, pierwsza oznacza szerokość (s), druga wysokość (w) planszy. W kolejnych w wierszach znajduje się opis pól planszy. W każdym wierszu znajduje się s symboli rozdzielonych średnikami. Lista symboli:
- T - pole trawa
- D - pole drzewo
- P - pole piach
- Z - pole ziemia
- W - pole woda
W następnym wierszu znajduje para liczb całkowitych. Jest to początkowe położenie gracza, pierwsza liczba oznacza kolumnę, druga oznacza wiersz. W tym samym wierszu, oddzielona spacją, znajduje się dodatnia liczba całkowita. Oznacza ona maksymalną masę, jaką może unieść gracz.
W kolejnych wierszach umieszczony jest opis położenia poszczególnych przedmiotów w formacie:
kod_przedmiotu kolumna;wiersz [informacje dodatkowe, np. pojemność pojemnika]
Format planszy może zostać dostosowany do wprowadzonych rozszerzeń (patrz niżej).
Przykładowa plansza:
10;5 W;W;W;P;T;T;T;T;T;T W;W;P;P;T;T;D;D;D;T W;W;P;T;T;T;D;D;D;T W;P;T;T;Z;Z;T;D;D;T P;T;T;Z;W;Z;T;D;T;T 6;3 35 S 5;3 P 6;2 Sk 6;3
[edytuj] Rozszerzenia
- Obowiązkowe:
- Wymyśl kilka nowych obiektów oraz akcje dla nich (tudzież więcej akcji dla opisanych obiektów)
- Opcjonalne (na lepszą ocenę)
- Symulacja czasu rzeczywistego
- Umiejętności gracza wpływające na jakość tworzonych przedmiotów i prawdopodobieństwo powodzenia akcji, rosnące z ich wykorzystywaniem (uczenie się)
- …
Kilka pomysłów do samodzielnego rozwinięcia
- Kopalnie, rudy i wytop metali, kowalstwo
- Zioła i eliksiry podnoszące sprawność gracza
- …
[edytuj] Zadanie
Napisz program umożliwiający przeprowadzenie pojedynczej Gry. Program ma na początku wczytać planszę, potem ma ją wyświetlić i umożliwić graczowi wykonywanie ruchów. Ponadto program ma umożliwiać zapisanie stanu Gry w pliku i późniejsze jego odtworzenie. Interfejs powinien być graficzny (przyciski, mysz) i sensownie wygodny.
[edytuj] Pytania
- Do czego potrzebny są piasek, woda?
- To każdy powinien sobie sam wymyślić
- Do czego wióry?
- Jak wyżej, np. przy użyciu wiórów i krzesiwa można rozpalić ognisko, które można potem podsycać drewnem w dowolnej postaci. Ognisko można wykorzystać na wiele sposobów…
- Jak korzystamy z jakości? Czy jakość maleje z użyciem czy nie?
- Jakość maleje z użyciem i upływem czasu
[edytuj] Laboratorium 2005/2006
[edytuj] Program II
Program zaliczeniowy, Zbieracz (09.01.2006):
http://www.mimuw.edu.pl/~janusz/dydaktyka/2005-2006/info_po/zadanie/zad_po_05_06_010.pdf
Gra ma wykorzystywać grafike, o której można poczytać na stronie wykładowcy oraz w MVP2.ps lub MVP2.pdf
[edytuj] Program I
Zaprojektuj hierarchie klas modelującą system zawierający Polityków i Partie spełniających poniższe warunki:
- Każdy polityk wie w jakiej jest partii.
- Każda partia ma swoją nazwę.
- Polityk może być:
- posłem (wie w jakim jest klubie),
- ministrem (wie czego),
- członek (wie jakie składki płaci).
- Każdy polityk jest człowiekiem, ma imię i nazwisko.
- Każdy człowiek umie wypisać swoje dane.
[edytuj] Literatura
- Peter Coad, Jill Nicola: Programowanie Obiektowe, Prentice Hall 1992 (README 1993)
- Peter Coad, Edward Yourdon: Analiza Obiektowa, Prentice Hall 1991 (README 1994)
- Peter Coad, Edward Yourdon: Projektowanie Obiektowe, Prentice Hall 1991 (README 1994) ?
- David Taylor: Tehchnika Obiektowa, Adison-Wesley 1990 (Helion 1994)
- James Martin, James Odell: Podstawy metod obiektowych, Prentice Hall 1994 (WNT 1998)
- Dumnicki, Kasprzyk, Kozłowski: Analiza i Projektowanie Obiektowe, Helion 1998
- Grady Booch: Object Oriented Design with Applications, 1991
- James Rumbaough, ...: Object Oriented Modelling and Design, 1991
- Ian Graham: Object Oriented Methods, 1994
- Adele Goldberg, David Robson: Smalltalk80, Addison-Wesley 1989
- Wilf LaLonde, John Pugh: Inside Smalltalk, Prentice Hall 1990
- Bjarne Stroustrup: Język C++, WNT, 1994
- Kernighan, Ritchie: Język ANSI C, WNT 1994
- Lemay, Perkins: Java 1.1, Helion 1998
- Jan Bielecki: Java po C++, 1996
- Jan Bielecki: Java od podstaw, 1996
- Gerald Massini, ...: Object Oriented Languages, Academic Press 1991
