Rock Paper Scissors: A Classic Game in Python
Rock Paper Scissors is a simple yet challenging game that has been enjoyed by people all over the world for generations. It’s a game that requires no equipment, just two players, and a clear set of rules.
The game is easy to understand, but mastering it takes skill and strategy.
In this article, we will explore the rules of the traditional Rock Paper Scissors game and introduce the more complex and entertaining version, Rock-Paper-Scissors-Lizard-Spock.
We will then dive deeper into the programming aspect of the game and provide a step-by-step guide to creating the game in Python.
Rock Paper Scissors Game:
The traditional game of Rock Paper Scissors is played between two players.
Each player makes a move by forming their hand into the shape of either a rock, paper, or scissors. The goal is to make a move that beats the other player’s move, and based on this, the winner is declared.
Rock beats scissors, paper beats rock, and scissors beat paper. In the event that both players make the same move, it’s a tie, and the game continues until there is a winner or a draw.
The simplicity of the game means that it’s easy to learn and can be enjoyed by people of all ages.
Rock-Paper-Scissors-Lizard-Spock:
Rock-Paper-Scissors-Lizard-Spock is an extended version of the traditional game, popularized by the TV show The Big Bang Theory.
This version adds two additional moves, lizard, and Spock, to the traditional rock, paper, and scissors.
Lizard beats paper and Spock, Spock beats rock and scissors, scissors beat lizard and paper, rock beats lizard and scissors, and paper beats rock and Spock.
The added complexity of this version makes it more challenging, but also more fun and entertaining.
Creating Rock-Paper-Scissors Game in Python:
To create the Rock Paper Scissors game in Python, we need to set up some data structures and map out the moves.
A dictionary can be used to map out the moves, using numbers to represent each move. We can also create a win-lose matrix that provides the outcome based on the player’s input.
The win-lose matrix can be created using nested lists, where each cell represents the outcome of each combination of moves. The game loop can be built using a menu that offers the player a choice of moves.
The player’s input can then be compared with the computer’s move, and based on the win-lose matrix, the winner can be declared.
In conclusion, Rock Paper Scissors is a simple game that has stood the test of time.
It’s easy to learn but is also challenging and requires strategy to master. The extended version, Rock-Paper-Scissors-Lizard-Spock, offers more complexity and entertainment.
By using Python, we can create the game and make it more accessible for people to enjoy. So get your hands ready and let the games begin!
Game Instructions for Rock Paper Scissors in Python:
Playing the traditional game of Rock Paper Scissors can be easy, but it’s important to understand the rules to ensure that the game is played fairly.
Here are the instructions for playing Rock Paper Scissors in Python:
- Launch the Game:
- Input Names:
- Input Menu:
- Player’s Move:
- Computer Move:
- Win-Lose Matrix:
- Winner Declaration:
To launch the game, open the Python IDE or the command prompt if Python is installed on your device.
Players need to input their names to begin the game; this can be done using the input()
function.
Once the players’ name has been recorded, an input menu should be provided, where they can select their move using a number (1, 2, or 3) to represent rock, paper, or scissors.
Once the player has made their move, Python should display their move on the screen to inform the player.
In order for the game to be unbiased, the computer’s move should be generated randomly using a random number generator from the random library in Python.
The win-lose matrix should be set up to provide the correct outcome for each move combination.
It can be created using a nested list, with each cell representing the outcome of each combination of moves. 7.
The winner can be declared using an if-else
statement that checks the player’s move against the computer’s move based on the win-lose matrix. Once the winner is declared, Python should print the final result of the game.
Set of Instructions for Rock-Paper-Scissors-Lizard-Spock:
Playing Rock-Paper-Scissors-Lizard-Spock is more complex than the traditional game as it involves two additional moves, Lizard and Spock. Here are the instructions for playing the game in Python:
- Launch the Game:
- Input Names:
- Input Menu:
- Player’s Move:
- Computer Move:
- Win-Lose Matrix:
- Winner Declaration:
To launch the game, open the Python IDE or the command prompt if Python is installed on your device. 2.
Players need to input their names to begin the game; this can be done using the input()
function. 3.
Once the player’s name has been recorded, an input menu should be provided, where they can select their move using a number (1, 2, 3, 4, or 5) to represent rock, paper, scissors, lizard, or Spock. 4.
Once the player has made their move, Python should display their move on the screen to inform the player. 5.
To generate an unbiased computer move, a random number generator from the random library in Python should be used. 6.
To determine the winner, the win-lose matrix should be set up to provide the correct outcome for each combination of moves, and it can be created using a nested list. 7.
The winner can be declared using an if-else
statement that checks the player’s move against the computer’s move based on the win-lose matrix. Once the winner is declared, Python should print the final result of the game.
Handling Player Input:
In order to handle player input in Python, it’s important to provide them with a menu where they can select their move. This can be done using the input()
function to prompt the player to input their choice.
To make the game more interactive and engaging, Python can display the available moves as options for the player to select. These can be represented as numbers, with each number corresponding to a particular move.
Once the player has made their selection, Python can display their move on the screen to keep them informed about their move.
Managing Computer Moves:
To make the game more unbiased, the computer’s move should be generated randomly using Python’s random library.
By using the randint()
function, a number between 1 and 5 can be generated, with each number corresponding to a particular move. Python can display the computer’s move on the screen to inform the player, and this should be done before the winner declaration is made.
Deciding and Declaring the Winner:
To decide and declare the winner, a win-lose matrix needs to be created. This matrix maps out the outcome of each combination of moves, and it can be created using a nested list in Python.
Once the win-lose matrix is created, an if-else
statement can be used to check the player’s move against the computer’s move. Based on the matrix, Python can declare the winner and print out the outcome of the game.
What’s Next?
After mastering Rock Paper Scissors and Rock-Paper-Scissors-Lizard-Spock in Python, one can experiment and add more combinations or create a more complex version of the game.
You can also make the game more appealing by adding graphics and sound effects to enhance the user experience. The possibilities are endless when it comes to game development in Python!
Complete Code for Rock Paper Scissors in Python:
To build the Rock Paper Scissors game in Python, we first need to define two functions, rps()
and rpsls()
.
These functions will take care of managing the game logic and ensuring that the game is played fairly.
Function Definitions for rps()
and rpsls()
:
Here’s how the rps()
function definition looks like:
def rps(player_choice, computer_choice):
game_map = {0: 'Rock', 1: 'Paper', 2: 'Scissors'}
if player_choice == computer_choice:
return 0
elif (player_choice == 0 and computer_choice == 2) or (player_choice == 1 and computer_choice == 0) or
(player_choice == 2 and computer_choice == 1):
return 1
else:
return -1
The rps()
function takes two arguments, player_choice
, and computer_choice
.
It then maps the moves to the corresponding numbers using a dictionary. If the player’s move and computer’s move match, it returns 0 representing a tie.
If the player wins, it returns 1, and if the computer wins, it returns -1. The rpsls()
function takes the same arguments as the rps()
function and returns the outcome based on the rules of Rock-Paper-Scissors-Lizard-Spock.
Here’s how the rpsls()
function definition looks like:
def rpsls(player_choice, computer_choice):
game_map = {0: 'Rock', 1: 'Paper', 2: 'Scissors', 3: 'Lizard', 4: 'Spock'}
rpsls_table = [[0, -1, 1, 1, -1],
[1, 0, -1, -1, 1],
[-1, 1, 0, 1, -1],
[-1, 1, -1, 0, 1],
[1, -1, 1, -1, 0]]
result = rpsls_table[player_choice][computer_choice]
return result
The rpsls()
function sets up a dictionary that maps the moves to the corresponding numbers, and then uses a list of lists to create a matrix that outlines the result of each combination of moves. The function then returns the outcome based on the result matrix.
Main Function with Game Loop and Menu:
Here’s how the main function with the game loop and menu should look like:
def main():
name = input('Enter your name: ')
print(f'Hello, {name.capitalize()}! Welcome to Rock Paper Scissors!n')
game_choice = input('Which version of the game you would like to play: regular (rps) or extended (rpsls)? ')
if game_choice == 'rps':
while True:
print('n')
print('Enter your move:')
print('0: Rock')
print('1: Paper')
print('2: Scissors')
print('3: Quit')
Player_choice = int(input("Enter your choice: "))
if Player_choice == 3:
print("Your game score: ", Score)
print("Thanks for playing, Bye!!!")
break
if Player_choice >= 3 or Player_choice < 0:
print("Invalid Input! Try Again")
continue
else:
Computer_choice = randint(0, 2)
result = rps(Player_choice, Computer_choice)
if result == 0:
print(f'{game_map[Player_choice]} vs {game_map[Computer_choice]}.nIt is a tie!')
Score += 0
elif result == 1:
print(f'{game_map[Player_choice]} vs {game_map[Computer_choice]}. You won!')
Score += 1
else:
print(f'{game_map[Player_choice]} vs {game_map[Computer_choice]}.nYou lost!')
Score -= 1
return
elif game_choice == 'rpsls':
while True:
print('n')
print('Enter your move:')
print('0: Rock')
print('1: Paper')
print('2: Scissors')
print('3: Lizard')
print('4: Spock')
print('5: Quit')
Player_choice = int(input("Enter your choice: "))
if Player_choice == 5:
print("Your game score: ", Score)
print("Thanks for playing, Bye!!!")
break
if Player_choice >= 5 or Player_choice < 0:
print("Invalid Input! Try Again")
continue
else:
Computer_choice = randint(0, 4)
result = rpsls(Player_choice, Computer_choice)
if result == 0:
print(f'{game_map[Player_choice]} vs {game_map[Computer_choice]}. It is a tie!')
Score += 0
elif result == 1:
print(f'{game_map[Player_choice]} vs {game_map[Computer_choice]}.nYou won!')
Score += 1
else:
print(f'{game_map[Player_choice]} vs {game_map[Computer_choice]}. You lost!')
Score -= 1
return
if __name__ == '__main__':
main()
The main function starts by prompting the player to input their name and select the version of the game they would like to play.
If the player chooses the rps
version of the game, the game loop initiates and prints out a menu where the player can select their move.
If the player chooses the rpsls
version of the game, the game loop will initiate and display the extended menu, where the player can make their selection.
Data Structures Used in Code:
The data structures used in the code include a dictionary that maps the moves to the corresponding numbers, a list of lists that creates a matrix that outlines the result of each combination of moves, and a variable that stores the player’s name. Here’s how the data structures should be set up:
# dictionary that maps the moves to the corresponding numbers
game_map = {0: 'Rock', 1: 'Paper', 2: 'Scissors', 3: 'Lizard', 4: 'Spock'}
# list of lists that creates a matrix that outlines the result of each combination of moves
rps_table = [[0, -1, 1], [1, 0, -1], [-1, 1, 0]]
rpsls_table = [[0, -1, 1, 1, -1], [1, 0, -1, -1, 1], [-1, 1, 0, 1, -1], [-1, 1, -1, 0, 1], [1, -1, 1, -1, 0]]
# a variable that stores the player's name
name = input('Enter your name: ')
Conclusion:
In conclusion, Rock Paper Scissors is a classic game that can be easily built in Python with the help of functions and data structures.
By following the instructions carefully, we can create a functioning and entertaining game that can be enjoyed by people of all ages. Furthermore, with the inclusion of the extended version, Rock-Paper-Scissors-Lizard-Spock, we add more layers of complexity to the game, making it more entertaining and challenging.
Python’s easy-to-understand syntax and built-in random library make it an excellent language for game development. With this basic knowledge of game creation, developers can explore and expand the game by adding graphics, sound effects, and other interactive features.
The possibilities are endless, and exciting times lay ahead for the game development community. In this article, we explored the