Skip to content

Latest commit

 

History

History
122 lines (67 loc) · 4.02 KB

13-project.md

File metadata and controls

122 lines (67 loc) · 4.02 KB

Programowanie obiektowe

Projekt grupowy (Premium)

Coders School

Projekt SHM

Wykorzystajcie kod napisany podczas zajęć. Możecie też skorzystać z kodu w katalogu solutions

Projekt grupowy. Polecane grupy 5 osobowe (4-6 też są ok).

Zróbcie Fork tego repo, a cały projekt ma się znaleźć w katalogu shm na branchu shm.

Współpracujcie na jednym forku za pomocą branchy lub Pull Requestów z waszych własnych forków.


Organizacja prac

Do podziału zadań i śledzenia statusu możecie wykorzystać zakładkę Projects na GitHubie. Możecie skonfigurować go z szablonu Automated kanban with reviews.

Planning

Rozpocznijcie planowaniem, na którym utworzycie karteczki na każde zadanie w kolumnie To Do. Najlepiej przekonwertować je na Issues. Dzięki temu można przypisywać się do zadań i pisać w nich komentarze. Napiszcie też przy każdym zadaniu na ile dni pracy je szacujecie. Po zakończonym planningu wyślijcie proszę na kanale #shm linka do waszej tablicy projektowej na GitHubie.

Daily

Podczas prac na bieżąco aktualizujcie zadania. Każdego dnia o stałej porze synchronizujecie się i mówicie jakie są problemy.


Code Review

Każde dostarczenie zadania musi być poprzedzone Code Review innej osoby z zespołu (lub najlepiej kilku), aby zachować spójność i współdziałanie całości.

Zakończenie

Ten projekt będzie jeszcze dalej rozwijany. Oczekujemy, że niezależnie od liczby wykonanych zadań zrobicie Pull Request przed 28.06 (w Scrumie to zespół decyduje ile zadań uda mu się zrobić na określony termin).


Punktacja

  • Każde dostarczone zadanie to 5 punktów
  • 15 punktów za dostarczenie wszystkich 8 zadań do 28.06.2021 (poniedziałek) do 23:59
  • brak punktów bonusowych za dostarczenie tylko części zadań przed 28.06
  • 8 punktów za pracę w grupie dla każdej osoby z grupy

Zadanie 1

W klasie Cargo napisz operator porównania (operator==), który będzie sprawdzał, czy towary są takie same.


Zadanie 2

Do klasy Cargo dopisz gettery oraz odpowiedni konstruktor, który wypełni wszystkie pola tej klasy.


Zadanie 3

Napisz klasę Island, która będzie posiadała zmienną Coordinates position_ oraz odpowiedni getter.

Klasa Coordinates ma określać współrzędne na mapie. Również ją napisz. Powinna przyjmować w konstruktorze 2 parametry positionX, positionY oraz operator porównania.


Zadanie 4

Napisz klasę Map, która będzie posiadała std::vector<Island> przechowujący wszystkie wyspy na mapie, oraz zmienną Island* currentPosition_ określającą aktualną pozycję gracza na mapie.


Zadanie 5

W klasie Map utwórz konstruktor bezargumentowy, a w jego ciele utwórz 10 wysp, które przechowasz w std::vector<Island>. Do wygenerowania losowych wartości pozycji wysp na mapie skorzystaj z przykładu na cppreference. Wymyśl sposób, aby pozycje wysp się nie powielały.


Zadanie 6

W klasie Map napisz funkcję

Island* getIsland(const Island::Coordinates& coordinate)

Powinna ona przeszukać std::vector<Island> i zwrócić szukaną wyspę.


Zadanie 7

Napisz klasę Player, która posiadać będzie 3 pola:

  • std::shared_ptr<Ship> ship_ (dla chętnych, spróbuj użyć std::unique_ptr<>)
  • money_
  • availableSpace_

Dopisz także odpowiednie gettery oraz konstruktor.

Dopisz także 2 funkcje, które powinny zwracać dane ze statku:

  • size_t getSpeed() const
  • Cargo* getCargo(size_t index) const

Zadanie 8

W klasie Player napisz prywatną funkcję, która obliczać będzie availableSpace_ na podstawie aktualnej ilości towaru na statku.