用Python寫的HangMan遊戲

選自一本用Python編寫自己的電腦遊戲一書
 
 
 
  1. import random 
  2. HANGMANPICS = [''''' 
  3.    +---+ 
  4.    |     | 
  5.          | 
  6.          | 
  7.          | 
  8.          | 
  9.  ========='''''' 
  10.    +---+ 
  11.    |     | 
  12.    O     | 
  13.          | 
  14.          | 
  15.          | 
  16.  ========='''''' 
  17.    +---+ 
  18.    |     | 
  19.    O     | 
  20.    |     | 
  21.          | 
  22.          | 
  23.  ========='''''' 
  24.    +---+ 
  25.    |     | 
  26.    O     | 
  27.   /|     | 
  28.          | 
  29.          | 
  30.  ========='''''' 
  31.    +---+ 
  32.    |     | 
  33.    O     | 
  34.   /|\    | 
  35.          | 
  36.          | 
  37.  ========='''''' 
  38.    +---+ 
  39.    |     | 
  40.    O     | 
  41.   /|\    | 
  42.   /      | 
  43.          | 
  44.  ========='''''' 
  45.    +---+ 
  46.    |     | 
  47.    O     | 
  48.   /|\    | 
  49.   / \    | 
  50.          | 
  51.  ========='''
  52.  
  53.  
  54.  
  55. words = 'ant baboon badger bat bear beaver camel cat clam cobra cougar coyote crow deer dog donkey duck eagle ferret fox frog goat goose hawk lion lizard llama mole monkey moose mouse mule newt otter owl panda parrot pigeon python rabbit ram rat raven rhino salmon seal shark sheep skunk sloth snake spider tork swan tiger toad trout turkey turtle weasel whale wolf wombat zebra'.split() 
  56.  
  57. def getRandomWord(wordList): #在words字典裏隨機選出候選單詞 
  58.    wordIndex = random.randint(0,len(wordList) - 1)  
  59.    return wordList[wordIndex] #返回選定單詞 
  60.  
  61. def displayBoard         (HANGMANPICS,missedLetters,correctLetters,secretWord): 
  62.    print('\n\n* * * * * * * * * * * *',end = ''
  63.    print(HANGMANPICS[len(missedLetters)]) #猜錯幾個字母,返回第幾張圖片 
  64.    print() 
  65.  
  66.    print('Missed letters:',end=' '
  67.    for letter in missedLetters: #輸出猜錯的字母 
  68.         print(letter,end=' '
  69.  
  70.    print() 
  71.  
  72.    blanks = '_' *len(secretWord) #將所選單詞所有字母替換成"_" 
  73.  
  74.    for i in range(len(secretWord)): ########這段程序的難點 
  75.          if secretWord[i] in correctLetters: 
  76.              blanks = blanks[:i] + secretWord[i] + blanks[i+1:] #將猜出的字母替換掉"_" 
  77.  
  78.    for letter in blanks:   
  79.         print(letter ,end=' '#輸出blanks,並插入空格 
  80.    print() 
  81.  
  82. def getGuess(alreadyGuessed): #判斷用戶輸入是否合法 
  83.    while True
  84.        print('* * * * * * * * * * * *'
  85.        guess = input('Guess a letter:'
  86.        guess = guess.lower() 
  87.        if len(guess) != 1
  88.             print('Please enter a single letter.'
  89.             elif guess in alreadyGuessed: 
  90.             print('You have already guessed that letter. Choose again.'
  91.             elif guess not in 'abcdefghijklmnopqrstuvwxyz'
  92.             print('Please enter a LETTER.'
  93.        else
  94.             return guess #返回用戶輸入的字母 
  95.  
  96.  
  97. def playAgain(): #判斷是否繼續遊戲 
  98.    print() 
  99.    return input('Do you want to play again?(yea or no):').lower().startswith('y'# lower(): #輸入的字符串轉變成小寫;  
  100.     
  101.  
  102.  
  103. print(' == H A N G M A N =='
  104. missedLetters = '' 
  105. correctLetters = '' 
  106.  
  107. secretWord = getRandomWord(words) 
  108. gameIsDone = False 
  109.  
  110. while True
  111.    displayBoard(HANGMANPICS,missedLetters,correctLetters,secretWord) # 調用displayBoard函數,並傳遞相應的值 
  112.    guess = getGuess(missedLetters + correctLetters) #調用getGuess函數,並傳遞用戶猜過的字母(missedLetters + correctLetters) 
  113.  
  114.    if guess in secretWord: 
  115.         correctLetters = correctLetters + guess #如果所猜的字母在隨機單詞內,correctLetters收錄該字母 
  116.         foundAllLetters = True #假定字母全部猜出 
  117.         for i in range(len(secretWord)):   
  118.               if secretWord[i] not in correctLetters: #如果單詞內有字母沒被correctLetters收錄,foundAllLetters爲假,並跳出循環 
  119.                    foundAllLetters = False 
  120.                     break   
  121.         if foundAllLetters == True#如果字母全部猜出,gameIsDone 爲真 
  122.                print('Yes! The secret word is "' + secretWord + '"! You have won!'
  123.                gameIsDone = True 
  124.    else
  125.         missedLetters = missedLetters + guess #如果所猜的字母不在隨機單詞內,missedLetters收錄該字母 
  126.  
  127.    if len(missedLetters) == len(HANGMANPICS) - 1#如果用戶猜錯6次,遊戲結束 
  128.         displayBoard(HANGMANPICS,missedLetters,correctLetters,secretWord) 
  129.         print('You have run out of guesses!\nAfter ' +str(len(missedLetters)) + ' missed guesses and ' + str(len(correctLetters)) + ' correct guesses, the word was "' + secretWord + '"'
  130. gameIsDone = True 
  131.    if gameIsDone: #遊戲結束 
  132.        if playAgain(): #調用playAgain(),如果返回爲真,進行初始化 
  133.            missedLetters = '' 
  134.            correctLetters = '' 
  135.            gameIsDone = False 
  136.            secretWord = getRandomWord(words) 
  137.        else
  138.           break 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章