当前位置 博文首页 > python实现简单的井字棋

    python实现简单的井字棋

    作者:哈尔的心 时间:2021-08-13 18:52

    本文实例为大家分享了python实现简单的井字棋的具体代码,供大家参考,具体内容如下

    使用python实现井字棋游戏,没有具体算法,只是用随机下棋简单实现:

    import random
    board = [['+','+','+'],['+','+','+'],['+','+','+']]
    def ma(board):
        if isempty(board):
            a = random.randint(0, 2)
            b = random.randint(0, 2)
            if board[a][b] != 'X' and board[a][b] != 'O':
                print("机器走:")
                board[a][b] = 'O'
                oput(board)
            else:
                ma(board)
        else:
            print("平局")
    def oput(board):
        print("  0 1 2")
        for i in range(3):
            print(i, end=' ')
            for j in range(3):
                print(board[i][j], end=" ")
            print("")
    def winput(i,j):
        if board[i][j] == 'X':
            print("human win")
        else:
            print("machine win")
        return 1
    
    def test(board):
        for i in range(3):
            for j in range(3):
                if board[i][j] != '+':
                    if j == 0:
                        if board[i][j] == board[i][j + 1] == board[i][j + 2]:
                            return winput(i,j)
                    if i == 0:
                        if board[i][j] == board[i + 1][j] == board[i + 2][j]:
                            return winput(i,j)
                    if i == 0 and j == 0:
                        if board[i][j] == board[i + 1][j + 1] == board[i + 2][j + 2]:
                            return winput(i,j)
                    if i == 2 and j == 0:
                        if board[i][j] == board[i - 1][j + 1] == board[i - 2][j + 2]:
                            return winput(i,j)
    
    def isempty(board):
        for i in range(3):
            for j in range(3):
                if board[i][j] == '+':
                    return True
        return False
    def main():
        print("初始棋盘:")
        oput(board)
        flag = 0
        t = input("human first? Y/N  human for X, machine for O\n")
        if t == 'Y':
            while isempty(board):
                print("人走:  ")
                a, b = map(int, input("输入落子纵横坐标: a,b \n").split(','))
                if board[a][b] == '+':
                   board[a][b] = 'X'
                   oput(board)
                   flag = test(board)
                   if flag == 1:
                      break
                else:
                    print("落子位置不对")
                    continue
                ma(board)
                flag = test(board)
                if flag == 1:
                    break
                if isempty(board) == 0 and flag == 0:
                    print("平局")
                    break
        elif t == 'N':
            while isempty(board):
                ma(board)
                flag = test(board)
                if isempty(board) == 0 and flag == 0:
                    print("平局")
                    break
                if flag == 1:
                    break
                print("人走:  ")
                a, b = map(int, input("输入落子纵横坐标: a,b \n").split(','))
                if board[a][b] == '+':
                    board[a][b] = 'X'
                    oput(board)
                    flag = test(board)
                    if flag == 1:
                        break
                else:
                    print("落子位置不对")
                    continue
    
    if __name__ == "__main__":
        main()

    结果:

    jsjbwy
    下一篇:没有了