Thanks to visit codestin.com
Credit goes to www.tutorialspoint.com

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
Advertisements