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自动化测试工具Splinter简介和使用实例
May 13 Python
在Python的web框架中配置app的教程
Apr 30 Python
快速实现基于Python的微信聊天机器人示例代码
Mar 03 Python
Python实现的异步代理爬虫及代理池
Mar 17 Python
利用python获取当前日期前后N天或N月日期的方法示例
Jul 30 Python
python计算两个数的百分比方法
Jun 29 Python
pandas 选择某几列的方法
Jul 03 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
Apr 15 Python
搭建python django虚拟环境完整步骤详解
Jul 08 Python
大数据分析用java还是Python
Jul 06 Python
如何使用python写截屏小工具
Sep 29 Python
python实现学生信息管理系统(面向对象)
Jun 05 Python
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
Python 循环读取数据内存不足的解决方案
May 25 #Python
python基于机器学习预测股票交易信号
Python数据可视化之绘制柱状图和条形图
总结Python常用的魔法方法
Python入门学习之类的相关知识总结
python munch库的使用解析
May 25 #Python
You might like
JAVA/JSP学习系列之六
2006/10/09 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
2015/04/26 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
2019/12/13 PHP
用js 让图片在 div或dl里 居中,底部对齐
2008/01/21 Javascript
基于jquery的滚动鼠标放大缩小图片效果
2011/10/27 Javascript
JS匀速运动演示示例代码
2013/11/26 Javascript
jquery原创弹出层折叠效果点击折叠弹出一个层
2014/03/12 Javascript
jquery操作checkbox示例分享
2014/07/21 Javascript
基于jquery插件编写countdown计时器
2016/06/12 Javascript
浅谈angularJS中的事件
2016/07/12 Javascript
解析Javascript单例模式概念与实例
2016/12/05 Javascript
JavaScript模板引擎Template.js使用详解
2016/12/15 Javascript
100行代码理解和分析vue2.0响应式架构
2017/03/09 Javascript
使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
2017/03/15 Javascript
JavaScript之Date_动力节点Java学院整理
2017/06/28 Javascript
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
2017/09/28 Javascript
详解在vue-cli项目中使用mockjs(请求数据删除数据)
2017/10/23 Javascript
深入研究React中setState源码
2017/11/17 Javascript
node.js中axios使用心得总结
2017/11/29 Javascript
vue template中slot-scope/scope的使用方法
2018/09/06 Javascript
jQuery操作元素追加内容示例
2020/01/10 jQuery
vue element-ui中table合计指定列求和实例
2020/11/02 Javascript
Python实现抓取HTML网页并以PDF文件形式保存的方法
2018/05/08 Python
python实现对csv文件的列的内容读取
2018/07/04 Python
Django 自动生成api接口文档教程
2019/11/19 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
使用python求斐波那契数列中第n个数的值示例代码
2020/07/26 Python
荷兰之家英文站:Holland at Home
2016/10/26 全球购物
英国领先的电动可调床制造商:Laybrook
2019/12/26 全球购物
毕业生的自我评价
2013/12/30 职场文书
物流管理专业职业生涯规划书
2014/01/06 职场文书
学校消防安全制度
2014/01/30 职场文书
大班幼儿评语大全
2014/04/30 职场文书
大学生个人先进事迹材料范文
2014/05/03 职场文书
社区戒毒工作方案
2014/06/04 职场文书
python实现批量提取指定文件夹下同类型文件
2021/04/05 Python