您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:python实现简单的井字棋

51自学网 2021-10-30 22:37:39
  python
这篇教程python实现简单的井字棋写得很实用,希望能帮到您。

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

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

import randomboard = [['+','+','+'],['+','+','+'],['+','+','+']]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 1def 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 Falsedef 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("落子位置不对")                continueif __name__ == "__main__":    main()

结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持51zixue.net。


python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
python中os.path.join()函数实例用法
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。