| 
														
															@@ -1,21 +1,28 @@ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 #include "qwixx.h" 
														 | 
														
														 | 
														
															 #include "qwixx.h" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 #include "dice.h" 
														 | 
														
														 | 
														
															 #include "dice.h" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 #include "playerCard.h" 
														 | 
														
														 | 
														
															 #include "playerCard.h" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+#include <windows.h> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 class Game { 
														 | 
														
														 | 
														
															 class Game { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     public: 
														 | 
														
														 | 
														
															     public: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    std::vector<PlayerCard> players;  
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    std::vector<PlayerCard> players; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    std::vector<bool> lockOut; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     int state;  
														 | 
														
														 | 
														
															     int state;  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     Dice dice; 
														 | 
														
														 | 
														
															     Dice dice; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    void turn(PlayerCard activePlayer); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    void score(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     // rules as methods of game 
														 | 
														
														 | 
														
															     // rules as methods of game 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    bool addPlayer(std::string name);   
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    bool addPlayer(std::string name); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 }; 
														 | 
														
														 | 
														
															 }; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 Game::Game() { 
														 | 
														
														 | 
														
															 Game::Game() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    // set the state of game 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    state = NOT_STARTED; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    // set up lockOut 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    for(int i = 0; i<white1;i++){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        lockOut.push_back(false); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    // set the state of game [how to move from state to state ("game logic?")] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     // dice have been initialized with random seed 
														 | 
														
														 | 
														
															     // dice have been initialized with random seed 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 }; 
														 | 
														
														 | 
														
															 }; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 bool Game::addPlayer(std::string name){ 
														 | 
														
														 | 
														
															 bool Game::addPlayer(std::string name){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    if (NOT_STARTED == state){ 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if(NOT_STARTED == state){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         PlayerCard newplayer(name); 
														 | 
														
														 | 
														
															         PlayerCard newplayer(name); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         players.push_back(newplayer); 
														 | 
														
														 | 
														
															         players.push_back(newplayer); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         fprintf (stdout, "added: %s to the game", name); 
														 | 
														
														 | 
														
															         fprintf (stdout, "added: %s to the game", name); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -26,4 +33,59 @@ bool Game::addPlayer(std::string name){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         return false; 
														 | 
														
														 | 
														
															         return false; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-}; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+}; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+void Game::score(){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    // **CALCULATE EACH PLAYERS' SCORE** 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    std::vector<int> pointsGuide = {0,1,3,6,10,15,21,28,36,45,55,66,78}; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    // check players' card for marked boxes 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    for(int i = 0;i <players.size();i++){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        // clear each players' previous score 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        players[i].score = 0; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        // calculate penalty amount 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        players[i].score -= players[i].penaltyCount*PENALTY_VALUE; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        // check each color(row) on playerCard 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        for(int j = 0;j <white1;j++){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            int count = 0; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            // check each box in row 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            for(int k =0;k <CHECKBOXES;k++){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                if(true == players[i].rowColors[j][k]){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    count++; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            players[i].score += pointsGuide[count]; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    // **CHECK IF GAME IS DONE** 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    // check each player's card for penalties 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    for(int i = 0;i<players.size();i++){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        // check for maximum penalty to see if game is over 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        if(players[i].penaltyCount == MAX_PENALTY){state = FINISHED;}       
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    // check for lockout to see if game is over 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    int lockCount = 0; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    for(int i = 0;i<lockOut.size();i++){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        if(true == lockOut[i]){lockCount++;} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if(MAX_LOCKOUT <= lockCount){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        state = FINISHED; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+void Game::turn(PlayerCard activePlayer) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    // start all players' turns 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    for(int i = 0; i <players.size();i++){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        players[i].isTurnDone = false; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    // roll the dice 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    dice.roll(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    // check to see if all players are done with turn 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    while(true){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        bool temp = true; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        for(int i = 0; i <players.size();i++){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            temp = temp && players[i].isTurnDone; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        if(temp){break;} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        Sleep(1); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    // score the cards 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    score(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 |