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 相关文章推荐
easy_install python包安装管理工具介绍
Feb 10 Python
关于Python元祖,列表,字典,集合的比较
Jan 06 Python
Python把csv数据写入list和字典类型的变量脚本方法
Jun 15 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
Dec 19 Python
使用Python 统计高频字数的方法
Jan 31 Python
Python实现DDos攻击实例详解
Feb 02 Python
详解Django+uwsgi+Nginx上线最佳实战
Mar 14 Python
python代码中怎么换行
Jun 17 Python
python判断字符串以什么结尾的实例方法
Sep 18 Python
Selenium 安装和简单使用的实现
Dec 04 Python
Python OpenCV实现图形检测示例详解
Apr 08 Python
python三子棋游戏
May 04 Python
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
Python 循环读取数据内存不足的解决方案
May 25 #Python
python基于机器学习预测股票交易信号
Python数据可视化之绘制柱状图和条形图
总结Python常用的魔法方法
Python入门学习之类的相关知识总结
python munch库的使用解析
May 25 #Python
You might like
php实现zip压缩文件解压缩代码分享(简单易懂)
2014/05/10 PHP
PHP编程获取各个时间段具体时间的方法
2017/05/26 PHP
PHP基于curl模拟post提交json数据示例
2018/06/22 PHP
用ADODB.Stream转换
2007/01/22 Javascript
一次失败的jQuery优化尝试小结
2011/02/06 Javascript
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
js实现一个省市区三级联动选择框代码分享
2013/03/06 Javascript
js相册效果代码(点击创建即可)
2013/04/16 Javascript
jquery防止重复执行动画避免页面混乱
2014/04/22 Javascript
javascript实现复制与粘贴操作实例
2014/10/16 Javascript
详解Ant Design of React的安装和使用方法
2018/12/27 Javascript
微信小程序时间控件picker view使用详解
2018/12/28 Javascript
浅谈Vue的响应式原理
2019/05/30 Javascript
详解elementui之el-image-viewer(图片查看器)
2019/08/30 Javascript
JavaScript实现五子棋小游戏
2020/10/26 Javascript
python之wxPython应用实例
2014/09/28 Python
Python实现将数据库一键导出为Excel表格的实例
2016/12/30 Python
tensorflow中next_batch的具体使用
2018/02/02 Python
Python变量赋值的秘密分享
2018/04/03 Python
Python基于pycrypto实现的AES加密和解密算法示例
2018/04/10 Python
Python使用循环神经网络解决文本分类问题的方法详解
2020/01/16 Python
Django基于客户端下载文件实现方法
2020/04/21 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
2021/01/06 Python
Python利用socket模块开发简单的端口扫描工具的实现
2021/01/27 Python
纯CSS3实现8组超炫酷鼠标滑过图片动画
2016/03/16 HTML / CSS
Chain Reaction Cycles俄罗斯:世界上最大的在线自行车商店
2019/08/27 全球购物
什么是.net的Remoting技术
2016/07/08 面试题
大学生职业生涯规划书模板
2014/01/18 职场文书
烹饪自我鉴定
2014/03/01 职场文书
优秀毕业生就业推荐信
2014/05/22 职场文书
校园活动策划方案
2014/06/13 职场文书
夫妻忠诚协议书范本
2014/11/17 职场文书
寒暑假实习证明书模板
2014/11/29 职场文书
护士个人总结范文
2015/02/13 职场文书
安全员岗位职责范本
2015/04/11 职场文书
Prometheus 监控MySQL使用grafana展示
2021/08/30 MySQL