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 相关文章推荐
python3访问sina首页中文的处理方法
Feb 24 Python
Python脚本实现DNSPod DNS动态解析域名
Feb 14 Python
利用Pandas 创建空的DataFrame方法
Apr 08 Python
Python实现时钟显示效果思路详解
Apr 11 Python
Python 实现在文件中的每一行添加一个逗号
Apr 29 Python
Python操作mongodb数据库的方法详解
Dec 08 Python
Python进阶之自定义对象实现切片功能
Jan 07 Python
python输出带颜色字体实例方法
Sep 01 Python
python爬虫模块URL管理器模块用法解析
Feb 03 Python
Django表单提交后实现获取相同name的不同value值
May 14 Python
python数据分析之用sklearn预测糖尿病
Apr 22 Python
如何Python使用re模块实现okenizer
Apr 30 Python
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
Python 循环读取数据内存不足的解决方案
May 25 #Python
python基于机器学习预测股票交易信号
Python数据可视化之绘制柱状图和条形图
总结Python常用的魔法方法
Python入门学习之类的相关知识总结
python munch库的使用解析
May 25 #Python
You might like
Prototype 学习 工具函数学习($A方法)
2009/07/12 Javascript
javascript 时间比较实现代码
2009/10/28 Javascript
调用DOM对象的focus使文本框获得焦点
2014/02/19 Javascript
ExtJS4 表格的嵌套 rowExpander应用
2014/05/02 Javascript
使用jQuery实现返回顶部
2015/01/26 Javascript
JavaScript实现的encode64加密算法实例分析
2015/04/15 Javascript
简介可以自动完成UI的AngularJS工具angular-smarty
2015/06/23 Javascript
javascript检查浏览器是否已经启用XX功能
2015/07/10 Javascript
js仿QQ中对联系人向左滑动、滑出删除按钮的操作
2016/04/07 Javascript
javascript中Number的方法小结
2016/11/21 Javascript
JavaScript优化以及前段开发小技巧
2017/02/02 Javascript
详解vue-router和vue-cli以及组件之间的传值
2017/07/04 Javascript
vue与TypeScript集成配置最简教程(推荐)
2017/10/17 Javascript
JS实现延迟隐藏功能的方法(类似QQ头像鼠标放上展示信息)
2017/12/28 Javascript
webpack中使用iconfont字体图标的方法
2018/02/22 Javascript
javascript少儿编程关于返回值的函数内容
2018/05/27 Javascript
webpack4 + react 搭建多页面应用示例
2018/08/03 Javascript
js计时事件实现圆形时钟
2020/03/25 Javascript
jQuery实现的图片点击放大缩小功能案例
2020/01/02 jQuery
以Flask为例讲解Python的框架的使用方法
2015/04/29 Python
python编程使用协程并发的优缺点
2018/09/20 Python
CSS3制作圆形滚动进度条动画的示例
2020/11/05 HTML / CSS
次世代生活态度:Hypebeast
2018/07/05 全球购物
联强国际笔试题面试题
2013/07/10 面试题
招商经理岗位职责
2013/11/16 职场文书
小学生暑假感言
2014/02/06 职场文书
九年级政治教学反思
2014/02/06 职场文书
汉语言文学职业规划
2014/02/14 职场文书
网络宣传方案
2014/03/15 职场文书
合唱兴趣小组活动总结
2014/07/10 职场文书
工伤事故赔偿协议书(标准)
2014/09/29 职场文书
事业单位年度考核评语
2014/12/31 职场文书
有关浪费资源的建议书
2015/09/14 职场文书
创业计划书之美甲店
2019/09/20 职场文书
python实现过滤敏感词
2021/05/08 Python
Golang jwt身份认证
2022/04/20 Golang