Python 如何在游戏结束后在我的tic tac toe程序中添加自动重启?

Python 如何在游戏结束后在我的tic tac toe程序中添加自动重启?,python,Python,因此,我最近开始学习如何使用Python编程,我尝试创建一个tic-tac-toe游戏,用最少的视频帮助来测试我的常识,只是我遇到了一个路障……我已经设置好了一切,但我正在尝试添加一些代码,在游戏结束(胜利或平局)后从头开始重新启动程序。我该怎么做呢 这是我目前的代码。请随意提出一些其他建议,因为它们确实会帮助像我这样的初学者 board = ["-", "-", "-", "-", "-

因此,我最近开始学习如何使用Python编程,我尝试创建一个tic-tac-toe游戏,用最少的视频帮助来测试我的常识,只是我遇到了一个路障……我已经设置好了一切,但我正在尝试添加一些代码,在游戏结束(胜利或平局)后从头开始重新启动程序。我该怎么做呢

这是我目前的代码。请随意提出一些其他建议,因为它们确实会帮助像我这样的初学者

board = ["-", "-", "-",
         "-", "-", "-",
         "-", "-", "-"]


def playing_board():
    print(board[0] + " | " + board[1] + " | " + board[2])
    print(board[3] + " | " + board[4] + " | " + board[5])
    print(board[6] + " | " + board[7] + " | " + board[8])



def game_time():
    position = "X"
    count = 0
    while True:
        playing_board()
        selection = int(input(position + ", choose your position 1-9: ")) - 1
        if (board[selection]) == "-":
            board[selection] = position
            count += 1
            if count == 9:
                print("Tie!")
        else:
            print("Sorry that position is already taken. Choose again")
            continue
        if board[0] == board[1] == board[2] == position or \
            board[0] == board[4] == board[8] == position or \
            board[3] == board[4] == board[5] == position or \
            board[6] == board[7] == board[8] == position or \
            board[6] == board[4] == board[2] == position or \
            board[0] == board[3] == board[6] == position or \
            board[1] == board[4] == board[7] == position or \
            board[2] == board[5] == board[8] == position:
            playing_board()
            print(position + " wins!")
        if position == "X":
            position = "O"
        else:
            position = "X"
        

def new_game():

    while True:
        user_input = input("Would you like to play another game? (Y/N): ")
        if user_input.upper() == "Y":
            continue
        elif user_input.upper() == "N":
            print("Okay, cya!")
            quit()
        else:
            print("I didn't quit get that...")



game_time()
你可以做:

while True:
    board = ['-', '-', '-',
             '-', '-', '-',
             '-', '-', '-']
    game_time()
但是,这不会使您创建的
new\u game()
函数生效。要使用它,您需要将
continue
更改为
game\u time()
并使用

new_game()
最后

其他一些建议:

  • 未使用功能
    playing_board_2()
    ,与
    playing_board()
    相同。你可以把它去掉
  • 未使用函数
    win\u check()
    。你可以把它去掉
  • 变量
    count
    position
    game\u time()中全局定义。因为它们不是全局使用的,所以您可以删除全局定义并将定义保留在
    game\u time()
  • game\u time()
    中打印
    ing
    “Tie!”
    /
    “X赢!”
    后,需要添加
    return
    语句退出函数,否则
    while True
    将永远不会结束
  • 你可以做:

    while True:
        board = ['-', '-', '-',
                 '-', '-', '-',
                 '-', '-', '-']
        game_time()
    
    但是,这不会使您创建的
    new\u game()
    函数生效。要使用它,您需要将
    continue
    更改为
    game\u time()
    并使用

    new_game()
    
    最后

    其他一些建议:

  • 未使用功能
    playing_board_2()
    ,与
    playing_board()
    相同。你可以把它去掉
  • 未使用函数
    win\u check()
    。你可以把它去掉
  • 变量
    count
    position
    game\u time()中全局定义。因为它们不是全局使用的,所以您可以删除全局定义并将定义保留在
    game\u time()
  • game\u time()
    中打印
    ing
    “Tie!”
    /
    “X赢!”
    后,需要添加
    return
    语句退出函数,否则
    while True
    将永远不会结束

  • 全局
    board
    变量是一个相当大的障碍。您有多种选择:

  • 了解类,然后将
    board
    变量作为实例变量,并将大多数函数转换为成员函数。然后在用户每次开始新游戏时创建一个新游戏对象。这是更干净的方法,但你需要学习一些东西
  • game\u time()
    函数包装在
    中,如果为True:
    则每次重置棋盘。这是最简单的修复方法,但不是很干净

  • 全局
    board
    变量是一个相当大的障碍。您有多种选择:

  • 了解类,然后将
    board
    变量作为实例变量,并将大多数函数转换为成员函数。然后在用户每次开始新游戏时创建一个新游戏对象。这是更干净的方法,但你需要学习一些东西
  • game\u time()
    函数包装在
    中,如果为True:
    则每次重置棋盘。这是最简单的修复方法,但不是很干净

  • 我修复了代码的主要思想。检查是否获胜?在
    循环中,当
    循环时:

    board = ["-", "-", "-",
             "-", "-", "-",
             "-", "-", "-"]
    
    
    def playing_board():
        print(board[0] + " | " + board[1] + " | " + board[2])
        print(board[3] + " | " + board[4] + " | " + board[5])
        print(board[6] + " | " + board[7] + " | " + board[8])
    
    
    def win_check(pos):
        if board[0] == board[1] == board[2] == pos or \
            board[0] == board[4] == board[8] == pos or \
            board[3] == board[4] == board[5] == pos or \
            board[6] == board[7] == board[8] == pos or \
            board[6] == board[4] == board[2] == pos or \
            board[0] == board[3] == board[6] == pos or \
            board[1] == board[4] == board[7] == pos or \
            board[2] == board[5] == board[8] == pos:
                return True
        else :
            return False
    
    
    count = 0
    position = "X"
    def game_time():
        position = "X"
        count = 0
        while True:
            playing_board()
            if position == 'X' and count != 0:
                if win_check('O'):
                    print('O', 'wins')
                    break       
            elif position == 'O' and count != 0:
                if win_check('X'):
                    print('X', 'wins')
                    break
            selection = int(input(position + ", choose your position 1-9: ")) - 1
            if (board[selection]) == "-":
                board[selection] = position
                count += 1
                if count == 9:
                    print("Tie!")
            else:
                print("Sorry that position is already taken. Choose again")
            if position == "X":
                position = "O"
            else:
                position = "X"
    
    
    game_time()
    

    我修复了代码的主要思想。检查是否获胜?在
    循环中,当
    循环时:

    board = ["-", "-", "-",
             "-", "-", "-",
             "-", "-", "-"]
    
    
    def playing_board():
        print(board[0] + " | " + board[1] + " | " + board[2])
        print(board[3] + " | " + board[4] + " | " + board[5])
        print(board[6] + " | " + board[7] + " | " + board[8])
    
    
    def win_check(pos):
        if board[0] == board[1] == board[2] == pos or \
            board[0] == board[4] == board[8] == pos or \
            board[3] == board[4] == board[5] == pos or \
            board[6] == board[7] == board[8] == pos or \
            board[6] == board[4] == board[2] == pos or \
            board[0] == board[3] == board[6] == pos or \
            board[1] == board[4] == board[7] == pos or \
            board[2] == board[5] == board[8] == pos:
                return True
        else :
            return False
    
    
    count = 0
    position = "X"
    def game_time():
        position = "X"
        count = 0
        while True:
            playing_board()
            if position == 'X' and count != 0:
                if win_check('O'):
                    print('O', 'wins')
                    break       
            elif position == 'O' and count != 0:
                if win_check('X'):
                    print('X', 'wins')
                    break
            selection = int(input(position + ", choose your position 1-9: ")) - 1
            if (board[selection]) == "-":
                board[selection] = position
                count += 1
                if count == 9:
                    print("Tie!")
            else:
                print("Sorry that position is already taken. Choose again")
            if position == "X":
                position = "O"
            else:
                position = "X"
    
    
    game_time()
    

    如果用户输入,为什么不在
    之后移动
    游戏时间()
    。上限()==“Y”:
    ?如果用户输入,为什么不在
    之后移动
    游戏时间()
    。上限()==“Y”:
    ?谢谢,非常感谢!是的,当我第一次复制并粘贴代码到这里时,我完全忘记了删除我没有使用的函数,因为我最初试图利用它们来找到解决方案。谢谢,我很感激!是的,当我第一次复制并粘贴代码到这里时,我完全忘记了删除我没有使用的函数,因为我最初试图利用它们来找到解决方案。