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 相关文章推荐
400多行Python代码实现了一个FTP服务器
May 10 Python
centos6.4下python3.6.1安装教程
Jul 21 Python
Python字符串格式化%s%d%f详解
Feb 02 Python
Python XlsxWriter模块Chart类用法实例分析
Mar 11 Python
Python 2种方法求某个范围内的所有素数(质数)
Jan 31 Python
Django+python服务器部署与环境部署教程详解
Mar 30 Python
PyQt5 控件字体样式等设置的实现
May 13 Python
浅谈django channels 路由误导
May 28 Python
Python devel安装失败问题解决方案
Jun 09 Python
golang/python实现归并排序实例代码
Aug 30 Python
OpenCV-Python实现油画效果的实例
Jun 08 Python
Python使用海龟绘图实现贪吃蛇游戏
Jun 18 Python
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
Python 循环读取数据内存不足的解决方案
May 25 #Python
python基于机器学习预测股票交易信号
Python数据可视化之绘制柱状图和条形图
总结Python常用的魔法方法
Python入门学习之类的相关知识总结
python munch库的使用解析
May 25 #Python
You might like
php压缩多个CSS为一个css的代码并缓存
2011/04/21 PHP
第四章 php数学运算
2011/12/30 PHP
php实例分享之二维数组排序
2014/05/15 PHP
php文件扩展名判断及获取文件扩展名的N种方法
2015/09/12 PHP
PHP使用fopen与file_get_contents读取文件实例分享
2016/03/04 PHP
Laravel5.5新特性之友好报错以及展示详解
2017/08/13 PHP
PHP判断是否是微信打开还是浏览器打开的方法
2019/02/27 PHP
js cookies 常见网页木马挂马代码 24小时只加载一次
2009/04/13 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
学习javascript面向对象 实例讲解面向对象选项卡
2016/01/04 Javascript
9种改善AngularJS性能的方法
2017/11/28 Javascript
Swiper 4.x 使用方法(移动端网站的内容触摸滑动)
2018/05/17 Javascript
Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法
2019/09/03 Javascript
Vue登录主页动态背景短视频制作
2019/09/21 Javascript
layui table表格数据的新增,修改,删除,查询,双击获取行数据方式
2019/11/14 Javascript
js瀑布流布局的实现
2020/06/28 Javascript
详解Vue.js 响应接口
2020/07/04 Javascript
JavaScript 中的六种循环方法
2021/01/06 Javascript
python操作MongoDB基础知识
2013/11/01 Python
python列表去重的二种方法
2014/02/14 Python
Linux 发邮件磁盘空间监控(python)
2016/04/23 Python
详解duck typing鸭子类型程序设计与Python的实现示例
2016/06/03 Python
Python实现模拟登录网易邮箱的方法示例
2018/07/05 Python
对python读写文件去重、RE、set的使用详解
2018/12/11 Python
HTML5实现WebSocket协议原理浅析
2014/07/07 HTML / CSS
自荐信结尾
2013/10/27 职场文书
快餐店的创业计划书范文
2014/01/29 职场文书
模具专业求职信
2014/06/26 职场文书
师德师风个人自我剖析材料
2014/09/27 职场文书
师德自我剖析材料范文
2014/10/06 职场文书
简单的个人租房协议书范本
2014/11/26 职场文书
小学生作文评语集锦
2014/12/25 职场文书
建筑工地资料员岗位职责
2015/04/13 职场文书
化工厂员工工作总结
2015/10/15 职场文书
如何用PHP websocket实现网页实时聊天
2021/05/26 PHP
Python实现列表拼接和去重的三种方式
2021/07/02 Python