python实现简单的井字棋


Posted in Python onMay 26, 2021

本文实例为大家分享了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复制与引用用法分析
Apr 08 Python
Python实现文件复制删除
Apr 19 Python
Python实现登录接口的示例代码
Jul 21 Python
TensorFlow saver指定变量的存取
Mar 10 Python
python字符串Intern机制详解
Jul 01 Python
django rest framework 实现用户登录认证详解
Jul 29 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
Mar 30 Python
Django ORM 查询表中某列字段值的方法
Apr 30 Python
python如何安装下载后的模块
Jul 03 Python
python 多进程和协程配合使用写入数据
Oct 30 Python
python两种获取剪贴板内容的方法
Nov 06 Python
python blinker 信号库
May 04 Python
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
Python 循环读取数据内存不足的解决方案
May 25 #Python
python基于机器学习预测股票交易信号
Python数据可视化之绘制柱状图和条形图
总结Python常用的魔法方法
Python入门学习之类的相关知识总结
python munch库的使用解析
May 25 #Python
You might like
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
2011/11/02 PHP
PHP设计模式之装饰者模式
2012/02/29 PHP
PHP应用JSON技巧讲解
2013/02/03 PHP
destoon实现VIP排名一直在前面排序的方法
2014/08/21 PHP
Codeigniter购物车类不能添加中文的解决方法
2014/11/29 PHP
javascript String 的扩展方法集合
2008/06/01 Javascript
JavaScript初学者应注意的七个细节详细介绍
2012/12/27 Javascript
解析ScrollPic在ie8下只滚动一遍,然后变为空白 ie6,ie7,chrome,firefox正常
2013/06/26 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
2013/10/29 Javascript
JS事件在IE与FF中的区别详细解析
2013/11/20 Javascript
完美兼容各大浏览器的jQuery仿新浪图文淡入淡出间歇滚动特效
2014/11/12 Javascript
js Calender控件使用详解
2015/01/05 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
2015/08/24 Javascript
JavaScript省市区三级联动菜单效果
2016/09/21 Javascript
Node.JS中事件轮询(Event Loop)的解析
2017/02/25 Javascript
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
2017/06/30 Javascript
Linux Centos7.2下安装nodejs&npm配置全局路径的教程
2018/05/15 NodeJs
vue element upload组件 file-list的动态绑定实现
2019/10/11 Javascript
微信小程序实现时间进度条功能
2020/11/17 Javascript
Vue优化:常见会导致内存泄漏问题及优化详解
2020/08/04 Javascript
[01:39:04]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第二场 2月1日
2021/03/11 DOTA
Python中3种内建数据结构:列表、元组和字典
2014/11/30 Python
python实现员工管理系统
2018/01/11 Python
python机器学习之神经网络实现
2018/10/13 Python
Python中实例化class的执行顺序示例详解
2018/10/14 Python
使用Python实现NBA球员数据查询小程序功能
2020/11/09 Python
海淘零差价,宝贝全球购: 宝贝格子
2016/08/24 全球购物
adidas美国官网:adidas US
2016/09/21 全球购物
工作的心得体会
2013/12/31 职场文书
七一党建活动方案
2014/01/28 职场文书
求职简历中自我评价
2014/01/28 职场文书
买房委托公证书
2014/04/08 职场文书
党员廉洁自律承诺书
2014/05/26 职场文书
营销与策划专业求职信
2014/06/20 职场文书
不知如何爱孩子,这些方法教会您
2019/08/06 职场文书
Java SSH 秘钥连接mysql数据库的方法
2021/06/28 Java/Android