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 Web框架Flask信号机制(signals)介绍
Jan 01 Python
在Heroku云平台上部署Python的Django框架的教程
Apr 20 Python
python list删除元素时要注意的坑点分享
Apr 18 Python
python基于http下载视频或音频
Jun 20 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
Mar 26 Python
Python计算一个点到所有点的欧式距离实现方法
Jul 04 Python
python自定义函数实现最大值的输出方法
Jul 09 Python
Python简单处理坐标排序问题示例
Jul 11 Python
numpy.meshgrid()理解(小结)
Aug 01 Python
使用python客户端访问impala的操作方式
Mar 28 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
Mar 30 Python
python初步实现word2vec操作
Jun 09 Python
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
Python 循环读取数据内存不足的解决方案
May 25 #Python
python基于机器学习预测股票交易信号
Python数据可视化之绘制柱状图和条形图
总结Python常用的魔法方法
Python入门学习之类的相关知识总结
python munch库的使用解析
May 25 #Python
You might like
用PHP+MySql编写聊天室
2006/10/09 PHP
你应该知道PHP浮点数知识
2015/05/13 PHP
php编写批量生成不重复的卡号密码代码
2015/05/14 PHP
PHP实现的增强性mhash函数
2015/05/27 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
2016/02/15 PHP
PHP+Apache+Mysql环境搭建教程
2016/08/01 PHP
PHP实现普通hash分布式算法简单示例
2018/08/06 PHP
详解提高使用Java反射的效率方法
2019/04/29 PHP
PHP过滤器 filter_has_var() 函数用法实例分析
2020/04/23 PHP
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
2011/01/11 Javascript
Javascript无阻塞加载具体方式
2013/06/28 Javascript
javascript搜索框点击文字消失失焦时文本出现
2014/09/18 Javascript
jquery显示loading图片直到网页加载完成的方法
2015/06/25 Javascript
jQuery匹配文档链接并添加class的方法
2015/06/26 Javascript
jQuery的promise与deferred对象在异步回调中的作用
2016/05/03 Javascript
原生js验证简洁注册登录页面
2016/12/17 Javascript
JavaScript计时器用法分析【setTimeout和clearTimeout】
2017/01/18 Javascript
jQuery实现页面倒计时并刷新效果
2017/03/13 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
2017/03/15 Javascript
vue脚手架中配置Sass的方法
2018/01/04 Javascript
浅谈angularJs函数的使用方法(大小写转换,拷贝,扩充对象)
2018/10/08 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
2020/03/26 Javascript
[00:52]DOTA2齐天大圣预告片
2016/08/13 DOTA
python中pip的使用和修改下载源的方法
2019/07/08 Python
美国领先的水果篮送货公司和新鲜水果供应商:The Fruit Company
2018/02/13 全球购物
马来西亚户外装备商店:PTT Outdoor
2019/07/13 全球购物
介绍一下内联、左联、右联
2013/12/31 面试题
保险专业大专生求职信
2013/10/26 职场文书
聘任书模板
2014/03/29 职场文书
化工实习心得体会
2014/09/09 职场文书
乡镇领导班子批评与自我批评材料
2014/09/23 职场文书
学习作风建设心得体会
2014/10/22 职场文书
倡议书格式及范文
2015/04/29 职场文书
公司年会主持词范文!
2019/05/07 职场文书
详细聊聊MySQL中慢SQL优化的方向
2021/08/30 MySQL
Python使用Beautiful Soup(BS4)库解析HTML和XML
2022/06/05 Python