67 lines
No EOL
2.4 KiB
Markdown
67 lines
No EOL
2.4 KiB
Markdown
## Linux compilation
|
|
|
|
> mkdir build
|
|
> cd build
|
|
> cmake -DCMAKE_BUILD_TYPE=Debug ..
|
|
> make
|
|
|
|
## Exercise 1
|
|
|
|
* Go into directory `Core` and implement a base class `PrintVisitor` which should implement `visit` method for two objects: `Ship` and `Store`
|
|
* Create `PrettyPrintVisitor` which will print cargo from `Ship` and `Sotore` (just move the implementation `printCargo`).
|
|
* Add the rest of necessary implementation for `Ship` and `Store`. Visitor should be taken as `std::unique_ptr`
|
|
* Verify in the `main.cpp` if cargo print in the same way as previously.
|
|
|
|
Example:
|
|
|
|
```
|
|
Ship
|
|
|----------------|----------------|
|
|
| NAME | AMOUNT |
|
|
|----------------|----------------|
|
|
|Rum | 300 |
|
|
|Banana | 200 |
|
|
|Banana | 150 |
|
|
|----------------|----------------|
|
|
|
|
Store
|
|
|----------------|----------------|----------------|
|
|
| NAME | AMOUNT | PRICE |
|
|
|----------------|----------------|----------------|
|
|
|Rum | 1000 | 40 |
|
|
|Banana | 1000 | 20 |
|
|
|Item | 1000 | 30 |
|
|
|----------------|----------------|----------------|
|
|
```
|
|
|
|
## Exercise 2
|
|
|
|
* Create another visitor: `BasicPrintVisitor` which should print the cargo but without special frames, just raw info.
|
|
* For `Ship` print Name and Amount
|
|
* For `Store` print Name Amount and Price
|
|
* You shouldn't modify anything in your code, just change the visitor in `main.cpp` and you should get a new output
|
|
|
|
Example:
|
|
|
|
```
|
|
Ship
|
|
Rum 300
|
|
Banana 200
|
|
Banana 150
|
|
|
|
Store
|
|
Rum 1000 40
|
|
Banana 1000 20
|
|
Item 1000 30
|
|
```
|
|
|
|
## Exercise 3
|
|
|
|
* Create CargoDamageVisitor. You don't need to create a base class, because we know that we will not extend this code,
|
|
* You should create three `operator()` one for each cargo type: Alcohol, Fruit, Item,
|
|
* For fruit, you should draw a number between 0 and 5 and subtract such an amount of cargo
|
|
* For alcohol, you should draw a number between 0 and 10 and subtract half an amount of cargo
|
|
* For item, you should draw a number between 0 and 20 and subtract one quarter of cargo
|
|
* Visitor should be taken as a template argument by Player class
|
|
* Apply visitor whenever you successfully deal damage to ship
|
|
* Check in the main class if ship lost cargo after get damaged. |