Skip to content

Commit dd2d307

Browse files
author
ankit21
committed
added tests, victory screen
1 parent cb45f80 commit dd2d307

File tree

4 files changed

+153
-3
lines changed

4 files changed

+153
-3
lines changed

include/GameBoard.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ class GameBoard {
4343
Coordinate robber;
4444

4545
int currentTurn;
46-
4746
int maxVictoryPoints;
47+
int winner;
4848

4949
void addResource(int x, int y, resourceType res, int val);
5050
bool checkRolls(int* rolls);
@@ -92,6 +92,7 @@ class GameBoard {
9292

9393
void endTurn();
9494
Player& getCurrentPlayer() const;
95+
Player& getWinner() const;
9596

9697
int getMaxVictoryPoints();
9798
void setMaxVictoryPoints(int maxVicPts);

src/GameBoard.cpp

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ GameBoard::GameBoard(const vector<std::string>& playerNames) {
4040
}
4141

4242
currentTurn = 0;
43+
maxVictoryPoints = 10;
44+
winner = -1;
4345

4446
std::srand(std::time(0));
4547

@@ -126,6 +128,8 @@ GameBoard::GameBoard(const std::vector<std::string>& playerNames, const std::map
126128
throw std::runtime_error("Board is invalid.");
127129
}
128130
currentTurn = 0;
131+
maxVictoryPoints = 10;
132+
winner = -1;
129133
}
130134

131135
GameDice GameBoard::getDice() {
@@ -259,7 +263,9 @@ GameBoard::GameBoard(istream& in) {
259263
throw std::runtime_error("Board is invalid.");
260264
}
261265

262-
currentTurn = 0; //have to update <<--
266+
currentTurn = 0; //have to update
267+
maxVictoryPoints = 0;
268+
winner = -1;
263269
}
264270

265271
/**
@@ -321,7 +327,10 @@ ResourceTile& GameBoard::getResourceTile(Coordinate location) const
321327
void GameBoard::endTurn()
322328
{
323329
if(getCurrentPlayer().getVictoryPoints() >= getMaxVictoryPoints())
324-
std::cout<<"GG Bitches";
330+
{
331+
//std::cout<<"GG Bitches";
332+
winner = currentTurn;
333+
}
325334

326335
currentTurn++;
327336
if(currentTurn >= getNoOfPlayers())
@@ -1048,6 +1057,19 @@ Player& GameBoard::getCurrentPlayer() const
10481057
return *players[currentTurn];
10491058
}
10501059

1060+
1061+
/**
1062+
* @return reference to the winner if there is one, null otherwise
1063+
*/
1064+
Player& GameBoard::getWinner() const
1065+
{
1066+
if(winner != -1 && winner < players.size())
1067+
return *players[winner];
1068+
1069+
return nullptr;
1070+
}
1071+
1072+
10511073
/**
10521074
* @return no of players
10531075
*/

src/GameView.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,9 @@ void GameView::render() {
163163
drawCardCount(font, fontSize);
164164
drawResourceCount(font, fontSize);
165165

166+
if(model.getWinner != nullptr)
167+
renderText(font, fontSize, {.2, .4}, {.8, .6}, model.getWinner().getName() + " Wins");
168+
166169
glFlush();
167170
}
168171

tests/test_Player.cpp

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,3 +368,127 @@ TEST(PlayerTest, UpdateVictoryPoints_all){
368368
}
369369

370370

371+
//INSERT DEV CARD TESTS HERE
372+
373+
TEST(Monopoly_card_1){
374+
GameBoard board({"test-player1", "test-player2"});
375+
376+
Player& tp1 = board.getPlayer(0);
377+
Player& tp2 = board.getPlayer(1);
378+
379+
tp1.addMultiple(1,1,1,0,0);
380+
381+
std::unique_ptr<DevelopmentCard> test_MonopolyCard = std::unique_ptr<DevelopmentCard>(new MonopolyCard());
382+
tp1.buyCard(test_MonopolyCard);
383+
384+
385+
tp1.addMultiple(5,5,5,5,5);
386+
tp2.addMultiple(5,5,5,5,5);
387+
388+
tp1.playMonopoly(2);
389+
390+
CHECK(validateResourceAmount(5,5,10,5,5,tp1));
391+
CHECK(validateResourceAmount(5,5,0,5,5,tp2));
392+
393+
}
394+
395+
396+
TEST(Monopoly_card_2){
397+
GameBoard board({"test-player1", "test-player2"});
398+
399+
Player& tp1 = board.getPlayer(0);
400+
Player& tp2 = board.getPlayer(1);
401+
402+
tp1.addMultiple(1,1,1,0,0);
403+
404+
std::unique_ptr<DevelopmentCard> test_MonopolyCard = std::unique_ptr<DevelopmentCard>(new MonopolyCard());
405+
tp1.buyCard(test_MonopolyCard);
406+
407+
tp1.addMultiple(0,0,0,1,1);
408+
tp2.addMultiple(1,1,0,0,0);
409+
410+
tp1.playMonopoly(2);
411+
412+
CHECK(validateResourceAmount(0,0,0,1,1,tp1));
413+
CHECK(validateResourceAmount(1,1,0,0,0,tp2));
414+
415+
}
416+
417+
TEST(Monopoly_card_false){
418+
GameBoard board({"test-player1", "test-player2"});
419+
420+
Player& tp1 = board.getPlayer(0);
421+
Player& tp2 = board.getPlayer(1);
422+
423+
tp1.addMultiple(0,0,0,1,1);
424+
tp2.addMultiple(1,1,0,0,0);
425+
426+
tp1.playMonopoly(0);
427+
428+
CHECK(validateResourceAmount(0,0,0,1,1,tp1));
429+
CHECK(validateResourceAmount(1,1,0,0,0,tp2));
430+
431+
}
432+
433+
434+
TEST(Year_Of_Plenty_card){
435+
GameBoard board({"test-player1"});
436+
437+
Player& tp1 = board.getPlayer(0);
438+
439+
tp1.addMultiple(1,1,1,0,0);
440+
441+
std::unique_ptr<DevelopmentCard> test_YearOfPlentyCard = std::unique_ptr<DevelopmentCard>(new YearOfPlentyCard());
442+
tp1.buyCard(test_YearOfPlentyCard);
443+
444+
tp1.addMultiple(0,0,0,1,1);
445+
446+
tp1.playYearOfPlenty(2);
447+
448+
CHECK(validateResourceAmount(0,0,2,1,1,tp1));
449+
450+
}
451+
452+
453+
454+
//INSERT TRADING TESTS HERE
455+
456+
TEST(Trade_positive){
457+
GameBoard board({"test-player1", "test-player2"});
458+
459+
Player& tp1 = board.getPlayer(0);
460+
Player& tp2 = board.getPlayer(1);
461+
462+
tp1.addMultiple(5,5,5,5,5);
463+
tp2.addMultiple(5,5,5,5,5);
464+
465+
std::array<int, 5> offer = {{2,2,0,0,0}};
466+
std::array<int, 5> demand = {{0,0,0,2,2}};
467+
468+
tp2.acceptOffer(tp1, offer, demand);
469+
470+
CHECK(validateResourceAmount(3,3,5,7,7,tp1));
471+
CHECK(validateResourceAmount(7,7,5,3,3,tp2));
472+
473+
}
474+
475+
476+
TEST(Trade_negative){
477+
GameBoard board({"test-player1", "test-player2"});
478+
479+
Player& tp1 = board.getPlayer(0);
480+
Player& tp2 = board.getPlayer(1);
481+
482+
tp1.addMultiple(2,2,2,2,2);
483+
tp2.addMultiple(2,2,2,2,2);
484+
485+
std::array<int, 5> offer = {{5,5,0,0,0}};
486+
std::array<int, 5> demand = {{0,0,0,5,5}};
487+
488+
tp2.acceptOffer(tp1, offer, demand);
489+
490+
CHECK(validateResourceAmount(2,2,2,2,2,tp1));
491+
CHECK(validateResourceAmount(2,2,2,2,2,tp2));
492+
493+
}
494+

0 commit comments

Comments
 (0)