|  | 
 
 
 楼主|
发表于 2022-8-7 18:43:27
|
显示全部楼层 
| 完成啦~ 
 复制代码import easygui as g
import random as r
人 = 'P'
人_胜负 = 'P'
次 = 0
先 = 'P'
后 = 'P'
内容 = ''
title = '井字棋'
def 井字棋():
    global 人
    global 内容
    global title
    棋 = ['  ','  ','  ','  ','  ','  ','  ','  ','  ']
    #     1(0) 2(1) 3(2) 4(3) 5(4) 6(5) 7(6) 8(7) 9(8) 分别对应九个格子:
    #                                                     ┏ ━ ┳ ━ ┳ ━ ┓
    #                                                   3 ┃1(0)┃2(1)┃3(2)┃
    #                                                     ┣ ━ ╋ ━ ╋ ━ ┫
    #                                                   2 ┃4(3)┃5(4)┃6(5)┃
    #                                                     ┣ ━ ╋ ━ ╋ ━ ┫
    #                                                   1 ┃7(6)┃8(7)┃9(8)┃
    #                                                     ┗ ━ ┻ ━ ┻ ━ ┛
    #                                                       一    二    三
    
    def 井_开始():
        def 井_检测():
            global 次
            global 人
            global title
            if 棋[0] == 棋[1] == 棋[2] == '○':
                g.msgbox(人_胜负 + '赢了',title,'好的')
                exit()
            elif 棋[0] == 棋[1] == 棋[2] == '×':
                g.msgbox(人_胜负 + '赢了',title,'好的')
                exit()
            elif 棋[0] == 棋[3] == 棋[6] == '○':
                g.msgbox(人_胜负 + '赢了',title,'好的')
                exit()
            elif 棋[0] == 棋[3] == 棋[6] == '×':
                g.msgbox(人_胜负 + '赢了',title,'好的')
                exit()
            elif 棋[0] == 棋[4] == 棋[8] == '○':
                g.msgbox(人_胜负 + '赢了',title,'好的')
                exit()
            elif 棋[0] == 棋[4] == 棋[8] == '×':
                g.msgbox(人_胜负 + '赢了',title,'好的')
                exit()
            elif 棋[1] == 棋[4] == 棋[7] == '○':
                g.msgbox(人_胜负 + '赢了',title,'好的')
                exit()
            elif 棋[1] == 棋[4] == 棋[7] == '×':
                g.msgbox(人_胜负 + '赢了',title,'好的')
                exit()
            elif 棋[2] == 棋[5] == 棋[8] == '○':
                g.msgbox(人_胜负 + '赢了',title,'好的')
                exit()
            elif 棋[2] == 棋[5] == 棋[8] == '×':
                g.msgbox(人_胜负 + '赢了',title,'好的')
                exit()
            elif 棋[2] == 棋[4] == 棋[6] == '○':
                g.msgbox(人_胜负 + '赢了',title,'好的')
                exit()
            elif 棋[2] == 棋[4] == 棋[6] == '×':
                g.msgbox(人_胜负 + '赢了',title,'好的')
                exit()
            elif 棋[3] == 棋[4] == 棋[5] == '○':
                g.msgbox(人_胜负 + '赢了',title,'好的')
                exit()
            elif 棋[3] == 棋[4] == 棋[5] == '×':
                g.msgbox(人_胜负 + '赢了',title,'好的')
                exit()
            elif 棋[6] == 棋[7] == 棋[8] == '○':
                g.msgbox(人_胜负 + '赢了',title,'好的')
                exit()
            elif 棋[6] == 棋[7] == 棋[8] == '×':
                g.msgbox(人_胜负 + '赢了',title,'好的')
                exit()
            elif 次 == 9:
                g.msgbox('平局',title,'好的')
                exit()
            else:
                pass
                
        global 人
        global 人_胜负
        global 次
        global 先
        global 后
        global 内容
        global title
        井_检测()
        choices = ['左上(一,3)','上   (二,3)','右上(三,3)','左   (一,2)','中   (二,2)','右   (三,2)','左下(一,1)','下   (二,1)','右下(三,1)']
        选择 = g.choicebox('请选择┏━┳━┳━┓\n    3 ┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n      ┣━╋━╋━┫\n    2 ┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n      ┣━╋━╋━┫\n    1 ┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n      ┗━┻━┻━┛\n        一  二  三',title + '——' + 人,choices)
        if 选择 == '左上(一,3)':
            if 棋[0] == '○' or 棋[0] == '×':
                g.msgbox('这个位置已经被占用了哦',title,'好的')
                井_开始()
            else:
                del 棋[0]
                棋.insert(0,内容)
                g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
                次 += 1
                if 人 == '1P':
                    人 = '2P'
                    人_胜负 = '1P'
                    if 内容 == '○':
                        内容 = '×'
                        井_开始()
                    elif 内容 == '×':
                        内容 = '○'
                        井_开始()
                elif 人 == '2P':
                    人 = '1P'
                    人_胜负 = '2P'
                    if 内容 == '○':
                        内容 = '×'
                        井_开始()
                    elif 内容 == '×':
                        内容 = '○'
                        井_开始()
        elif 选择 == '上   (二,3)':
            if 棋[1] == '○' or 棋[1] == '×':
                g.msgbox('这个位置已经被占用了哦',title,'好的')
                井_开始()
            else:
                del 棋[1]
                棋.insert(1,内容)
                g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
                次 += 1
                if 人 == '1P':
                    人 = '2P'
                    人_胜负 = '1P'
                    if 内容 == '○':
                        内容 = '×'
                        井_开始()
                    elif 内容 == '×':
                        内容 = '○'
                        井_开始()
                elif 人 == '2P':
                    人 = '1P'
                    人_胜负 = '2P'
                    if 内容 == '○':
                        内容 = '×'
                        井_开始()
                    elif 内容 == '×':
                        内容 = '○'
                        井_开始()
        elif 选择 == '右上(三,3)':
            if 棋[2] == '○' or 棋[2] == '×':
                g.msgbox('这个位置已经被占用了哦',title,'好的')
                井_开始()
            else:
                del 棋[2]
                棋.insert(2,内容)
                g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
                次 += 1
                if 人 == '1P':
                    人 = '2P'
                    人_胜负 = '1P'
                    if 内容 == '○':
                        内容 = '×'
                        井_开始()
                    elif 内容 == '×':
                        内容 = '○'
                        井_开始()
                elif 人 == '2P':
                    人 = '1P'
                    人_胜负 = '2P'
                    if 内容 == '○':
                        内容 = '×'
                        井_开始()
                    elif 内容 == '×':
                        内容 = '○'
                        井_开始()
        elif 选择 == '左   (一,2)':
            if 棋[3] == '○' or 棋[3] == '×':
                g.msgbox('这个位置已经被占用了哦',title,'好的')
                井_开始()
            else:
                del 棋[3]
                棋.insert(3,内容)
                g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
                次 += 1
                if 人 == '1P':
                    人 = '2P'
                    人_胜负 = '1P'
                    if 内容 == '○':
                        内容 = '×'
                        井_开始()
                    elif 内容 == '×':
                        内容 = '○'
                        井_开始()
                elif 人 == '2P':
                    人 = '1P'
                    人_胜负 = '2P'
                    if 内容 == '○':
                        内容 = '×'
                        井_开始()
                    elif 内容 == '×':
                        内容 = '○'
                        井_开始()
        elif 选择 == '中   (二,2)':
            if 棋[4] == '○' or 棋[4] == '×':
                g.msgbox('这个位置已经被占用了哦',title,'好的')
                井_开始()
            else:
                del 棋[4]
                棋.insert(4,内容)
                g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
                次 += 1
                if 人 == '1P':
                    人 = '2P'
                    人_胜负 = '1P'
                    if 内容 == '○':
                        内容 = '×'
                        井_开始()
                    elif 内容 == '×':
                        内容 = '○'
                        井_开始()
                elif 人 == '2P':
                    人 = '1P'
                    人_胜负 = '2P'
                    if 内容 == '○':
                        内容 = '×'
                        井_开始()
                    elif 内容 == '×':
                        内容 = '○'
                        井_开始()
        elif 选择 == '右   (三,2)':
            if 棋[5] == '○' or 棋[5] == '×':
                g.msgbox('这个位置已经被占用了哦',title,'好的')
                井_开始()
            else:
                del 棋[5]
                棋.insert(5,内容)
                g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
                次 += 1
                if 人 == '1P':
                    人 = '2P'
                    人_胜负 = '1P'
                    if 内容 == '○':
                        内容 = '×'
                        井_开始()
                    elif 内容 == '×':
                        内容 = '○'
                        井_开始()
                elif 人 == '2P':
                    人 = '1P'
                    人_胜负 = '2P'
                    if 内容 == '○':
                        内容 = '×'
                        井_开始()
                    elif 内容 == '×':
                        内容 = '○'
                        井_开始()
        elif 选择 == '左下(一,1)':
            if 棋[6] == '○' or 棋[6] == '×':
                g.msgbox('这个位置已经被占用了哦',title,'好的')
                井_开始()
            else:
                del 棋[6]
                棋.insert(6,内容)
                g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
                次 += 1
                if 人 == '1P':
                    人 = '2P'
                    人_胜负 = '1P'
                    if 内容 == '○':
                        内容 = '×'
                        井_开始()
                    elif 内容 == '×':
                        内容 = '○'
                        井_开始()
                elif 人 == '2P':
                    人 = '1P'
                    人_胜负 = '2P'
                    if 内容 == '○':
                        内容 = '×'
                        井_开始()
                    elif 内容 == '×':
                        内容 = '○'
                        井_开始()
        elif 选择 == '下   (二,1)':
            if 棋[7] == '○' or 棋[7] == '×':
                g.msgbox('这个位置已经被占用了哦',title,'好的')
                井_开始()
            else:
                del 棋[7]
                棋.insert(7,内容)
                g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
                次 += 1
                if 人 == '1P':
                    人 = '2P'
                    人_胜负 = '1P'
                    if 内容 == '○':
                        内容 = '×'
                        井_开始()
                    elif 内容 == '×':
                        内容 = '○'
                        井_开始()
                elif 人 == '2P':
                    人 = '1P'
                    人_胜负 = '2P'
                    if 内容 == '○':
                        内容 = '×'
                        井_开始()
                    elif 内容 == '×':
                        内容 = '○'
                        井_开始()
        elif 选择 == '右下(三,1)':
            if 棋[8] == '○' or 棋[8] == '×':
                g.msgbox('这个位置已经被占用了哦',title,'好的')
                井_开始()
            else:
                del 棋[8]
                棋.insert(8,内容)
                g.msgbox('┏━┳━┳━┓\n┃' + 棋[0] + '┃' + 棋[1] + '┃' + 棋[2] +'┃\n┣━╋━╋━┫\n┃' + 棋[3] + '┃' + 棋[4] + '┃' + 棋[5] +'┃\n┣━╋━╋━┫\n┃' + 棋[6] + '┃' + 棋[7] + '┃' + 棋[8] +'┃\n┗━┻━┻━┛',title,'好的')
                次 += 1
                if 人 == '1P':
                    人 = '2P'
                    人_胜负 = '1P'
                    if 内容 == '○':
                        内容 = '×'
                        井_开始()
                    elif 内容 == '×':
                        内容 = '○'
                        井_开始()
                elif 人 == '2P':
                    人 = '1P'
                    人_胜负 = '2P'
                    if 内容 == '○':
                        内容 = '×'
                        井_开始()
                    elif 内容 == '×':
                        内容 = '○'
                        井_开始()
    g.msgbox('抽取先后手',title,'好的')
    先后 = r.randint(1,2)
    if 先后 == 1:
        g.msgbox('1P先手(○),2P后手(×)',title,'好的')
        g.msgbox('准备开始井字棋',title,'开始')
        先 = '1P'
        后 = '2P'
        人 = '1P'
        内容 = '○'
        次 = 0
        井_开始()
    elif 先后 == 2:
        g.msgbox('2P先手(○),1P后手(×)',title,'好的')
        g.msgbox('准备开始井字棋',title,'开始')
        先 = '2P'
        后 = '1P'
        人 = '2P'
        内容 = '○'
        次 = 0
        井_开始()
井字棋()
 | 
 |