python实现简单的井字棋

2021-07-16 0 936

本文实例为大家分享了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()

结果:

python实现简单的井字棋

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自学编程网。

遇见资源网 Python python实现简单的井字棋 http://www.ox520.com/28925.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务