-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathboard.cpp
More file actions
119 lines (108 loc) · 2.77 KB
/
board.cpp
File metadata and controls
119 lines (108 loc) · 2.77 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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
// George Fafard and Sean Cosgrove
// Lisa Dion
// CS 120
// Project 3: Battleship
#include "board.h"
#include <string>
#include <iostream>
#include <optional>
#include <memory>
#include <cmath>
#include <vector>
Board::Board(){
fSizeX = 1000;
fSizeY = 1000;
}
// Getters
int Board::getSizeY() const{
return fSizeY;
}
int Board::getSizeX() const{
return fSizeX;
}
// Setters
void Board::setSizeX(int pSize){
fSizeX = pSize;
}
void Board::setSizeY(int pSize){
fSizeY = pSize;
}
// TODO: they work, but implement to main
//void Board::addToBoard(Battleship pToAdd){
// onBoard.push_back(pToAdd);
//}
//void Board::clearBoard(){
// onBoard.clear();
//}
// calc distance function
double Board::calcDistance(Battleship pOne, Battleship pTwo) {
if (pOne.getX() && pTwo.getX() && pOne.getY() && pTwo.getY()) {
int xDifference;
int yDifference;
xDifference = (*pOne.getX() - *pTwo.getX());
yDifference = (*pOne.getY() - *pTwo.getY());
if (xDifference < 0) {
xDifference = xDifference * -1;
}
if (yDifference < 0) {
yDifference = yDifference * -1;
}
double totDistance = sqrt((xDifference * xDifference) + (yDifference * yDifference));
return totDistance;
} else {
return 0.0;
}
}
// movement functions
int Board::moveX(Battleship pMoveMe, bool pForward) {
if (pMoveMe.getX()){
int speed = pMoveMe.getSpeed();
int start = *pMoveMe.getX();
if (pForward){
if (start + speed < fSizeX) {
pMoveMe.setX(start + speed);
return (start + speed);
} else{
pMoveMe.setX(fSizeX);
return fSizeX;
}
} else{
if (start - speed > 0) {
pMoveMe.setX(start - speed);
return (start - speed);
} else{
pMoveMe.setX(0);
return 0;
}
}
} else{
cout << "cannot move, no position assigned.";
return -1;
}
}
int Board::moveY(Battleship pMoveMe, bool pForward) {
if (pMoveMe.getY()){
int speed = pMoveMe.getSpeed();
int start = *pMoveMe.getY();
if (pForward){
if (start + speed < fSizeY) {
pMoveMe.setY(start + speed);
return start + speed;
} else{
pMoveMe.setY(fSizeY);
return fSizeY;
}
} else{
if (start - speed > 0) {
pMoveMe.setY(start - speed);
return start - speed;
} else{
pMoveMe.setY(0);
return 0;
}
}
} else{
cout << "cannot move, no position assigned.";
return -1;
}
}