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根据距离和时长计算配速示例
Feb 16 Python
Python中实现对Timestamp和Datetime及UTC时间之间的转换
Apr 08 Python
python实现通过代理服务器访问远程url的方法
Apr 29 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
Nov 11 Python
selenium+python实现1688网站验证码图片的截取功能
Aug 14 Python
python自定义函数实现一个数的三次方计算方法
Jan 20 Python
Python标准库使用OrderedDict类的实例讲解
Feb 14 Python
使用Pandas的Series方法绘制图像教程
Dec 04 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
Feb 21 Python
python实现简单井字棋游戏
Mar 04 Python
Python中猜拳游戏与猜筛子游戏的实现方法
Sep 04 Python
Python深度学习之Pytorch初步使用
May 20 Python
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
Python 循环读取数据内存不足的解决方案
May 25 #Python
python基于机器学习预测股票交易信号
Python数据可视化之绘制柱状图和条形图
总结Python常用的魔法方法
Python入门学习之类的相关知识总结
python munch库的使用解析
May 25 #Python
You might like
mysql 的 like 问题,超强毕杀记!!!
2007/01/18 PHP
Zend Studio 无法启动的问题解决方法
2008/12/04 PHP
ThinkPHP CURD方法之where方法详解
2014/06/18 PHP
PHP中利用sleep函数实现定时执行功能实现代码
2016/08/25 PHP
在IE上直接编辑网页内容的js代码(IE地址栏js)
2009/04/27 Javascript
js 获取浏览器高度和宽度值(多浏览器)
2009/09/02 Javascript
jQuery选择头像并实时显示的代码
2010/06/27 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
2015/02/13 Javascript
jquery实现叠层3D文字特效代码分享
2015/08/21 Javascript
jQuery实现分页功能(含ajax请求、后台数据、附完整demo)
2017/04/03 jQuery
jQuery实现基本隐藏与显示效果的方法详解
2018/09/05 jQuery
[48:37]EG vs OG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
在Python的Django框架中加载模版的方法
2015/07/16 Python
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
2015/12/31 Python
python实现红包裂变算法
2016/02/16 Python
python魔法方法-属性转换和类的表示详解
2016/07/22 Python
用python写扫雷游戏实例代码分享
2018/05/27 Python
python 2.7.13 安装配置方法图文教程
2018/09/18 Python
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
2020/02/25 Python
Python3 pickle对象串行化代码实例解析
2020/03/23 Python
部署Django到阿里云服务器教程示例
2020/06/03 Python
Django REST Framework 分页(Pagination)详解
2020/11/30 Python
Python中生成ndarray实例讲解
2021/02/22 Python
Fnac西班牙官网:法国文化和电子产品零售商
2021/03/14 全球购物
入党申请自荐书范文
2014/02/11 职场文书
家具促销活动方案
2014/02/16 职场文书
《假如》教学反思
2014/04/17 职场文书
六五普法宣传标语
2014/10/06 职场文书
党的群众路线教育实践活动对照检查剖析材料
2014/10/09 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
教师师德工作总结2015
2015/07/22 职场文书
搞笑婚礼主持词开场白
2015/11/24 职场文书
反四风问题学习心得体会
2016/01/22 职场文书
解决python存数据库速度太慢的问题
2021/04/23 Python
浅谈Node的内存泄露问题
2022/05/06 NodeJs