我正在尝试按照教程编写一个简单的“ Hangman风格的游戏”,它运行正常,如果您正确猜到了字母,则在第一个错误的猜测上,程序将显示第二个ASCII图形而不是第一个。当您猜出第二个不正确的字母时,会出现第三个图形,但它像这样“失真”:
对不起,z不是我们想要的。
+---------+
| |
| O
| -|-
| / |
================
最后您做出第三个错误的猜测,我得到了错误:
Traceback (most recent call last):
File "./HangMan.py", line 118, in <module>
start()
File "./HangMan.py", line 44, in start
while game():
File "./HangMan.py", line 79, in game
hangedman(letters_wrong)
File "./HangMan.py", line 39, in hangedman
print graphic[hangman]
IndexError: list index out of range
任何建议将不胜感激。
对不起,我的代码没有评论,我对此很陌生。
这里是我的代码:
from random import *
player_score = 0
computer_score = 0
def hangedman(hangman):
graphic = [
"""
+---------+
|
|
|
|
|
================
""",
"""
+---------+
| |
| O
|
|
|
================
""",
"""
+---------+
| |
| O
| -|-
| / \
|
================
"""]
print graphic[hangman]
return
def start():
print "Lets play a game of Hangman"
while game():
pass
scores()
def game():
dictionary = ["box","ted","sad","bad"]
word = choice(dictionary)
word_length = len(word)
clue = word_length * ["_"]
tries = 3
letters_tried = ""
guesses = 0
letters_right = 0
letters_wrong = 0
global computer_score, player_score
while (letters_wrong != tries) and ("".join(clue) != word):
letter = guess_letter()
if len(letter)==1 and letter.isalpha():
if letters_tried.find(letter) !=-1:
print "you've already picked", letter
else:
letters_tried = letters_tried = letter
first_index = word.find(letter)
if first_index == -1:
letters_wrong +=1
print "Sorry,",letter,"isn't what we're looking for."
else:
print "Congratulations,",letter,"is correct."
for i in range(word_length):
if letter == word[i]:
clue[i] = letter
else:
print "Choose another"
hangedman(letters_wrong)
print " ".join(clue)
print "Guesses: ", letters_tried
if letters_wrong == tries:
print "Game Over"
print "The word was",word
computer_score += 1
break
if "".join(clue) == word:
print "you win!"
print "the word was", word
player_score += 1
break
return play_again()
def guess_letter():
print
letter = raw_input("Take a Guess at our mystery word:")
letter.strip()
letter.lower()
print
return letter
def play_again():
answer = raw_input("Would you like to play again? y/n: ")
if answer in ("y"):
return answer
else:
print "Thank you see you next time"
def scores():
global player_score, computer_score
print "Hight Scores"
print "Player: ", player_score
print "Computer: ", computer_score
if __name__ == '__main__':
start()