我正在为类(class)制作一个简单的刽子手游戏。当前的程序会执行绘图的每一步,即使用户得到了正确的答案。
import turtle
import random
import sys
while True:
list = ['report', 'beach', 'mayor', 'score', 'overeat', 'load', 'battery', 'social', 'honor', 'risk']
turns = 10
guesses = ''
err = 0
usedw = random.choice(list)
wn = turtle.Screen()
draw = turtle.Turtle()
length = len(usedw)
print("Welcome to hangman your word is", length, "letters long.")
while turns > 0:
guess = input("Choose a character: ")
guesses += guess;
lengthr = 0
for char in usedw:
if char in guesses:
print (char,)
lengthr += 1;
else:
err += 1;
if err == 1:
draw.goto(0,0)
draw.down()
draw.goto(200,0)
elif err == 2:
draw.up()
draw.goto(0,0)
draw.down()
draw.goto(0,200)
elif err == 3:
draw.up()
draw.goto(0,200)
draw.down()
draw.goto(100,200)
elif err == 4:
draw.up()
draw.goto(100,200)
draw.down()
draw.goto(100,150)
elif err == 5:
draw.up()
draw.goto(100,100)
draw.down()
draw.circle(25)
elif err == 6:
draw.up()
draw.goto(100,100)
draw.down()
draw.goto(100,50)
elif err == 7:
draw.up()
draw.goto(75,90)
draw.down()
draw.goto(125,90)
elif err == 8:
draw.up()
draw.goto(100,50)
draw.down()
draw.goto(75,35)
elif err == 9:
draw.up()
draw.goto(100,50)
draw.down()
draw.goto(125,35)
print("You loose.")
break
if lengthr == length:
print ("You won!")
break
cont = input("Would you like to continue (y/n) ")
if cont == 'y':
print("Alright!")
else:
print("Thanks for playing!")
break
sys.exit()
最佳答案
问题 是在你的判断逻辑中:
for char in usedw:
if char in guesses:
print (char,)
lengthr += 1;
else:
err += 1;
if err == 1:
...
for 遍历单词的字符。例如,如果单词是“overeat”,则每次猜测都会执行此循环七次。即使玩家猜对了“e”,您也会指控他/她猜错了字母“ovrat”,并抽出了五个男孩部件。
<小时/>修复
首先,您必须确定最近猜到的字母是否在单词任何地方中:
if guess in usedw:
print (char,)
lengthr += 1;
else:
err += 1;
if err == 1:
...
还有其他问题和改进,但这应该会让您前进。
关于python - 为什么其他的不能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46738697/