一个字谜游戏的娱乐

Recreation of a wordpuzzle game

我正在尝试编写一个字谜游戏,这是我卡住的代码片段,我觉得我已经尝试了一切。

答案是可在拼图中找到的单词及其坐标和方向的列表。此处提供的答案是用于测试目的的片段。似乎发生的是程序会找到一个词并说“这是有效的”,但同时又说“这不是一个词”,我不知道如何通过这个。

该程序会在每一轮之后打印可用的答案以供测试。

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")

在考虑了评论中的讨论并做了一些我自己的更改之后,这是我想出的代码:

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

players = ["Tom", "Jerry"]

# Index of the current player in the players list
player_index = 0

# While not all answers were guessed
while len(answers) > 0:
    # Ask for a guess
    player_name = players[player_index]
    guess_raw = input(player_name + ", make a guess (x,y,direction,word): ")
    guess = guess_raw.split(",")

    # Transform the guess into a tuple of the same format as the answers
    guess_tuple = (int(guess[0]), int(guess[1]), guess[2], guess[3])

    # Check if the guess is correct
    if guess_tuple in answers:
        print("Success!")
        answers.remove(guess_tuple)
    else:
        print("Failure")

    # Go to the next player
    player_index = (player_index + 1) % len(players)

这是一个示例游戏:

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_index 恶作剧,而不是仅仅绕过玩家?因为否则,在 Tom 猜到最后一个词之后,它仍然会提示 Jerry 猜测,因为玩家的循环还没有结束。