Skip to content

Commit db8c462

Browse files
parallelsparallels
authored andcommitted
Committer: Alex>
On branch board_data_struct modified: ../Makefile modified: ../include/GameBoard.h modified: ../include/GamePiece.h modified: GameBoard.cpp modified: GamePiece.cpp new file: board_layout.txt
1 parent b3d6e9b commit db8c462

File tree

6 files changed

+151
-13
lines changed

6 files changed

+151
-13
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ EXECUTABLE := warsofcatan
77
ALLFILES := $(wildcard $(SRC_HOME)/*) $(wildcard $(INCL_HOME)/*)
88
export CXX := g++
99
export LD := g++
10-
export CXXFLAGS := -g -I$(INCL_HOME) -std=gnu++11
10+
export CXXFLAGS := -g -I$(INCL_HOME) -std=c++0x
1111
export LDFLAGS := -lSDL2 -lGL -lGLU
1212

1313
.PHONY: all

include/GameBoard.h

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,29 @@
99
#include "Util.h"
1010
#include "GamePiece.h"
1111

12+
13+
14+
enum resourceType { WHEAT, SHEEP, STONE, BRICK, WOOD, DESERT };
15+
1216
class GameBoard {
1317
private:
14-
std::map<Coordinate, std::unique_ptr<GamePiece>> pieces;
18+
std::map<Coordinate, std::unique_ptr<GamePiece>> corners;
19+
std::map<Coordinate, std::unique_ptr<GamePiece>> resources;
1520
std::vector<std::unique_ptr<const Road>> roads;
1621
public:
1722
GameBoard();
1823
GameBoard(GameBoard&) = delete;
1924
~GameBoard();
2025
GameBoard& operator=(GameBoard&) = delete;
26+
std::vector<GamePiece> GetNeighbors(Coordinate location);
27+
28+
void PlaceSettlement(Coordinate location, Player& Owner);
29+
30+
void init_resources();
2131
};
2232

33+
34+
35+
36+
2337
#endif

include/GamePiece.h

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,30 +10,40 @@ class GamePiece {
1010
private:
1111
GameBoard& board;
1212
public:
13-
GamePiece(GameBoard& board);
13+
GamePiece(GameBoard& board, Coordinate location);
1414
GamePiece(GamePiece&) = delete;
1515
virtual ~GamePiece();
16-
virtual GamePiece& operator=(GamePiece&) = delete;
16+
Coordinate location;
17+
//virtual GamePiece& operator=(GamePiece&) = delete;
1718
};
1819

1920
class ResourceTile : public GamePiece {
2021
private:
2122

2223
public:
2324
ResourceTile(GameBoard& board);
25+
ResourceTile(GameBoard& board, Coordinate location, int resource, int value);
2426
ResourceTile(ResourceTile&) = delete;
27+
28+
//dispense resource cards to owning players
29+
void Payout();
30+
31+
int resource;
32+
int value;
33+
2534
virtual ~ResourceTile();
26-
virtual ResourceTile& operator=(ResourceTile&) = delete;
35+
//virtual ResourceTile& operator=(ResourceTile&) = delete;
2736
};
2837

2938
class Settlement : public GamePiece {
3039
private:
3140
Player& owner;
3241
public:
33-
Settlement(GameBoard& board, Player& owner);
42+
Settlement(GameBoard& board, Coordinate location, Player& owner);
3443
Settlement(Settlement&) = delete;
3544
virtual ~Settlement();
36-
virtual Settlement& operator=(Settlement&) = delete;
45+
bool city;
46+
//virtual Settlement& operator=(Settlement&) = delete;
3747
};
3848

3949
class Road {
@@ -46,7 +56,7 @@ class Road {
4656
Road(GameBoard& board, Player& owner, Coordinate start, Coordinate end);
4757
Road(Road&);
4858
~Road();
49-
Road& operator=(Road&) = delete;
59+
//Road& operator=(Road&) = delete;
5060
};
5161

5262
#endif

src/GameBoard.cpp

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,75 @@
11
#include "GameBoard.h"
22

3+
#define ADD_RESOURCE(x, y, res, val) (resources[Coordinate(x,y)] = \
4+
std::unique_ptr<GamePiece>(new ResourceTile(*this, Coordinate(x,y), res, val)))
5+
#define DUMMY_BOARD //define to instantiate dummy board for debugging
6+
37
GameBoard::GameBoard() {
4-
8+
9+
init_resources();
10+
11+
512
}
613

714
GameBoard::~GameBoard() {
815

16+
}
17+
/*
18+
std::vector<GamePiece> GameBoard::GetNeighbors(Coordinate location){
19+
std::vector<GamePiece> v;
20+
for (int i = -1; i < 1; i++)
21+
{
22+
Settlement* sett = dynamic_cast<Settlement*>(&(corners[Coordinate(location.first + i, location.second)]));
23+
if (sett != 0)
24+
{
25+
v.insert(sett)
26+
}
27+
Settlement sett = dynamic_cast<Settlement*>(corners[Coordinate(location.first + i, location.second - i)]);
28+
if (sett != 0)
29+
{
30+
v.insert(sett) }
31+
Settlement sett = dynamic_cast<Settlement*>(corners[Coordinate(location.first, location.second - i)]);
32+
if (sett != 0)
33+
{
34+
v.insert(sett)
35+
}
36+
}
37+
}
38+
39+
&/
40+
41+
/* initialize board with a set of resources. Right now, just creates a static tile arrangement to test
42+
URL: http://images.fanpop.com/images/image_uploads/Differents-Boards-settlers-of-catan-521934_1157_768.jpg*/
43+
44+
void GameBoard::init_resources()
45+
{
46+
47+
48+
#ifdef DUMMY_BOARD
49+
ADD_RESOURCE(0, 1, BRICK, 2);
50+
ADD_RESOURCE(-2, 2, SHEEP, 5);
51+
ADD_RESOURCE(2, 0, WOOD, 6);
52+
ADD_RESOURCE(-3, 3, DESERT, 0);
53+
ADD_RESOURCE(-1, 3, SHEEP, 10);
54+
ADD_RESOURCE(1, 2, WHEAT, 9);
55+
ADD_RESOURCE(3, 1, WHEAT, 3);
56+
ADD_RESOURCE(-4, 6, WOOD, 8);
57+
ADD_RESOURCE(-2, 5, SHEEP, 3);
58+
ADD_RESOURCE(0, 4, STONE, 11);
59+
ADD_RESOURCE(2, 3, STONE, 4);
60+
ADD_RESOURCE(4, 2, SHEEP, 8);
61+
ADD_RESOURCE(-3, 7, BRICK, 4);
62+
ADD_RESOURCE(-1, 6, WHEAT, 6);
63+
ADD_RESOURCE(1, 5, WOOD, 5);
64+
ADD_RESOURCE(3, 4, BRICK, 10);
65+
ADD_RESOURCE(-2, 8, WOOD, 11);
66+
ADD_RESOURCE(0, 7, STONE, 12);
67+
ADD_RESOURCE(2, 6, WHEAT, 9);
68+
#endif
69+
70+
71+
}
72+
73+
void GameBoard::PlaceSettlement(Coordinate location, Player& Owner){
74+
corners[location] = std::unique_ptr<GamePiece>(new Settlement(*this, location, Owner));
975
}

src/GamePiece.cpp

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,39 @@
22

33
#include "GameBoard.h"
44

5-
GamePiece::GamePiece(GameBoard& board) : board(board) {
5+
6+
7+
GamePiece::GamePiece(GameBoard& board, Coordinate location) : board(board), location(location) {
68

79
}
810

911
GamePiece::~GamePiece() {
1012

1113
}
1214

13-
ResourceTile::ResourceTile(GameBoard& board) : GamePiece(board) {
15+
ResourceTile::ResourceTile(GameBoard& board, Coordinate location, int resource, int value) :
16+
GamePiece(board, location), resource(resource), value(value) {
1417

1518
}
1619

1720
ResourceTile::~ResourceTile() {
18-
21+
int a;
1922
}
2023

21-
Settlement::Settlement(GameBoard& board, Player& owner) : GamePiece(board), owner(owner) {
24+
25+
//pay resource cards to owners of this tile
26+
27+
/*
28+
void ResourceTile::Payout() {
29+
std::vector<GamePiece> neighbors;
30+
for (int i = 0; i < neighbors.size; i++) //someone tell me how to traverse a vector less stupidly
31+
{
32+
neighbors[i].owner.addresource(resource, 1 + neighbors[i].city)
33+
}
34+
}
35+
*/
36+
Settlement::Settlement(GameBoard& board, Coordinate location, Player& owner) :
37+
GamePiece(board, location), owner(owner), city(0) {
2238

2339
}
2440

src/board_layout.txt

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
2+
/ \
3+
| |
4+
\ /
5+
hex cell
6+
7+
8+
9+
(0,8)
10+
/ \ /.\ / \
11+
| | | | | |
12+
\ / \ / \ /
13+
/ \ / \ / \ / \
14+
| | | | | | | |
15+
\ / \ / \ / \ /
16+
/ \ / \ / \ / \ / \
17+
(-4, 6) |.| | | | | | | |.| (4,2)
18+
\ / \ / \ / \ / \ /
19+
/ \ / \ / \ / \
20+
| | | | | | | |
21+
\ / \ / \ / \ /
22+
/ \ / \ / \
23+
| | | | | |
24+
\ / \./ \ /
25+
(0,0)
26+
27+
^ 7
28+
|y /
29+
| /
30+
| /
31+
|/x
32+
coordinate axes

0 commit comments

Comments
 (0)