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中的进程分支fork和exec详解
Apr 11 Python
基于Python函数的作用域规则和闭包(详解)
Nov 29 Python
Python中单、双下划线的区别总结
Dec 01 Python
ubuntu环境下python虚拟环境的安装过程
Jan 07 Python
Python KMeans聚类问题分析
Feb 23 Python
Python玩转PDF的各种骚操作
May 06 Python
selenium处理元素定位点击无效问题
Jun 12 Python
python实现人机猜拳小游戏
Feb 03 Python
Django User 模块之 AbstractUser 扩展详解
Mar 11 Python
2020最新pycharm汉化安装(python工程狮亲测有效)
Apr 26 Python
基于pandas向csv添加新的行和列
May 25 Python
Python3读取和写入excel表格数据的示例代码
Jun 09 Python
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
Python 循环读取数据内存不足的解决方案
May 25 #Python
python基于机器学习预测股票交易信号
Python数据可视化之绘制柱状图和条形图
总结Python常用的魔法方法
Python入门学习之类的相关知识总结
python munch库的使用解析
May 25 #Python
You might like
PHP 变量类型的强制转换
2009/10/23 PHP
php中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
2011/08/23 PHP
php中通过curl smtp发送邮件
2012/06/05 PHP
php调用nginx的mod_zip模块打包ZIP文件
2014/06/11 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
2014/07/29 PHP
PHP采集静态页面并把页面css,img,js保存的方法
2014/12/23 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
2020/04/23 PHP
纯JavaScript代码实现移动设备绘图解锁
2015/10/16 Javascript
js HTML5 Ajax实现文件上传进度条功能
2016/02/13 Javascript
Bootstrap简单表单显示学习笔记
2016/11/15 Javascript
node-red File读取好保存实例讲解
2019/09/11 Javascript
解决VUE项目使用Element-ui 下拉组件的验证失效问题
2020/11/07 Javascript
[02:21]DOTA2英雄基础教程 蝙蝠骑士
2013/12/16 DOTA
python 写的一个爬虫程序源码
2016/02/28 Python
python中函数总结之装饰器闭包详解
2016/06/12 Python
python决策树之C4.5算法详解
2017/12/20 Python
利用python打开摄像头及颜色检测方法
2018/08/03 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
2020/05/27 Python
让你Python到很爽的加速递归函数的装饰器
2019/05/26 Python
pandas数据筛选和csv操作的实现方法
2019/07/02 Python
python画双y轴图像的示例代码
2019/07/07 Python
python实现输出一个序列的所有子序列示例
2019/11/18 Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
2020/02/14 Python
植村秀加拿大官网:Shu Uemura加拿大
2019/09/03 全球购物
俄罗斯购买剧院和演唱会门票网站:Parter.ru
2019/11/09 全球购物
幼儿园园长自我鉴定
2013/10/22 职场文书
应聘自荐信
2013/12/14 职场文书
党的群众路线教育实践活动学习心得体会
2014/03/03 职场文书
升学宴主持词
2014/04/02 职场文书
2014年实习生工作总结
2014/11/27 职场文书
布达拉宫导游词
2015/02/02 职场文书
机器人瓦力观后感
2015/06/12 职场文书
《少年闰土》教学反思
2016/02/18 职场文书
合理缓解职场压力,让你随时保持最佳状态!
2019/06/21 职场文书
亲情作文之母爱
2019/09/25 职场文书
css3 文字断裂效果
2022/04/22 HTML / CSS