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 相关文章推荐
python3.3使用tkinter开发猜数字游戏示例
Mar 14 Python
简单理解Python中基于生成器的状态机
Apr 13 Python
在Python程序和Flask框架中使用SQLAlchemy的教程
Jun 06 Python
Python 通过pip安装Django详细介绍
Apr 28 Python
使用Python为中秋节绘制一块美味的月饼
Sep 11 Python
python 实现让字典的value 成为列表
Dec 16 Python
Python如何存储数据到json文件
Mar 09 Python
Pygame的程序开始示例代码
May 07 Python
python中常见错误及解决方法
Jun 21 Python
python 实现批量图片识别并翻译
Nov 02 Python
Python中的面向接口编程示例详解
Jan 17 Python
python可视化分析的实现(matplotlib、seaborn、ggplot2)
Feb 03 Python
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
Python 循环读取数据内存不足的解决方案
May 25 #Python
python基于机器学习预测股票交易信号
Python数据可视化之绘制柱状图和条形图
总结Python常用的魔法方法
Python入门学习之类的相关知识总结
python munch库的使用解析
May 25 #Python
You might like
php&java(二)
2006/10/09 PHP
实用函数9
2007/11/08 PHP
使用PHP socke 向指定页面提交数据
2008/07/23 PHP
PHP以及MYSQL日期比较方法
2012/11/29 PHP
phpExcel中文帮助手册之常用功能指南
2014/08/18 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
Zend Framework动作助手FlashMessenger用法详解
2016/03/05 PHP
laravel 中如何使用ajax和vue总结
2017/08/16 PHP
详解在YII2框架中使用UEditor编辑器发布文章
2018/11/02 PHP
jQuery弹出层始终垂直居中相对于屏幕或当前窗口
2013/04/01 Javascript
js 实现日期灵活格式化的小例子
2013/07/14 Javascript
Jquery响应回车键直接提交表单操作代码
2014/07/25 Javascript
JS修改iframe页面背景颜色的方法
2015/04/01 Javascript
html+js+highcharts绘制圆饼图表的简单实例
2016/08/04 Javascript
AngularJS中如何使用echart插件示例详解
2016/10/26 Javascript
微信小程序实现授权登录
2019/05/15 Javascript
vue 取出v-for循环中的index值实例
2019/11/09 Javascript
JavaScript This指向问题详解
2019/11/25 Javascript
Nuxt页面级缓存的实现
2020/03/09 Javascript
[06:13]DOTA2进化论(修改版)
2013/10/08 DOTA
举例详解Python中循环语句的嵌套使用
2015/05/14 Python
python图像处理之镜像实现方法
2015/05/30 Python
Python 实现一个颜色色值转换的小工具
2016/12/06 Python
Python二叉树定义与遍历方法实例分析
2018/05/25 Python
django foreignkey(外键)的实现
2019/07/29 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
Python批量将图片灰度化的实现代码
2020/04/11 Python
css3给背景图片加颜色遮罩的方法
2019/11/05 HTML / CSS
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
文案策划求职信
2014/04/14 职场文书
十佳党员事迹材料
2014/08/28 职场文书
大学迎新生标语
2014/10/06 职场文书
如何写贫困证明申请书
2014/10/29 职场文书
学生个人评语大全
2015/01/04 职场文书
医务人员医德考评自我评价
2015/03/03 职场文书
2016五一手机促销广告语
2016/01/28 职场文书