Skip to content

Latest commit

 

History

History
123 lines (78 loc) · 2.98 KB

File metadata and controls

123 lines (78 loc) · 2.98 KB

Programowanie obiektowe

Projekt SHM

Coders School

Projekt grupowy

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

Kontynuujemy i rozwijamy dotychczasową aplikację 🙂


Organizacja prac

  • Jak wyglądało wasze daily?
  • Czy Code Review nie jest zaniedbane?
  • Czy współpraca idzie gładko?
  • Zróbcie sobie retrospektywę :)

Punktacja

  • zadania 1, 2, 3 - 5 punktów
  • zadania 4, 5, 6 - 8 punktów
  • 15 punktów za dostarczenie wszystkich 6 zadań przed 18.07.2020 (niedziela) do 23:59
  • brak punktów bonusowych za dostarczenie tylko części zadań w terminie
  • 6 punktów za pracę w grupie dla każdej osoby z grupy

Zadanie 1

Napisz klasę Store, która będzie umożliwiała dokonywanie zakupów. Wykorzystaj poniższy enum i funkcje.

enum class Response {done, lack_of_money, lack_of_cargo, lack_of_space};

Response buy(Cargo* cargo, size_t amount, Player* player);
Response sell(Cargo* cargo, size_t amount, Player* player);

Zadanie 2

W klasach Alcohol, Fruit, Item dopisz brakujące metody oraz ich implementacje.

// override from Cargo
size_t getPrice() const override;
std::string getName() const override { return name_; }
size_t getAmount() const override { return amount_; }
size_t getBasePrice() const override { return base_price_; }
Cargo& operator+=(size_t amount) override;
Cargo& operator-=(size_t amount) override;
bool operator==(Cargo& cargo) const override;

Zadanie 3

Dopisz do klasy Ship, Cargo oraz Store metodę nextDay()

  • Klasa Ship: Metoda powinna odejmować po 1 sztuce monety za każdego członka załogi.
  • Klasa Cargo: Metoda powinna powodować psucie się towarów.
  • Klasa Store: Metoda powinna zmieniać ilość towaru w sklepach.

Zadanie 4 (dla ambitnych)

Spróbuj napisać klasę Time, która będzie odpowiadać za zarządzanie czasem w grze.

Klasa ta powinna informować inne klasy, takie jak Cargo, Ship, Store o upłynięciu każdego dnia.

Poczytaj czym jest wzorzec projektowy Observer.


Zadanie 5 (dla ambitnych)

Napisz zaprzyjaźniony operator wypisywania do strumienia

friend std::ostream& operator<<(std::ostream& out, const Store& store);

Ma on w przystępny sposób wypisywać towar, jaki znajduje się w danym sklepie.


Zadanie 6 (dla ambitnych)

Napisz klasę Game, która zarządzać będzie całą rozgrywką.

Dodaj jej jedną metodę publiczną startGame().

Finalnie plik main powinien wyglądać tak:

#include "Game.hpp"

constexpr size_t start_money = 1'000;
constexpr size_t game_days = 100;
constexpr size_t final_goal = 2'000;

int main() {
    Game game(start_money, game_days, final_goal);
    game.startGame();

    return 0;
}