Skip to content

Commit 195c37e

Browse files
committed
Merge pull request #63 from Databean/player_turn/tests
Player turn/tests
2 parents ea4937b + 8c079cd commit 195c37e

File tree

4 files changed

+221
-3
lines changed

4 files changed

+221
-3
lines changed

include/GameBoard.h

Lines changed: 3 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,8 @@ class GameBoard {
9292

9393
void endTurn();
9494
Player& getCurrentPlayer() const;
95+
bool hasWinner();
96+
Player& getWinner() const;
9597

9698
int getMaxVictoryPoints();
9799
void setMaxVictoryPoints(int maxVicPts);

src/GameBoard.cpp

Lines changed: 36 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

@@ -134,6 +136,8 @@ GameBoard::GameBoard(const std::vector<std::string>& playerNames, const std::map
134136
throw std::runtime_error("Board is invalid.");
135137
}
136138
currentTurn = 0;
139+
maxVictoryPoints = 10;
140+
winner = -1;
137141
}
138142

139143
GameDice GameBoard::getDice() {
@@ -267,7 +271,9 @@ GameBoard::GameBoard(istream& in) {
267271
throw std::runtime_error("Board is invalid.");
268272
}
269273

270-
currentTurn = 0; //have to update <<--
274+
currentTurn = 0; //have to update
275+
maxVictoryPoints = 0;
276+
winner = -1;
271277
}
272278

273279
/**
@@ -329,7 +335,10 @@ ResourceTile& GameBoard::getResourceTile(Coordinate location) const
329335
void GameBoard::endTurn()
330336
{
331337
if(getCurrentPlayer().getVictoryPoints() >= getMaxVictoryPoints())
332-
std::cout<<"GG Bitches";
338+
{
339+
//std::cout<<"GG Bitches";
340+
winner = currentTurn;
341+
}
333342

334343
currentTurn++;
335344
if(currentTurn >= getNoOfPlayers())
@@ -1093,6 +1102,31 @@ Player& GameBoard::getCurrentPlayer() const
10931102
return *players[currentTurn];
10941103
}
10951104

1105+
1106+
1107+
/**
1108+
* @return true if game has a winner, false otherwise
1109+
*/
1110+
bool GameBoard::hasWinner()
1111+
{
1112+
if(winner == -1)
1113+
return false;
1114+
return true;
1115+
}
1116+
1117+
1118+
/**
1119+
* @return reference to the winner if there is one, null otherwise
1120+
*/
1121+
Player& GameBoard::getWinner() const
1122+
{
1123+
if(winner != -1 && winner < players.size())
1124+
return *players[winner];
1125+
1126+
return *players[0];
1127+
}
1128+
1129+
10961130
/**
10971131
* @return no of players
10981132
*/

src/GameView.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,9 @@ void GameView::render() {
187187
drawCardCount(font, fontSize);
188188
drawResourceCount(font, fontSize);
189189

190+
if(model.hasWinner())
191+
renderText(font, fontSize, {.2, .4}, {.8, .6}, model.getWinner().getName() + " Wins");
192+
190193
glFlush();
191194
}
192195

tests/test_Player.cpp

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

370370

371+
//INSERT DEV CARD TESTS HERE
372+
373+
TEST(PlayerTest, 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(0,0,1,1,1);
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+
ASSERT_TRUE(validateResourceAmount(5,5,10,5,5,tp1));
391+
ASSERT_TRUE(validateResourceAmount(5,5,0,5,5,tp2));
392+
393+
}
394+
395+
396+
TEST(PlayerTest, 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(0,0,1,1,1);
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+
413+
ASSERT_TRUE(validateResourceAmount(0,0,0,1,1,tp1));
414+
ASSERT_TRUE(validateResourceAmount(1,1,0,0,0,tp2));
415+
416+
}
417+
418+
419+
420+
TEST(PlayerTest, Monopoly_card_false){
421+
GameBoard board({"test-player1", "test-player2"});
422+
423+
Player& tp1 = board.getPlayer(0);
424+
Player& tp2 = board.getPlayer(1);
425+
426+
std::unique_ptr<DevelopmentCard> test_MonopolyCard = std::unique_ptr<DevelopmentCard>(new MonopolyCard());
427+
tp1.buyCard(test_MonopolyCard);
428+
429+
tp1.addMultiple(0,0,0,1,1);
430+
tp2.addMultiple(1,1,0,0,0);
431+
432+
tp1.playMonopoly(0);
433+
434+
ASSERT_TRUE(validateResourceAmount(0,0,0,1,1,tp1));
435+
ASSERT_TRUE(validateResourceAmount(1,1,0,0,0,tp2));
436+
437+
}
438+
439+
440+
TEST(PlayerTest, Monopoly_card_false_2){
441+
GameBoard board({"test-player1", "test-player2"});
442+
443+
Player& tp1 = board.getPlayer(0);
444+
Player& tp2 = board.getPlayer(1);
445+
446+
tp1.addMultiple(0,0,0,1,1);
447+
tp2.addMultiple(1,1,0,0,0);
448+
449+
tp1.playMonopoly(0);
450+
451+
ASSERT_TRUE(validateResourceAmount(0,0,0,1,1,tp1));
452+
ASSERT_TRUE(validateResourceAmount(1,1,0,0,0,tp2));
453+
454+
}
455+
456+
457+
TEST(PlayerTest, Year_Of_Plenty_card){
458+
GameBoard board({"test-player1"});
459+
460+
Player& tp1 = board.getPlayer(0);
461+
462+
tp1.addMultiple(0,0,1,1,1);
463+
464+
std::unique_ptr<DevelopmentCard> test_YearOfPlentyCard = std::unique_ptr<DevelopmentCard>(new YearOfPlentyCard());
465+
tp1.buyCard(test_YearOfPlentyCard);
466+
467+
tp1.addMultiple(0,0,0,1,1);
468+
469+
tp1.playYearOfPlenty(2);
470+
471+
ASSERT_TRUE(validateResourceAmount(0,0,2,1,1,tp1));
472+
473+
}
474+
475+
476+
477+
TEST(PlayerTest, Year_Of_Plenty_card_false){
478+
GameBoard board({"test-player1"});
479+
480+
Player& tp1 = board.getPlayer(0);
481+
482+
std::unique_ptr<DevelopmentCard> test_YearOfPlentyCard = std::unique_ptr<DevelopmentCard>(new YearOfPlentyCard());
483+
tp1.buyCard(test_YearOfPlentyCard);
484+
485+
tp1.addMultiple(0,0,0,1,1);
486+
487+
tp1.playYearOfPlenty(2);
488+
489+
ASSERT_TRUE(validateResourceAmount(0,0,0,1,1,tp1));
490+
491+
}
492+
493+
494+
TEST(PlayerTest, Year_Of_Plenty_card_false_2){
495+
GameBoard board({"test-player1"});
496+
497+
Player& tp1 = board.getPlayer(0);
498+
499+
tp1.addMultiple(0,0,0,1,1);
500+
501+
tp1.playYearOfPlenty(2);
502+
503+
ASSERT_TRUE(validateResourceAmount(0,0,0,1,1,tp1));
504+
505+
}
506+
507+
508+
509+
//INSERT TRADING TESTS HERE
510+
511+
TEST(PlayerTest, Trade_positive){
512+
GameBoard board({"test-player1", "test-player2"});
513+
514+
Player& tp1 = board.getPlayer(0);
515+
Player& tp2 = board.getPlayer(1);
516+
517+
tp1.addMultiple(5,5,5,5,5);
518+
tp2.addMultiple(5,5,5,5,5);
519+
520+
std::array<int, 5> offer = {{2,2,0,0,0}};
521+
std::array<int, 5> demand = {{0,0,0,2,2}};
522+
523+
tp2.acceptOffer(tp1, offer, demand);
524+
525+
ASSERT_TRUE(validateResourceAmount(7,7,5,3,3,tp1));
526+
ASSERT_TRUE(validateResourceAmount(3,3,5,7,7,tp2));
527+
528+
}
529+
530+
531+
TEST(PlayerTest, Trade_negative){
532+
GameBoard board({"test-player1", "test-player2"});
533+
534+
Player& tp1 = board.getPlayer(0);
535+
Player& tp2 = board.getPlayer(1);
536+
537+
tp1.addMultiple(2,2,2,2,2);
538+
tp2.addMultiple(2,2,2,2,2);
539+
540+
std::array<int, 5> offer = {{5,5,0,0,0}};
541+
std::array<int, 5> demand = {{0,0,0,5,5}};
542+
543+
tp2.acceptOffer(tp1, offer, demand);
544+
545+
ASSERT_TRUE(validateResourceAmount(2,2,2,2,2,tp1));
546+
ASSERT_TRUE(validateResourceAmount(2,2,2,2,2,tp2));
547+
548+
}
549+

0 commit comments

Comments
 (0)