• Nie Znaleziono Wyników

1. Gra w życie

N/A
N/A
Protected

Academic year: 2021

Share "1. Gra w życie"

Copied!
5
0
0

Pełen tekst

(1)

Jednym z warunków zaliczenia przedmiotu Programowanie obiektowe jest zrealizowanie na ocenę jednego z poniższych projektów.

Każdy projekt należy zaimplementować wykorzystując poniższe założenia:

1. Projekt napisany zgodnie z paradygmatem programowania obiektowego (użycie takich mechanizmów jak dziedziczenie, polimorfizm, klasa abstrakcyjna, przeciążanie operatorów, itd.).

2. Implementacja projektu w języku C++ lub Java.

3. Ten sam projekt może być w jednej grupie realizowany, co najwyżej przez dwóch studentów (oczywiście wówczas każdy projekt wykonywany jest samodzielnie).

4. Projekty 14-17 to projekty z wykorzystaniem grafiki (dla zainteresowanych).

5. Termin wykonywania projektu: do ostatniego laboratorium.

6. Z każdego projektu można otrzymać ocenę bardzo dobrą. Ocenie będzie podlegało zastosowanie paradygmatu programowania obiektowego i różnych jego mechanizmów (im więcej tym lepiej) i ogólnie, podejście do problemu.

7. Projekt wykonywany jest samodzielnie!

Projekty do wyboru

1. Gra w życie

Odbywa się ona na siatce kwadratowej, gdzie każda komórka może być żywa lub martwa. Ich zachowaniem kierują następujące reguły: Komórka ożywa, gdy ma dokładnie trzech sąsiadów żywych. Komórka przeżywa, gdy ma dwóch lub trzech sąsiadów żywych (umiera, gdy ma ich mniej niż dwoje, „z samotności”, lub gdy ma ich więcej niż czworo

„z przeludnienia”).

Założenia:

Dane wejściowe podajemy w pliku, np. w formie:

o o o m m o o o o o o m o o o o m m o o o o o o o o o o o o o o

Gdzie znaki 'o' i 'm' oznaczają odpowiednio komórkę żywą i martwą. Po odczytaniu danych wejściowych program powinien generować z podanym z góry opóźnieniem, poszczególne plansze. Dane wyjściowe przedstawić również w pliku.

2. Filtr tekstowy dla plików tekstowych

1. Zliczanie znaków, słów i wierszy 2. Numerowanie wierszy pliku 3. Usuwanie pustych wierszy 4. Zamiana małych liter na duże 5. Zamiana dużych liter na małe

6. Zamiana znaków tabulacji na określoną liczbę spacji

(2)

7. Zliczanie krotności wystąpienia podanego ciągu znaków 8. Zamiana podanego ciągu znaków na inny podany ciąg

9. Usunięcie z pliku podanego ciągu znaków, wypisanie wierszy (oraz ich numerów) zawierających podany ciąg znaków

10. Wypisanie n początkowych wierszy pliku 11. Wypisanie n końcowych wierszy pliku

12. konwersja polskich znaków (dla standardów kodowania ISO-8859-2, Windows-1250, Unicode)

Program powinien tworzyć nowy plik wynikowy, pozostawiając plik wejściowy bez zmian

3. Kalkulator wierszowy

Program powinien spełniać funkcje kalkulatora obliczającego wartość wyrażenia podanego z klawiatury, jako ciąg znaków.

Założenia:

1. Cztery podstawowe działania na liczbach rzeczywistych 2. Reszta z dzielenia

3. Nawiasy wielopoziomowe

4. kilka wybranych funkcji (np. pierwiastkowanie, potęgowanie, itp. )

4. Baza danych

Program ma spełniać funkcje prostej bazy danych obsługiwanej z konsoli (menu tekstowe):

Założenia:

1. Dane przechowywane w pliku tekstowym (zapis i odczyt) 2. Przeglądanie zawartości bazy

3. Dodawanie rekordu na końcu bazy 4. Modyfikacja wybranego rekordu 5. Usuwanie wybranego rekordu

6. Wyszukiwanie rekordów według podanego kryterium 7. Sortowanie rekordów według wybranego kryterium

5. Quiz - przeprowadzanie testów

Program powinien wczytywać z pliku pytania wraz z odpowiedziami i przeprowadzać egzamin. Po przeprowadzeniu testów program powinien podsumować wyniki i na podstawie zadanych kryteriów wystawić ocenę. Program powinien mieć możliwość tworzenia i edycji plików z pytaniami i odpowiedziami.

6. Analizator liczb

Program powinien analizować liczby podawane przez użytkownika i określać jakie to liczby:

pierwsze, doskonałe, zaprzyjaźnione, Fibonacci'ego, Amstrong'a. Program powinien także umożliwiać generowanie liczb podanych rodzajów leżących w podanym przez użytkownika przedziale. Dodatkowym atutem będzie wykorzystanie wątków.

(3)

Wskazówki:

1. Liczba pierwsza, to liczba naturalna większa od 1, podzielna tylko przez 1 i przez samą siebie

2. Liczby zaprzyjaźnione, to dwie liczby naturalne, z których każda jest równa sumie podzielników właściwych drugiej liczby (np. 220 i 284, tzn. 220 jest sumą podzielników liczby 284, a 284 jest sumą podzielników liczby 220);

3. Liczby Fibonacci'ego to liczby należące do ciągu: 1, 1, 2, 3, 5, 8, 13, 21, ... (dwie pierwsze liczby to jedynki, każda następna jest sumą dwóch poprzednich);

4. Liczba Amstrong'a to liczba równa sumie sześcianów swoich cyfr, np. 153 = 1^3 + 5^3 + 3^3.

7. Tekstowa grafika

Program ma mieć możliwość tworzenia i rysowania takich obiektów graficznych jak: odcinek, okrąg, trójkąt, czworokąt, n-kąt, w trybie tekstowym (za pomocą np. symbolu *). Obiekty

"graficzne" powinny być skojarzone z odpowiednią kanwą reprezentującą układ współrzędnych, obiekty mogą być do niej dodawane, usuwane. Obiekty powinny być widoczne po narysowaniu odpowiedniej kanwy.

8. Kalendarz akademicki

1. Program ma wyświetlać kalendarz na podany rok z zaznaczeniem dnia bieżącego.

2. Dodatkowo projekt ma mieć możliwość wyświetlania wybranego przez użytkownika miesiąca

3. Dni wolne, rektorskie i święta powinny znaleźć się w osobnym pliku.

4. Należy dodać funkcjonalność określenia, na podstawie daty początku i końca semestrów i podanych dni wolnych, liczby poszczególnych dni tygodnia w danym semestrze, np. pon - 15, wto - 13, itd.

9. Gra Tetris

Tetris - popularna gra w klocki, odpowiednia kombinacja klocków (z podziałem na kolory i/lub kształty) powoduje kasowanie odpowiedniego zbioru klocków. Zastosować system punktacji, możliwość gry ze współzawodnikiem.

10. Gra Wąż

Znana gra, więc chyba nie trzeba komentować.

11. Supermarket

W każdym SuperMarkecie znajdują się produkty przeróżnych rodzajów o różnych własnościach:

- produkty spożywcze (nazwa, cena, termin ważności, skład, tabela wartości kalorycznych, ...) pieczywo (chleb, bułka paryska, bułka poznańska, chałka, ...),

(4)

nabiał (mleko, ser, jogurt, ...),

wędliny (krakowska, polędwica sopocka, ...),

- artykuły chemiczne (nazwa, cena, termin ważności, skład, środki ostrożności, ...) - AGD RTV (nazwa, cena, okres gwarancji, ...),

Zakupy przeciętnego klienta na ogół odbywają się wg następującego algorytmu:

- Klient wchodząc do sklepu, bierze koszyk (ew. wózek).

- Klient wrzuca do koszyka produkty, które chce kupić.

- Po dłuższym zastanowieniu klient ewentualnie zmienia zdanie i odkłada na półkę wcześniej wybrany produkt.

- Klient idzie do kasy na koniec kolejki i czeka na obsługę.

- Klient płaci za zakupy (kartą lub gotówką).

Wymagania dot. projektu:

a) Zaprojektować i zaimplementować:

- klasy reprezentujące produkty w sklepie,

- klasy realizujące funkcjonalność koszyka jako abstrakcyjny typ danych (np. stos, kolejka, drzewo, ...),

- klasy, których obiektem będą klienci,

- abstrakcyjny typ danych realizujący kolejkę klientów do kasy (np. kolejka :-)).

- Przed wysłaniem klienta do sklepu należy odpowiednio zaopatrzyć sklep. Tzn. wprowadzić przeróżnego rodzaju produkty (dowolna metodą np. z pliku)

- Wysłać kilku klientów do sklepu po zakupy - Ustawić klientów w kolejce przy kasie

- W odpowiedniej kolejności obsłużyć klientów.

12. Statki

Zadaniem projektu jest realizacja znanej gry w statki, w której udział bierze użytkownik i komputer. Obydwie strony generują planszę 10x10, przy czym użytkownik (student) wprowadza planszę z pliku, w postaci:

xxx...x...

...

xx...x..

...x....

...

xxx..xx...

...

xx...x..

...

..xxxx....

natomiast komputer generuje swoją planszę w sposób losowy. Dla uproszczenia rodzaje statków są następujące: x - 4 sztuki, xx - 3 sztuki, xxx - 2 sztuki, xxxx - 1 sztuka (Jeżeli ktoś ma życzenie inny kształt statków, to proszę bardzo :-)). Podczas losowania statków należy zwrócić uwagę aby statki nie stykały się ze sobą.

Gra polega na tym, że kolejno na zmianę strzelamy w statki przeciwnika podając odpowiednie współrzędne. Jeżeli trafimy, to przysługuje nam kolejny dodatkowy strzał. Przy

(5)

trafionym strzale powinna zostać podana informacja jaki typ statku trafiono. Po każdym strzale wypisać planszę obrazującą strzały oddane do przeciwnika. Gracz, który zestrzeli wszystkie statki przeciwnika, wygrywa. Pod koniec wypisywane są obydwie plansze.

Student otrzyma dodatkowy plus, jeżeli komputer nie będzie losował miejsc w których na pewno nie ma statków. Oczywiście dodatkowe elementy w projekcie mile widziane.

13. Macierze

Napisać program, który umożliwi zdefiniowanie tablicy o dowolnych wymiarach (tablice np.

mogą być odczytywane z pliku tekstowego). Dla macierzy zdefiniować: funkcje wypisywania tablicy, dodawania i odejmowania odpowiednich macierzy, mnożenia macierzy przez liczbę.

Mnożenie macierzy i obliczanie wyznacznika macierzy kwadratowej. Wyznaczanie macierzy odwrotnej do danej macierzy, zamianę macierzy do macierzy trójkątnej.

PROJEKTY GRAFICZNE (DLA ZAINTERESOWANYCH)

14. Gra – Układanka

1. Wczytanie obrazka

2. Podział obrazka na kilka części

3. Stworzenie siatki, do której będą przykładane kawałki układanki 4. Informacja o poprawności ułożenia układanki

5. Statystyka zwycięstw

15. Gra - Domino

1. Zbiór klocków domino - przemyślany layout 2. Zasady identyczne jak w grze domino 3. Możliwość gry kilku użytkowników 4. Statystyka zwycięstw

16. Edytor graficzny

Aplikacja, która posiada elementy funkcjonalności edytora MsPaint. (Im więcej możliwości tym lepsza ocena)

17. Generator wykresów funkcji

Zastosować parser do odczytywania wzorów funkcji (dozwolone jest ograniczenie dla funkcji bez asymptot). Możliwość wybory dziedziny funkcji.

Cytaty

Powiązane dokumenty

Zakład Doskonalenia Zawodowego w Lublinie Oddział w Chełmie zaprasza osoby fizyczne do składania ofert cenowych na osobiste przeprowadzenie zajęć pozalekcyjnych z

Wnioskodawca posiada doświadczenie w realizacji projektów o charakterze podobnym do operacji, którą zamierza realizować oraz posiada zasoby odpowiednie do przedmiotu

i rekreacji – preferowane będą operacje, które przyczyniają się co najmniej do rozwoju jednego z wymienionych typów infrastruktury – Kryterium weryfikowane na

Opracowanie metodyki oraz propozycji programu rozwoju gospodarczego województwa określającego rolę MSP w jego rozwoju we współdziałaniu i kooperacji z kluczowymi

15-21 % kobiet powyżej 40 roku życia zgłasza regularne występowanie bólu podczas stosunku.. Jedynie co siódma kobieta szukała pomocy u specjalisty,

5) Liderze Partnerstwa – należy przez to rozumieć Województwo Dolnośląskie, Urząd Marszałkowski, Departament Spraw Społecznych, który na realizatora Projektu

Rektora Uniwersytetu Śląskiego w Katowicach z dnia 27 września 2021 r. w sprawie realizacji projektu w ramach Programu Granty Interwencyjne NAWA pt.: "Wpływ pandemii COVID -

Wokoło wymiennikowni znajdowało się do tej pory, aż 22 miejsc postojowych, z których korzystali mieszkańcy bloku, osiedla, a w sezonie letnim również osoby przyjeżdżające