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将html转成PDF的实现代码(包含中文)
Mar 04 Python
跟老齐学Python之用while来循环
Oct 02 Python
Python实现的简单文件传输服务器和客户端
Apr 08 Python
python使用socket进行简单网络连接的方法
Apr 29 Python
Python中的with语句与上下文管理器学习总结
Jun 28 Python
浅谈对yield的初步理解
May 29 Python
Python3实现简单可学习的手写体识别(实例讲解)
Oct 21 Python
Python实现字符型图片验证码识别完整过程详解
May 10 Python
pygame实现成语填空游戏
Oct 29 Python
pytorch实现查看当前学习率
Jun 24 Python
python 命令行传参方法总结
May 25 Python
Python中npy和mat文件的保存与读取
Apr 24 Python
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
Python 循环读取数据内存不足的解决方案
May 25 #Python
python基于机器学习预测股票交易信号
Python数据可视化之绘制柱状图和条形图
总结Python常用的魔法方法
Python入门学习之类的相关知识总结
python munch库的使用解析
May 25 #Python
You might like
一个简单且很好用的php分页类
2013/10/26 PHP
smarty缓存用法分析
2014/12/16 PHP
PHP创建多级目录的两种方法
2016/10/28 PHP
js 表单提交后按钮变灰的实例代码
2013/08/16 Javascript
ECMAScript5中的对象存取器属性:getter和setter介绍
2014/12/08 Javascript
jquery Easyui快速开发总结
2015/08/20 Javascript
JS+CSS实现滑动切换tab菜单效果
2015/08/25 Javascript
CSS中position属性之fixed实现div居中
2015/12/14 Javascript
Bootstrap入门书籍之(一)排版
2016/02/17 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
2016/05/11 Javascript
jQuery EasyUI 入门必看
2016/06/03 Javascript
浅析BootStrap栅格系统
2016/06/07 Javascript
Mvc提交表单的四种方法全程详解
2016/08/10 Javascript
JavaScript lodash常见用法系列小结
2016/08/24 Javascript
前端面试知识点锦集(JavaScript篇)
2016/12/28 Javascript
Angular2 之 路由与导航详细介绍
2017/05/26 Javascript
小程序实现展开/收起的效果示例
2018/09/22 Javascript
Vue动态组件和异步组件原理详解
2019/05/06 Javascript
vue实现滑动到底部加载更多效果
2020/10/27 Javascript
vuex vue简单使用知识点总结
2019/08/29 Javascript
JavaScript中的执行环境和作用域链
2020/09/04 Javascript
python使用三角迭代计算圆周率PI的方法
2015/03/20 Python
python下载文件时显示下载进度的方法
2015/04/02 Python
Python创建普通菜单示例【基于win32ui模块】
2018/05/09 Python
pyqt5 实现在别的窗口弹出进度条
2019/06/18 Python
python判断自身是否正在运行的方法
2019/08/08 Python
springboot配置文件抽离 git管理统 配置中心详解
2019/09/02 Python
OpenCV读取与写入图片的实现
2020/10/13 Python
解决方案设计综合面试题
2015/08/31 面试题
介绍一下Python下range()函数的用法
2013/11/07 面试题
护理专科毕业自荐信范文
2014/04/21 职场文书
护士个人年终总结
2015/02/13 职场文书
2015年班干部工作总结
2015/04/29 职场文书
2015年小学英语教师工作总结
2015/05/12 职场文书
退税申请报告怎么写
2015/05/18 职场文书
《小蝌蚪找妈妈》教学反思
2016/02/23 职场文书