当前位置: 首页 > 知识库问答 >
问题:

检查胜利者TIC TAC脚趾

燕禄
2023-03-14

我想这一定是一个简单的修复,但我仍然熟悉编码,所以偶尔我会陷入一些愚蠢的事情(会赶上的,最终哈哈)

def player_char():

    marker = ''
    player1 = ''
    player2 = ''

    # Keep asking Player 1 to choose X or O, until entry is correct:
    while marker != ('x').lower() and marker != ('o').lower():
        marker = input("\n PLAYER 1 - CHOOSE X OR O : ")

    # Assign opposite marker to Player 2
        player1 = marker.upper()
        if player1 == 'X':
            player2 = 'O'
        else:
            player2 = 'X'

    print (f"\n P1 playing with: {player1}" + f"\n P2 playing with: {player2}")
    markers = [player1, player2]
    return markers

def check_victory(board, markers):

    player1_win = False
    player2_win = False
    draw = False

    # Check if players win the game in one of the lines, columns or diagonals available
    for n in range(len(markers)):
        if board[7] == board[8] == board[9] == markers[n]:
            if n == 0:
                player1_win = True
            else:
                player2_win = True
            break

(我已经实现了所有其他可能获胜的行和列。没有将它们粘贴在这里以使问题更短,但它们都遵循上面的逻辑

当玩家放置标记时,我调用该函数,一旦满足一个获胜条件,我会打印消息:

if player1_win:
   print("\n >>> GAME FINISHED! PLAYER 1 WINS!")
if player2_win:
   print("\n >>> GAME FINISHED! PLAYER 2 WINS!")

但游戏不会中断(我猜会是,因为我在每个条件后都“Rest”)。我的IF里面会发生什么?就像我说的,猜测一定很简单,但现在卡住了。

moves = 1

while winner[0] or winner[1] or winner[2] != True:
        if moves % 2 == 1:
            display_board(game_board, free)
            print(game_board)
            p1 = (input("\n >>> ( P1 ) Enter number for your move: "))                
            board[position_p1] = markers[0]
            moves += 1
            check_victory(board, markers)

共有1个答案

越正阳
2023-03-14

内部if条件中的break将从该if条件中中断。

相反,您可以在最后再设置一个条件,检查以下任何一个条件是否为真,然后跳出for循环。player1_win=True或player2_win=True或draw=True

 类似资料:
  • 我该怎么做? 下面是我的代码:

  • 问题内容: 表名称: series_type 表格名称: 匹配项 输出: 使用League_id,start_time,radiant_name和dire_name ex的 所需 过滤器 。 输出: 我已经尝试过 使用SERIES_ID和SUM分组,但结果不同。 前任。 询问 前任。 不想要的结果〜〜_ 更新感谢 此查询为我提供了正确的结果,但是有1个问题,它给出了2列。 我需要一排 matche

  • 我在C和一般编程方面是个新手,我想知道这段代码的性能/复杂性有多好,因为它与我在SO的其他帖子中发现的不同。for循环是否使这变得不必要的复杂?

  • Tictac This is a demonstration of building a clustered, distributed, multi-player, turn-based game server written in Elixir. As designed, it plays Tic-Tac-Toe, but was designed to be extended to play

  • 请原谅长标题。StackOverflow不会接受较短的。 我试图在科特林制作一个井字游戏。到目前为止,除了对角线检查之外,一切都运行得非常好。 基本上, 函数的作用是创建一个矩阵,其中包含井字棋棋盘中的所有容器,然后检查棋盘的行,列和对角线值是否相等。如果检测到获胜者,该函数会将文本设置为“您获胜”。行和列检查工作正常,但是如果我在对角线上有3个X-s,则没有任何反应。 代码对我来说似乎很好,所以

  • 问题内容: 我不明白如何在四连冠中找到获胜方式,请告诉我应该怎么想以及如何在四连冠中找到赢家。我应该如何使用for循环来找到他们。我应该如何使用方法寻找赢家? 问题答案: 在一个简短的Google之后,会弹出以下代码:https : //codereview.stackexchange.com/questions/100917/connect- four-game-in- java 或http:/