Mastermind Game using Python
Mastermind is a classic code-breaking game that involves a player attempting to guess a secret code within a certain number of attempts. In this article, we'll explore how to implement the Mastermind game in Python using different approaches, from basic to more advanced. We'll cover the logic, code, and explanations of the concepts used in each approach.
Approach 1: Basic Implementation
In the basic implementation of the Mastermind game, the computer randomly generates a secret code, and the player has to guess the code. The computer provides feedback on each guess, indicating how many digits are correct and in the correct position (denoted as 'bulls') and how many digits are correct but in the wrong position (denoted as 'cows').
Example
Here's the basic implementation code −
import random
# Function to generate a random 4-digit code
def generate_code():
return [random.randint(0, 9) for _ in range(4)]
# Function to compare the guess with the code
def check_guess(code, guess):
bulls = sum([1 for i in range(4) if code[i] == guess[i]])
cows = sum([1 for i in range(4) if guess[i] in code and code[i] != guess[i]])
return bulls, cows
# Main game loop
def mastermind_basic():
code = generate_code()
attempts = 10
print("Welcome to Mastermind!")
print("Guess the 4-digit code. You have 10 attempts.")
while attempts > 0:
guess = list(map(int, input("Enter your guess: ").strip()))
bulls, cows = check_guess(code, guess)
print(f"Bulls: {bulls}, Cows: {cows}")
if bulls == 4:
print("Congratulations! You've cracked the code!")
break
attempts -= 1
if attempts == 0:
print(f"Game Over! The code was: {''.join(map(str, code))}")
# Run the basic game
mastermind_basic()
Output
Welcome to Mastermind! Guess the 4-digit code. You have 10 attempts. Enter your guess: 1234 Bulls: 1, Cows: 2 Enter your guess: 5678 Bulls: 0, Cows: 1 Enter your guess: 9101 Bulls: 2, Cows: 0 ... Congratulations! You've cracked the code!
Explaination
- The 'generate_code' function generates a random 4-digit code using the random module.
- The 'check_guess' function compares the player's guess with the secret code and returns the number of bulls and cows.
- The main game loop runs for 10 attempts, where the player inputs their guess, and the program provides feedback.
Approach 2: Advanced Implementation with Input Validation
In this advanced version, we add input validation to ensure the player enters a valid 4-digit number. We'll also introduce a function to check for unique digits in the code, making the game slightly more challenging.
Example
Here's the advanced implementation code −
import random
# Function to generate a random 4-digit code with unique digits
def generate_unique_code():
digits = list(range(10))
random.shuffle(digits)
return digits[:4]
# Function to validate user input
def validate_input(user_input):
return user_input.isdigit() and len(user_input) == 4
# Function to compare the guess with the code
def check_guess(code, guess):
bulls = sum([1 for i in range(4) if code[i] == guess[i]])
cows = sum([1 for i in range(4) if guess[i] in code and code[i] != guess[i]])
return bulls, cows
# Main game loop
def mastermind_advanced():
code = generate_unique_code()
attempts = 10
print("Welcome to Mastermind!")
print("Guess the 4-digit code with unique digits. You have 10 attempts.")
while attempts > 0:
guess = input("Enter your guess: ").strip()
if not validate_input(guess):
print("Invalid input! Please enter a 4-digit number.")
continue
guess = list(map(int, guess))
bulls, cows = check_guess(code, guess)
print(f"Bulls: {bulls}, Cows: {cows}")
if bulls == 4:
print("Congratulations! You've cracked the code!")
break
attempts -= 1
if attempts == 0:
print(f"Game Over! The code was: {''.join(map(str, code))}")
# Run the advanced game
mastermind_advanced()
Output
Welcome to Mastermind! Guess the 4-digit code with unique digits. You have 10 attempts. Enter your guess: 1123 Invalid input! Please enter a 4-digit number. Enter your guess: 3456 Bulls: 0, Cows: 2 Enter your guess: 7890 Bulls: 1, Cows: 1 ... Congratulations! You've cracked the code!
Explanation
- The 'generate_unique_code' function generates a 4-digit code with unique digits by shuffling a list of digits and selecting the first four.
- The 'validate_input' function checks whether the player's input is a 4-digit number.
- The game loop now includes input validation, prompting the player to re-enter their guess if it's invalid.
Conclusion
The Mastermind game is a fun and challenging way to practice Python programming. In this article, we explored two different approaches to implementing the game, from a basic version to a more advanced one with input validation and unique digits. These examples provide a solid foundation for further enhancements, such as adding a graphical user interface (GUI) or implementing AI to play the game.
python_projects_from_basic_to_advanced.htm