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.
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.
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.
Podczas prac na bieżąco aktualizujcie zadania. Każdego dnia o stałej porze synchronizujecie się i mówicie jakie są problemy.
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.
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).
- 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
W klasie Cargo
napisz operator porównania (operator==
), który będzie sprawdzał, czy towary są takie same.
Do klasy Cargo
dopisz gettery oraz odpowiedni konstruktor, który wypełni wszystkie pola tej klasy.
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.
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.
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.
W klasie Map
napisz funkcję
Island* getIsland(const Island::Coordinates& coordinate)
Powinna ona przeszukać std::vector<Island>
i zwrócić szukaną wyspę.
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
W klasie Player
napisz prywatną funkcję, która obliczać będzie availableSpace_
na podstawie aktualnej ilości towaru na statku.