简单的基于文本的Python字谜游戏
我正在用Python做一个简单的文字版猜单词游戏(也叫“吊死鬼”)。我已经有了一个大致的程序,但遇到了两个小问题:
为什么欢迎信息会打印两次?
当用户连续两次输入一个不在单词里的字母时,第二次的时候,
"不对,再试一次"
的提示没有显示,当前的单词也没有显示。第一次输入错误字母时是正常的,为什么第二次就不行了呢?
from random import randrange
class HangmanApp:
def __init__(self, interface):
self.infile = open("hangman.txt", "r")
self.interface = textInterface()
for line in self.infile:
self.wordlist = line.split()
self.secretword = self.wordlist[randrange(len(self.wordlist))]
self.letter_list = list(self.secretword)
#tests the user's guess
def guess(self):
self.new_list = ["_"]*len(self.secretword)
#keep loop going as long as there are letters in the list
while self.letter_list != ["_"]*len(self.letter_list):
self.guess = self.interface.guess()
if self.guess in self.letter_list:
while self.guess in self.letter_list:
i = self.letter_list.index(self.guess)
#replace that letter from the list with "_"
self.letter_list[self.letter_list.index(self.guess)] = "_"
#add the chosen letter to a new list for display
self.new_list[i] = self.guess
#print list with letter added
self.interface.correct(self.new_list)
else:
self.interface.incorrect(self.new_list)
self.guess = self.interface.guess()
class textInterface:
def __init__(self):
print("Welcome to Hangman!")
def guess(self):
guess = input("Guess a letter! ")
return guess
def display (self, word):
string = ' '.join(word)
print(string)
def incorrect(self, word):
print("Nope, try again")
self.display(word)
def correct(self, word):
print("Correct")
self.display(word)
def main():
inter = textInterface()
app = HangmanApp(inter)
app.guess()
1 个回答
0
欢迎信息打印了两次,因为你创建了两个 textInterface
的实例:一个是在 main()
函数里,另一个是在 HangmanApp.__init__()
里。我想你应该是想这样做:
self.interface = interface
而不是
self.interface = textInterface()
在 HangmanApp.guess()
函数里,当你收到一个错误的猜测(也就是进入了 else:
这个部分)时,你有一个多余的 guess
提示,这个提示是不必要的——它没有经过你的检查代码。我觉得这可能是导致它第二次不工作的原因。