-
Notifications
You must be signed in to change notification settings - Fork 0
/
robots.cpp
89 lines (69 loc) · 1.68 KB
/
robots.cpp
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
79
80
81
82
83
84
85
86
87
88
89
//
// Created by Athena on 13.12.2022.
//
#include "robots.h"
using namespace std;
Robot::Robot(int id, int X, int Y) {
ID = id;
coordX = X;
coordY = Y;
}
int Robot::getCoordX() const {
return coordX;
}
int Robot::getCoordY() const {
return coordY;
}
int Robot::getID() const {
return ID;
}
void Robot::death(const int killerID){
coordX = 0;
coordY = 0;
dead = true;
killer = killerID;
}
bool Robot::isDead() const {
return dead;
}
int Robot::getKiller() const{
return killer;
}
enum class Direction {UP, DOWN, LEFT, RIGHT};
void Robot::moveRobot(int direction, int LIMITXMAX, int LIMITYMAX) {
const int LIMITXMIN = 0;
const int LIMITYMIN = 0;
if(!dead) {
switch (direction) {
case int(Direction::UP) :
if (coordY - 1 > LIMITYMIN)
coordY--;
break;
case int(Direction::DOWN) :
if (coordY + 1 < LIMITYMAX)
coordY++;
break;
case int(Direction::LEFT) :
if (coordX - 1 > LIMITXMIN)
coordX--;
break;
case int(Direction::RIGHT) :
if (coordX + 1 < LIMITXMAX)
coordX++;
break;
}
}
}
bool Robot::kill(std::vector<Robot> &vecRobot) const {
for (Robot& robot2 : vecRobot) {
if ((ID != robot2.getID()) and !(robot2.isDead())) {
if (coordX == robot2.getCoordX()) {
if (coordY == robot2.getCoordY()) {
robot2.death(ID);
return true;
}
}
}
}
return false;
}