-
Notifications
You must be signed in to change notification settings - Fork 18
Expand file tree
/
Copy pathcarrier.cpp
More file actions
79 lines (69 loc) · 2.66 KB
/
carrier.cpp
File metadata and controls
79 lines (69 loc) · 2.66 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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
//============================================================================
// Name : carrier.cpp
// Author : Ak0s
//============================================================================
#include "carrier.hpp"
Carrier::Carrier(unsigned int initial_ammo, unsigned int initial_hp) {
this->store_of_ammo = initial_ammo;
this->hp = initial_hp;
}
void Carrier::add_aircraft(std::string _new_aircraft) {
if (_new_aircraft == "F16") {
aircraft* new_aircraft = new F16;
aircrafts.push_back(*new_aircraft);
}
else if (_new_aircraft == "F35") {
aircraft* new_aircraft = new F35;
aircrafts.push_back(*new_aircraft);
}
else {
std::cout << "No such aircraft type exists!" << std::endl;
}
}
void Carrier::fill() {
if (store_of_ammo != 0) {
for (unsigned int i = 0; i < aircrafts.size(); i++) {
if (aircrafts[i].get_type() == "F16") {
aircrafts[i].refill(store_of_ammo);
}
if (aircrafts[i].get_type() == "F35") {
aircrafts[i].refill(store_of_ammo);
}
// if (store_of_ammo < need_for_refill()) {
// if (aircrafts[i].get_type() == "F35") {
// aircrafts[i].refill(store_of_ammo); NEM SIKERÜLT BEFEJEZNI HOGY EDGE CASERE IS MENJEN!
}
}
else {
std::cout << "Out of ammo!";
}
}
void Carrier::fight(Carrier& enemy_carrier) {
enemy_carrier.hp -= store_of_ammo * (f35_counter()/(aircrafts.size() - f35_counter())) * 50 +
store_of_ammo * ((aircrafts.size() - f35_counter())/f35_counter()) * 30;
}
unsigned int Carrier::f35_counter() {
unsigned int f35_counter = 0;
for (unsigned int i = 0; i < aircrafts.size(); i++) {
if (aircrafts[i].get_type() == "F35") {
f35_counter++;
}
}
return f35_counter;
}
unsigned int Carrier::need_for_refill() {
return f35_counter() * 12 + (aircrafts.size() - f35_counter()) * 8;
}
std::string Carrier::get_status() {
if (hp > 0) {
std::string aircrafts_status;
for (unsigned int i = 0; i < aircrafts.size(); i++) {
aircrafts_status += "Type: " + aircrafts[i].get_type() + ", Ammo: " + std::to_string(aircrafts[i].get_ammo()) + ", Base damage: " + std::to_string(aircrafts[i].get_dmg()) + ", All damage: " + std::to_string(aircrafts[i].get_ammo() * aircrafts[i].get_dmg()) + "\n";
}
std::string carrier_status = "Aircraft count: " + std::to_string(aircrafts.size()) + ", Carrier HP: " + std::to_string(hp) + ", Ammo Storage: " + std::to_string(store_of_ammo) + ", Total damage: " + std::to_string((f35_counter() * 50 + (aircrafts.size() - f35_counter()) * 30) * store_of_ammo) + "\n";
return carrier_status + aircrafts_status;
}
else {
return "It's dead Jim! :(";
}
}