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进阶教程之动态类型详解
Aug 30 Python
跟老齐学Python之字典,你还记得吗?
Sep 20 Python
python实现冒泡排序算法的两种方法
Mar 10 Python
Python for循环中的陷阱详解
Jul 13 Python
Python Web框架之Django框架Form组件用法详解
Aug 16 Python
python中struct模块之字节型数据的处理方法
Aug 27 Python
Python for i in range ()用法详解
Sep 18 Python
节日快乐! Python画一棵圣诞树送给你
Dec 24 Python
python调用私有属性的方法总结
Jul 24 Python
详解Python小数据池和代码块缓存机制
Apr 07 Python
如何使用Python实现一个简易的ORM模型
May 12 Python
python中的3种定义类方法
Nov 27 Python
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
Python 循环读取数据内存不足的解决方案
May 25 #Python
python基于机器学习预测股票交易信号
Python数据可视化之绘制柱状图和条形图
总结Python常用的魔法方法
Python入门学习之类的相关知识总结
python munch库的使用解析
May 25 #Python
You might like
绿山咖啡和蓝山咖啡
2021/03/04 新手入门
基于mysql的论坛(5)
2006/10/09 PHP
PHP项目开发中最常用的自定义函数整理
2010/12/02 PHP
Uglifyjs(JS代码优化工具)入门 安装使用
2020/04/13 Javascript
Javascript创建自定义对象 创建Object实例添加属性和方法
2012/06/04 Javascript
jQuery ajax(复习)—Baidu ajax request分离版
2013/01/24 Javascript
网页右键ie不支持event.preventDefault和event.returnValue (需要加window)
2013/02/22 Javascript
封装html的select标签的js操作实例
2013/07/02 Javascript
JavaScript闭包详解
2015/02/02 Javascript
详谈javascript中DOM的基本属性
2015/02/26 Javascript
原生JavaScript编写俄罗斯方块
2015/03/30 Javascript
jQuery $.each遍历对象、数组用法实例
2015/04/16 Javascript
js兼容火狐获取图片宽和高的方法
2015/05/21 Javascript
拥有一个属于自己的javascript表单验证插件
2016/03/24 Javascript
bootstrap 表单验证使用方法
2017/01/11 Javascript
vue 自定义全局方法,在组件里面的使用介绍
2018/02/28 Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
2018/09/19 Javascript
Jquery实现获取子元素的方法分析
2019/08/24 jQuery
three.js 制作动态二维码的示例代码
2020/07/31 Javascript
vue 使用post/get 下载导出文件操作
2020/08/07 Javascript
[01:15:18]2014 DOTA2国际邀请赛中国区预选赛 LGD VS Speed Gaming.cn
2014/05/22 DOTA
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
2018/06/13 Python
Python实现时间序列可视化的方法
2019/08/06 Python
利用python 下载bilibili视频
2020/11/13 Python
python中xlrd模块的使用详解
2021/02/01 Python
CSS3绘制圆角矩形的简单示例
2015/09/28 HTML / CSS
英国领先的运动营养品牌:Protein Dynamix
2018/01/02 全球购物
Dyson戴森波兰官网:Dyson.pl
2019/08/05 全球购物
华三通信H3C面试题
2015/05/15 面试题
英语专业应届生求职信范文
2013/11/15 职场文书
班主任寄语大全
2014/04/04 职场文书
暑假家长评语大全
2014/04/17 职场文书
工程材料采购方案
2014/05/18 职场文书
优秀员工演讲稿
2014/05/19 职场文书
小英雄雨来观后感
2015/06/09 职场文书
MySQL中出现乱码问题的终极解决宝典
2021/05/26 MySQL