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科学计算之NumPy入门教程
Jan 15 Python
python3.6的venv模块使用详解
Aug 01 Python
django Serializer序列化使用方法详解
Oct 16 Python
python读取有密码的zip压缩文件实例
Feb 08 Python
Python如何实现转换URL详解
Jul 02 Python
Django获取该数据的上一条和下一条方法
Aug 12 Python
PyTorch中常用的激活函数的方法示例
Aug 20 Python
python logging日志模块原理及操作解析
Oct 12 Python
Python 代码调试技巧示例代码
Aug 11 Python
Django前后端分离csrf token获取方式
Dec 25 Python
快速一键生成Python爬虫请求头
Mar 04 Python
Python词云的正确实现方法实例
May 08 Python
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
Python 循环读取数据内存不足的解决方案
May 25 #Python
python基于机器学习预测股票交易信号
Python数据可视化之绘制柱状图和条形图
总结Python常用的魔法方法
Python入门学习之类的相关知识总结
python munch库的使用解析
May 25 #Python
You might like
Laravel 5.3 学习笔记之 安装
2016/08/28 PHP
Yii2中使用asset压缩js,css文件的方法
2016/11/24 PHP
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
2012/01/15 Javascript
左右悬浮可分组的网站QQ在线客服代码(可谓经典)
2012/12/21 Javascript
jquery.ajax的url中传递中文乱码问题的解决方法
2014/02/07 Javascript
简单谈谈javascript中的变量、作用域和内存问题
2015/08/30 Javascript
JavaScript中SetInterval与setTimeout的用法详解
2015/11/10 Javascript
基于jQuery实现选取月份插件附源码下载
2015/12/28 Javascript
jQuery实现移动端手机商城购物车功能
2016/09/24 Javascript
vue接口请求加密实例
2020/08/11 Javascript
在python的类中动态添加属性与生成对象
2016/09/17 Python
基于Python闭包及其作用域详解
2017/08/28 Python
python实现随机漫步算法
2018/08/27 Python
python得到windows自启动列表的方法
2018/10/14 Python
python实现自动登录后台管理系统
2018/10/18 Python
Python 输入一个数字判断成绩分数等级的方法
2018/11/15 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
2018/12/20 Python
Python设计模式之备忘录模式原理与用法详解
2019/01/15 Python
基于Python实现用户管理系统
2019/02/26 Python
pandas DataFrame 交集并集补集的实现
2019/06/24 Python
python dataframe NaN处理方式
2019/12/26 Python
python中导入 train_test_split提示错误的解决
2020/06/19 Python
哪种Python框架适合你?简单介绍几种主流Python框架
2020/08/04 Python
Python colormap库的安装和使用详情
2020/10/06 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
2020/11/11 Python
css3 矩阵的使用详解
2018/03/20 HTML / CSS
利用HTML5 Canvas制作一个简单的打飞机游戏
2015/05/11 HTML / CSS
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
健康监测猫砂:Pretty Litter
2017/05/25 全球购物
潘多拉珠宝英国官方网上商店:PANDORA英国
2018/06/12 全球购物
如何写一个Java类既可以用作applet也可以用作java应用
2016/01/18 面试题
开平碉楼导游词
2015/02/06 职场文书
基于JavaScript实现年月日三级联动
2021/06/22 Javascript
用Python编写简单的gRPC服务的详细过程
2021/07/04 Python
Nginx下SSL证书安装部署步骤介绍
2021/12/06 Servers
Li list-style-image 图片垂直居中实现方法
2023/05/21 HTML / CSS