Mastermind游戏:bug修复



我正在编写MASTERMIND,但面临一个问题。

示例:密码=GGYR,用户输入=YGGG

它显示:正确的颜色正确的位置=1,正确的颜色错误的位置=3

这是错误的。

它应该显示:正确的颜色正确的位置=1,正确的颜色错误的位置=2

第三个"G"不应该导致"正确颜色错误位置"的添加,因为密码中只有两个"G’"。

这是我编码的:

#CHECK COLOUR ONE 
if position1 in secret :
correct_colour += 1
if position1 == secret[0]:
correct_answer += 1
correct_colour -= 1
elif position1 == secret[1]:
if position1 == position2 :
correct_colour -= 1
elif position1 == secret[2]:
if position1 == position3 :
correct_colour -= 1
elif position1 == secret[3] :
if position1 == position4 :
correct_colour -= 1

#CHECK COLOUR TWO
if position2 in secret :
correct_colour += 1
if position2 == secret[1]:
correct_answer += 1
correct_colour -= 1
elif position2 == secret[0]:
if position2 == position1 :
correct_colour -= 1
elif position2 == secret[2]:
if position2 == position3 :
correct_colour -= 1
elif position2 == secret[3] :
if position2 == position4 :
correct_colour -= 1
#CHECK COLOUR THREE
if position3 in secret :
correct_colour += 1
if position3 == secret[2]:
correct_answer += 1
correct_colour -= 1
elif position3 == secret[0]:
if position3 == position1 :
correct_colour -= 1
elif position3 == secret[1]:
if position3 == position2 :
correct_colour -= 1
elif position3 == secret[3] :
if position3 == position4 :
correct_colour -= 1

#CHECK COLOUR FOUR
if position4 in secret :
correct_colour += 1
if position4 == secret[3]:
correct_answer += 1
correct_colour -= 1
elif position4 == secret[0]:
if position4 == position1 :
correct_colour -= 1
elif position4 == secret[1]:
if position4 == position2 :
correct_colour -= 1
elif position4 == secret[2] :
if position4 == position3 :
correct_colour -= 1

有什么我应该添加/删除/编辑的吗?

请帮我:(已经被困了好几天。

另一种用python编写代码的较短方法:

secret = "GGYR"
entry = "YGGG"
trueposition = list(map(lambda x, y: x==y, secret, entry))
truecolor = list(map(lambda x, y:  (x in secret) and (x!=y), secret, entry))
print(trueposition.count(True))
print(truecolor.count(True))

但这也输出了1个正确,3个错误你能查一下游戏规则吗?

在";Y_GG":Y放错地方了,G放错了,第二个G也放错了?还是应该忽略它?

最新更新