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处理文本文件实现生成指定格式文件的方法
Jul 31 Python
使用Python的Flask框架实现视频的流媒体传输
Mar 31 Python
用Python遍历C盘dll文件的方法
May 06 Python
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
Jun 29 Python
在python中获取div的文本内容并和想定结果进行对比详解
Jan 02 Python
Python选择网卡发包及接收数据包
Apr 04 Python
python使用装饰器作日志处理的方法
Jul 11 Python
python自动化测试之DDT数据驱动的实现代码
Jul 23 Python
Python基于Socket实现简易多人聊天室的示例代码
Nov 29 Python
Pytorch distributed 多卡并行载入模型操作
Jun 05 Python
python 详解turtle画爱心代码
Feb 15 Python
Python+Selenium实现抖音、快手、B站、小红书、微视、百度好看视频、西瓜视频、微信视频号、搜狐视频、一点号、大风号、趣头条等短视频自动发布
Apr 13 Python
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
Python 循环读取数据内存不足的解决方案
May 25 #Python
python基于机器学习预测股票交易信号
Python数据可视化之绘制柱状图和条形图
总结Python常用的魔法方法
Python入门学习之类的相关知识总结
python munch库的使用解析
May 25 #Python
You might like
php防攻击代码升级版
2010/12/29 PHP
php设计模式 Prototype (原型模式)代码
2011/06/26 PHP
php中将字符串转为HTML的实体引用的一个类
2013/02/03 PHP
smarty模板局部缓存方法使用示例
2014/06/17 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
2016/04/30 PHP
Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
2016/12/09 PHP
JavaScript iframe的相互操作浅析
2009/10/14 Javascript
三级下拉菜单的js实现代码
2011/05/23 Javascript
Struts2的s:radio标签使用及用jquery添加change事件
2013/04/08 Javascript
jQuery中$.get、$.post、$.getJSON和$.ajax的用法详解
2014/11/19 Javascript
JavaScript不使用prototype和new实现继承机制
2014/12/29 Javascript
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
jQuery实现html表格动态添加新行的方法
2015/05/28 Javascript
js实现加载更多功能实例
2016/10/27 Javascript
BootStrap树状图显示功能
2016/11/24 Javascript
javascript中mouseenter与mouseover的异同
2017/06/06 Javascript
理解 javascript 中的函数表达式与函数声明
2017/07/07 Javascript
JavaScript实现表单注册、表单验证、运算符功能
2018/10/15 Javascript
Vue实现简单的留言板
2020/10/23 Javascript
vue 组件基础知识总结
2021/01/26 Vue.js
[00:34]DOTA2上海特级锦标赛 Spirit战队宣传片
2016/03/04 DOTA
[01:04:14]OG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
2016/05/28 Python
python3.5使用tkinter制作记事本
2016/06/20 Python
浅析Python pandas模块输出每行中间省略号问题
2018/07/03 Python
python图形绘制奥运五环实例讲解
2019/09/14 Python
python列表推导式操作解析
2019/11/26 Python
整理HTML5中支持的URL编码与字符编码
2016/02/23 HTML / CSS
澳大利亚第一旅行车和房车配件店:Caravan RV Camping
2020/12/26 全球购物
高中毕业的自我鉴定
2013/12/09 职场文书
幼儿园大班家长评语
2014/04/17 职场文书
收款委托书范本
2014/09/11 职场文书
2015年乡镇组织委员工作总结
2015/10/23 职场文书
2016教师廉洁从教心得体会
2016/01/13 职场文书
公司晚会主持词
2019/04/17 职场文书
企业内部管理控制:采购授权审批制度范本
2020/01/19 职场文书