-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathitem.cpp
More file actions
48 lines (36 loc) · 1.73 KB
/
Copy pathitem.cpp
File metadata and controls
48 lines (36 loc) · 1.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/* Version: 06.1700 */
#include "item.h"
#include "character.h"
using namespace std;
Item::Item(string aItemType, string aItemName, int price)
{
itemName = aItemName;
itemType = aItemType;
this->price = price;
}
void Item::useItem(Player &aPlayer) {}
void Item::print()
{
cout << "Invoked print() of Item. Please invoke child class's print function.";
exit(1);
}
void LuckyPotion::useItem(Player &aPlayer)
{
int type = rand() % 4;
if (type == 0) { aPlayer.sethp(potionStrength * (rand() % 2) + aPlayer.gethp()); }
else if (type == 1) { aPlayer.setatk(potionStrength * ((rand() % 2) / 5) * (rand() % 2) + aPlayer.getatk()); }
else if (type == 2) { aPlayer.setExp(potionStrength * (rand() % 5) * (rand() % 2) + aPlayer.getExp()); }
else if (type == 3) { aPlayer.addCoin(potionStrength * (rand() % 5) * (rand() % 2)); }
}
void HealthPotion::useItem(Player &aPlayer) { aPlayer.sethp(potionStrength + aPlayer.gethp()); }
void LuckyPotion::print() { cout << itemName << "|| " << "Strength: " << potionStrength << " / $ " << price; }
void HealthPotion::print() { cout << itemName << "|| " << "Strength: " << potionStrength << " / $ " << price; }
// Weapon::Weapon(int damage, int price) : Item("Weapon", "武器", price), baseATK(damage) {}
void Weapon::useItem(Player &aPlayer) { aPlayer.setatk(baseATK + aPlayer.getatk()); }
void Weapon::print() { cout << itemName << "|| " << "ATK: " << baseATK << " / $ " << price; }
void Shield::useItem(Player &aPlayer)
{
cout << "使用盾牌,保護時效內移動將不會損耗任何HP,效果將持續 " << validTime << " 秒!" << endl;
aPlayer.setShieldTime(validTime);
}
void Shield::print() { cout << itemName << "|| " << "validTime: " << validTime << " / $ " << price; }