首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我如何实现我的代码在我的Tic tac toe游戏中重启?

我如何实现我的代码在我的Tic tac toe游戏中重启?
EN

Stack Overflow用户
提问于 2019-06-09 23:49:05
回答 1查看 394关注 0票数 0

我需要在比赛后重新启动我的tic tac toe游戏,声明胜利者,我也得到了一个重新启动的选项,但我的代码是为什么没有重新启动。我希望我的代码是包含从第一次游戏结束时,我已经使用了函数,但它只显示游戏的结果,当我要求它得到重新启动。

代码语言:javascript
复制
#Making a Game board 

game_is_on = True
current_player = 'x'
winner = None

def restart():
    print("\n")
    print ("***********Let's play our game**********")
    board=[ '-','-','-',
            '-','-','-',
            '-','-','-']





    def display_board():

        print('\n')
        print (board[0]+' | '+board[1]+' | '+board[2]+' | '+'   | 1 | 2 | 3 |')
        print (board[3]+' | '+board[4]+' | '+board[5]+' | '+'   | 4 | 5 | 6 |')
        print (board[6]+' | '+board[7]+' | '+board[8]+' | '+'   | 7 | 8 | 9 |')
        print('\n')
    display_board()


    def play_game():
        while game_is_on:
            handle_turn(current_player)
            cheak_if_game_over()
            flip_player()



        if winner == 'x' or winner == 'o':
            print(winner + ' won the match' + ' try next time ' + current_player)
            '''restart = 'yes'
            while True:

                if restart == 'yes':
                    restart = input("Do you want to play again:")
                    continue
                elif restart == 'no':
                    print("player don't want to play")
                    break'''

        else:
            print("Match Draw")





    def handle_turn(player):
        print(current_player+"'s turn..")
        postion=input("Enter a number form 1-9:")
        valid=False
        while not valid:
            while postion not in ['1','2','3','4','5','6','7','8','9']:
                postion=input("Please insert a number from 1-9:")
            postion=int(postion)-1
            if board[postion] == '-':
                valid = True
            else:
                print("You have already insert this number...")
            board[postion]=player

            display_board()


    def cheak_if_game_over():
        cheak_for_winner()
        cheak_if_tie()


    def cheak_for_winner():
        global winner
        row_winner = cheak_row()
        column_winner = cheak_column()
        diagonal_winner = cheak_diagonal()


        if row_winner:
            winner = row_winner
        elif column_winner:
            winner = column_winner
        elif diagonal_winner:
            winner = diagonal_winner
        else:
            winner=None

    def cheak_row():
        global game_is_on
        row_1 = board[0] == board[1] == board[2] != '-'
        row_2 = board[3] == board[4] == board[5] != '-'
        row_3 = board[6] == board[7] == board[8] != '-'

        if row_1 or row_2 or row_3:
            game_is_on =False
        if row_1:
            return board[0]
        elif row_2:
            return board[3]
        elif row_3:
            return board[6]
        return


    def cheak_column():
        global game_is_on
        column_1 = board[0] == board[3] == board[6] != '-'
        column_2 = board[1] == board[4] == board[7] != '-'
        column_3 = board[2] == board[5] == board[8] != '-'

        if column_1 or column_2 or column_3:
            game_is_on = False
            if column_1:
                return board[0]
            elif column_2:
                return board[1]
            elif column_3:
                return board[2]
            return

    def cheak_diagonal():
            global game_is_on
            diagonal_1 = board[0] == board[4] == board[8] != '-'
            diagonal_2 = board[6] == board[4] == board[2] != '-'

            if diagonal_1 or diagonal_2:
                game_is_on = False
            if diagonal_1:
                return board[0]
            elif diagonal_2:
                return board[6]
            return

    def cheak_if_tie():
        global game_is_on
        if '-' not in board:
                game_is_on = False
        else:
            return

    def flip_player():
        global current_player

        if current_player =='x':
                current_player='o'
        elif current_player=='o':
            current_player='x'
        else:
            return

    play_game()

    run_again = input("Do you want to restart it:")
    if run_again=='yes'.lower():
        restart()
    elif run_again=='no'.lower():
        print("player don't want to play")
    else:
        print("Invalid")

restart()

在这里我没有得到任何错误,我只想重新开始我的代码。

EN

回答 1

Stack Overflow用户

发布于 2019-06-09 23:51:00

代码语言:javascript
复制
while True:
    # do something
    end_program = input("Do you want to quit? Y/N: ")
    if end_program == "Y":
        break

你可以尝试这样做,它会让程序一直循环下去,直到用户选择结束它。您可以使用一些print语句和其他选项来美化它。

如果您确实希望重新启动程序,可以先创建一个main.py文件,然后再创建一个game.py文件。

代码语言:javascript
复制
import subprocess

while True:
    subprocess.run(["python", "game.py"])
    program_break = input("Do you want to play again? Y/N: ")
    if program_break == "Y":
        break
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56516043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档