diff --git a/CPP/miscelanious/rps/a.out b/CPP/miscelanious/rps/a.out new file mode 100755 index 0000000..14569a6 Binary files /dev/null and b/CPP/miscelanious/rps/a.out differ diff --git a/CPP/miscelanious/rps/rockpaperscissors.cpp b/CPP/miscelanious/rps/rockpaperscissors.cpp new file mode 100644 index 0000000..47b4b45 --- /dev/null +++ b/CPP/miscelanious/rps/rockpaperscissors.cpp @@ -0,0 +1,67 @@ +#include +#include + +std::vector WIN_MESSAGE = {"It's a draw!", "Player One Won!", "Player Two Won!"}; + +void print(const std::string s) +{ + std::cout << s << std::endl; +} + +int playerChoose(const bool playerNumber) +{ + int playerChoice; + if (playerNumber == 0) print("Player one choose: \n[1] Rock \n[2] Paper \n[3] Scissors"); + else print("Player one choose: \n[1] Rock \n[2] Paper \n[3] Scissors"); + std::cin >> playerChoice; + return playerChoice; +} + +void playerOneWins() +{ + print("Player One Wins!"); +} + +void playerTwoWins() +{ + print("Player Two Wins!"); +} + +void draw() +{ + print("It's a draw!"); +} + +int whoWon(const int playerOneChoice, const int playerTwoChoice) +{ + if( (playerOneChoice == 1 && playerTwoChoice == 3) || (playerOneChoice == 2 && playerTwoChoice == 1) || (playerOneChoice == 3 && playerTwoChoice == 2)) return 1; + else if(playerOneChoice == playerTwoChoice) return 0; + else return 2; +} + +bool tests() +{ + if(whoWon(1, 1) != 0) return 0; + if(whoWon(1, 2) != 2) return 0; + if(whoWon(1, 3) != 1) return 0; + if(whoWon(2, 1) != 1) return 0; + if(whoWon(2, 2) != 0) return 0; + if(whoWon(2, 3) != 2) return 0; + if(whoWon(3, 1) != 2) return 0; + if(whoWon(3, 2) != 1) return 0; + if(whoWon(3, 3) != 0) return 0; + return 1; +} + +int main() +{ + if(!tests()) + { + print("There is an error in program logic!"); + return -1; + } + int playerOneChoice = playerChoose(0); + int playerTwoChoice = playerChoose(1); + std::cout << WIN_MESSAGE[whoWon(playerOneChoice, playerTwoChoice)] << std::endl; + return 0; +}