| 
					
				 | 
			
			
				@@ -163,28 +163,93 @@ void Game::receive(std::string userInput) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  *  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * ## Things we need to know ## 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * sum of both white die 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * 8 sums of each of the white die and all of the colored die 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * who is the active player for this turn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * sums of 8 dice 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * who is active player 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  *  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * ## How to do ## 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * on a given turn, sum the white die and sum each of the white die and all of the colored die 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * check to see if each players' requested move is valid 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *      does the player's requested move match the sum of the white die "satisfies all players can do white die combination" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *      if the active player, check both white die and the color die they requested for move 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *      TODO: deal with subtley of active player not being able to re-use dice 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *      record if active player took at least a white dice move, a colored die move, or both 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * if it is valid, add it to player card 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *      - does their input match the sum of the white die 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * check to see if active player requested move is valid 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *      - for the active player check white die sum if one input. if it fails then check each white die + color die sums add item to scoresheet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *      - for the active player if two inputs are passsed, check white die sum first if it passes, add to scoresheet. then check the second input with white die + colored die 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * if it is valid, add it to player card  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * if it is not valid, return an error to player 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * ## players' move  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * // this function has access to diceRoll and player input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * // is the players' input a valid move <- what does valid mean? (is it represented in die, does it follow left to right, does it follow lockout, does it fit within the confines of a move) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * // the confines of a move for non-actie player is (0 or one white die move) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * // the confines of a move for active palyer is (penalty or (one or two die moves)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * //  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-void Game::addX(int player, int color, int index) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+bool Game::isMoveRepresentedInDie(int player, CollectionOfMoves collectionOfMoves) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // is this the non-active player 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if(player != activePlayer)  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // if the move equals the sum of the two white die return true, if not return false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return (collectionOfMoves.white.index == (dice.dice[white1] + dice.dice[white2])) ?  true : false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // otherwise this is the active player 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // if one move 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(1 == collectionOfMoves.numberOfMoves) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // check sum of white die 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(collectionOfMoves.white.index != (dice.dice[white1] + dice.dice[white2])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                int c = collectionOfMoves.color.color; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // if any white die plus the colored die equals the move 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(collectionOfMoves.color.index == (dice.dice[white1] + dice.dice[c]) || collectionOfMoves.color.index == (dice.dice[white2] + dice.dice[c])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // colored die plus either white die was not a move 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                else {return false;} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // otherwise the white sum die was a move 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else {return true;} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // if two move  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else if(2 == collectionOfMoves.numberOfMoves) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // check first input with white die sum 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(collectionOfMoves.white.index != (dice.dice[white1] + dice.dice[white2])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // white die sum was not a move 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    int c = collectionOfMoves.color.color; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // check to see if color die + either white die sum equals a move 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(collectionOfMoves.color.index == (dice.dice[white1] + dice.dice[c]) || collectionOfMoves.color.index == (dice.dice[white2] + dice.dice[c])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                else {return false;} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }            
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }            
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void Game::lockOutRule(int player, int color, int index) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /* TODO: check that index and color match rolled die 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    * ## Rule Check ## 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    * if index is not the sum of two dice throw an error 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    * if index is a sum AND color is correct allow it 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // player can add an x to olok in last column if there are 5 x 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ // player can add an x to olok in last column if there are 5 x 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if(lastColumnIndex == index) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if(LOCKOUT_QUALIFIER >= players[player].cumulativeOlok.getXCount(color)) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -193,10 +258,18 @@ void Game::addX(int player, int color, int index) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         else{fprintf(stdout, "Player[%d] %s tried to check off column 12 without minimum X\n", player, players[player].savedName);} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // player must add an x to olok from left to right 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void Game::leftToRightRule(int player, int color, int index) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     // player must add an x to olok from left to right 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if(players[player].cumulativeOlok.getLastIndex(color) > index) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         fprintf(stdout,"Player[%d] %s not following left to right rule X\n", player, players[player].savedName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     else{players[player].currentTurnOlok.addX(color, index);} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void Game::addX(int player, int color, int index) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |