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中实现两个字典(dict)合并的方法
Sep 23 Python
python通过socket查询whois的方法
Jul 18 Python
Python3一行代码实现图片文字识别的示例
Jan 15 Python
解决tensorflow测试模型时NotFoundError错误的问题
Jul 26 Python
python图像和办公文档处理总结
May 28 Python
在keras中获取某一层上的feature map实例
Jan 24 Python
python如何通过twisted搭建socket服务
Feb 03 Python
Django模板标签{% for %}循环,获取制定条数据实例
May 14 Python
python3 使用ssh隧道连接mysql的操作
Dec 05 Python
python入门之算法学习
Apr 22 Python
Python编程源码报错解决方法总结经验分享
Oct 05 Python
pycharm无法安装cv2模块问题
May 20 Python
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
Python 循环读取数据内存不足的解决方案
May 25 #Python
python基于机器学习预测股票交易信号
Python数据可视化之绘制柱状图和条形图
总结Python常用的魔法方法
Python入门学习之类的相关知识总结
python munch库的使用解析
May 25 #Python
You might like
2019年漫画销量排行榜:鬼灭登顶 海贼单卷制霸 尾田盛赞鬼灭
2020/03/08 日漫
php 获取百度的热词数据的代码
2012/02/18 PHP
PHP使用mongoclient简单操作mongodb数据库示例
2019/02/08 PHP
js判断变量是否空值的代码
2008/10/26 Javascript
javascript 变量作用域 代码分析
2009/06/26 Javascript
Javascript学习笔记8 用JSON做原型
2010/01/11 Javascript
JavaScript中的异常捕捉介绍
2014/12/31 Javascript
jQuery使用fadein方法实现渐出效果实例
2015/03/27 Javascript
JQuery中层次选择器用法实例详解
2015/05/18 Javascript
纯JavaScript代码实现移动设备绘图解锁
2015/10/16 Javascript
全面解析Bootstrap中scrollspy(滚动监听)的使用方法
2016/06/06 Javascript
Nodejs从有门道无门菜鸟起飞必看教程
2016/07/20 NodeJs
Boostrap栅格系统与自己额外定义的媒体查询的冲突问题
2017/02/19 Javascript
javascript回调函数详解
2018/02/06 Javascript
在vue项目中,使用axios跨域处理
2018/03/07 Javascript
浅谈AngularJS中$http服务的简单用法
2018/05/15 Javascript
浅谈小程序globalData的那些事儿
2019/11/01 Javascript
Node.js中文件系统fs模块的使用及常用接口
2020/03/06 Javascript
HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)
2020/03/17 Javascript
使用JavaScript获取Django模板指定键值数据
2020/05/27 Javascript
python中的代码编码格式转换问题
2015/06/10 Python
Python测试网络连通性示例【基于ping】
2018/08/03 Python
Python 多线程共享变量的实现示例
2020/04/17 Python
python批量处理多DNS多域名的nslookup解析实现
2020/06/28 Python
Python爬虫自动化获取华图和粉笔网站的错题(推荐)
2021/01/08 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
2021/02/03 Python
SmartBuyGlasses意大利:购买太阳镜、眼镜和隐形眼镜
2018/11/20 全球购物
澳大利亚最便宜的网上药房:Chemist Warehouse
2020/01/30 全球购物
迪士尼法国在线商店:shopDisney FR
2020/12/03 全球购物
文员个人求职自荐信
2013/09/21 职场文书
高三自我鉴定范文
2013/10/19 职场文书
毕业自荐书
2013/12/09 职场文书
反四风对照检查材料思想汇报
2014/09/16 职场文书
法院四风对照检查材料思想汇报
2014/10/06 职场文书
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
2021/05/14 Python
Spring Boot 实现敏感词及特殊字符过滤处理
2021/06/29 Java/Android