Python 字谜游戏的再创造

Python 字谜游戏的再创造,python,for-loop,if-statement,while-loop,boolean,Python,For Loop,If Statement,While Loop,Boolean,我正在尝试编写一个字谜游戏,这是我一直坚持的一段代码,我觉得我已经尝试了一切 答案是可以在拼图中找到的单词列表,以及它们的坐标和方向。这里给出的答案是一个用于测试的片段。似乎发生的是,程序会找到一个单词并说“这正在工作”,但同时说“这不是一个单词”,我不知道如何传递这个 程序在每轮测试后打印可用答案,以供测试之用 answers=[(2, 12, 'up', 'reduce'), (11, 0, 'left', 'cherimolla'), (7, 12, 'up', 'leopardbane'

我正在尝试编写一个字谜游戏,这是我一直坚持的一段代码,我觉得我已经尝试了一切

答案是可以在拼图中找到的单词列表,以及它们的坐标和方向。这里给出的答案是一个用于测试的片段。似乎发生的是,程序会找到一个单词并说“这正在工作”,但同时说“这不是一个单词”,我不知道如何传递这个

程序在每轮测试后打印可用答案,以供测试之用

answers=[(2, 12, 'up', 'reduce'), (11, 0, 'left', 'cherimolla'), (7, 12, 'up', 'leopardbane'), (9, 12, 'upleft', 'bionomical')]
guess = []
move = False

players=[]
players.append("Stephan")

 while True:
    print(answers)
    for i in players:
      guess=input("Player " + str(i) + "'s name: make a guess:")
      guesses=guess.split(",")   
      for i in range(0,len(answers)-1):
        ans = answers[i]     
        if int(ans[0]) == int(guesses[0]) and int(ans[1])==int(guesses[1]) and guesses[2] in ans[2]:
          answers.remove(ans)
          
          print("this is working")
        if (int(ans[0]) != int(guesses[0]) and int(ans[1])!=int(guesses[1]) and ans[2]!=guesses[2] and i==len(answers)-1):
          print("sorry this is not a word")

在考虑了评论中的讨论并做了一些修改后,我提出了以下代码:

答案=[
(2,12,'上升','下降'),
(11,0,'左','切里莫拉'),
(7,12,'向上','豹纹'),
(9,12,'upleft','bionomic')]
玩家=[“汤姆”、“杰瑞”]
#玩家列表中当前玩家的索引
玩家指数=0
#虽然并非所有答案都是猜测出来的
而len(答案)>0:
#猜猜看
玩家名称=玩家[玩家索引]
猜一猜=输入(玩家名称+”,猜一猜(x,y,方向,单词):)
guess=guess_原始分割(“,”)
#将猜测转换为与答案格式相同的元组
guess_tuple=(int(guess[0]),int(guess[1]),guess[2],guess[3])
#检查猜测是否正确
如果答案中有猜测元组:
打印(“成功!”)
答案。删除(猜测元组)
其他:
打印(“失败”)
#转到下一个玩家
玩家指数=(玩家指数+1)%len(玩家)
下面是一个示例游戏:

Tom, make a guess (x,y,direction,word): 2,12,up,reduce
Success!
Jerry, make a guess (x,y,direction,word): 2,12,up,reduce
Failure
Tom, make a guess (x,y,direction,word): 11,0,left,cherimolla
Success!
Jerry, make a guess (x,y,direction,word): 7,12,up,leopardbane
Success!
Tom, make a guess (x,y,direction,word): 9,12,upleft,bionomical
Success!

为什么
player\u索引
sheanings,而不是仅仅在玩家身上循环?否则,在汤姆猜到最后一个单词后,它仍然会提示杰瑞猜一猜,因为玩家之间的循环还没有结束。

你为什么提到
范围(0,len(answers)-1)
?范围(0,n)返回0到n-1。我认为您可以使用
range(0,len)
使用
else
而不是第二个
if
语句。或者,您可以将第二个
if
中的所有
替换为
s(德摩根定律:
a和b
的对立面是
不是a或不是b
,也不是
不是a和不是b
),在循环时从列表中删除是一个非常糟糕的主意。在这种情况下,这应该无关紧要(因为最多有一个答案应该与猜测相符),但一般来说,在修改列表时,请在其副本上循环。@ram I添加了-1,因为它遇到了listindex out of of的错误bounds@koorkevani谢谢我这么做了,它还是会打印对不起一个字不止一次,我只想打印一次,这就是为什么我添加了I==len(答案)-1谢谢!玩家不能猜单词,只能猜方向和坐标,然后检查列表中的单词。