Python 猜字遊戲



劊子手是一個猜詞遊戲,玩家嘗試透過建議字母來猜出一個單詞。對於每個錯誤的猜測,都會畫出劊子手的一部分。當玩家正確猜出單詞或劊子手完成時,遊戲結束。

建立劊子手遊戲的 Python 程式碼

讓我們從劊子手遊戲的基本結構開始:

import random

def get_word(word_list):

   # Function to randomly select a word from the list word = random.choice(word_list)
   return word.upper()

def display_hangman(tries):

   # Function to display the hangman based on the number of tries 
   stages = [ '''

      ------
      |	  |

      |

      |

      |
 
      |

      =========''',

      '''

      ------

      |	   |

      |	   O

      |

      |

      |

      =========''',

      '''

      --------

      |	   |

      |	   O

      |	   |

      |

      |

      =========''',

      '''

      -------

      |	   |

      |	   O
 
      |	  /|

      |

      |

      =========''',

      '''

      -------

      |	   |

      |	   O

      |	  /|\\

      |

      |

      =========''',

      '''

      --------

      |	   |

      |	   O

      |	  /|\\

      |	   |

      |

      =========''',

      '''

      ------
 
      |	  |

      |	  O

      |	 /|\\

      |	  |

      |	  /

      =========''',

      '''

      --------

      |	   |

      |	   O

      |	  /|\\

      |	   |

      |	  / \\

      ========='''

   ]

   return stages[tries]

def play_hangman():

   word_list = ["PYTHON", "HANGMAN", "GUESS", "CODE"]

   word = get_word(word_list)

   word_letters = set(word) # Letters in the word alphabet = set('ABCDEFGHIJKLMNOPǪRSTUVWXYZ')
 
   used_letters = set() # What user has guessed


lives = 6


# Getting user input

while len(word_letters) > 0 and lives > 0: 
   print(display_hangman(lives))
   word_list_display = [letter if letter in used_letters else '_' for letter in word]
   print('Current word: ', ' '.join(word_list_display))
   user_letter = input('Guess a letter: ').upper()

   if len(user_letter) != 1:

      print("\nPlease enter a single letter.") 
   elif user_letter in alphabet - used_letters:
      used_letters.add(user_letter) 
      if user_letter in word_letters:
         word_letters.remove(user_letter) 
      else:
         lives -= 1

         print('\nLetter is not in the word.') 
   elif user_letter in used_letters:
      print('\nYou have already guessed that letter.')
 
   else:

      print('\nInvalid character.')


# Game over 
if lives == 0:
   print(display_hangman(lives)) 
   print('You died. The word was', word)
else:

   print('You guessed the word!')

play_hangman() 

輸出

|	|
|	O
|	/|\
|	|
|	/
=========
Current word: _ _ _ _
Guess a letter: a


Letter is not in the word.

輸出

|	|
|	O
|	/|\
|	|
|
=========
Current word: _ _ _ _
Guess a letter: s


Letter is not in the word.




|	|
|	O
|	/|\
|
|
=========
Current word: _ _ _ _
Guess a letter: a


You have already guessed that letter.




|	|
 
|	O
|	/|\
|
|
=========
Current word: _ _ _ _
Guess a letter: e




|	|
|	O
|	/|\
|
|
=========
Current word: _ _ _ E Guess a letter: n

Letter is not in the word.




|	|
|	O
|	/|
|
|
 
=========
Current word: _ _ _ E Guess a letter: w

Letter is not in the word.




|	|
|	O
|	|
|
|
=========
Current word: _ _ _ E Guess a letter: d




|	|
|	O
|	|
|
|
=========
Current word: _ _ D E Guess a letter: m
 
Letter is not in the word.




|	|
|	O
|
|
|
=========
Current word: _ _ D E Guess a letter: p

Letter is not in the word.




|	|
|
|
|
|
=========
You died. The word was CODE

程式碼解釋

  • **匯入 random** 匯入 random 模組用於選擇隨機單詞
  • **get_word 函式** 從提供的單詞列表中選擇一個隨機單詞,並以小寫形式返回它
  • **display_hangman 函式** 根據錯誤猜測的次數顯示劊子手
  • play_hangman 函式
    • 建立一個單詞列表,選擇一個隨機單詞,並初始化單詞字母、字母表和已用字母的集合。
    • 將生命值設定為
    • 遊戲迴圈持續到所有字母都被猜到或生命值達到 0。
    • 顯示劊子手、當前單詞並提示使用者輸入。
    • 檢查猜測的字母是正確、錯誤還是已使用。
    • 相應地更新生命值並顯示訊息。

遊戲結束後,顯示最終結果。

python_projects_from_basic_to_advanced.htm
廣告