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 相关文章推荐
wxPython学习之主框架实例
Sep 28 Python
详解Python3.1版本带来的核心变化
Apr 07 Python
Python NumPy库安装使用笔记
May 18 Python
解决Django模板无法使用perms变量问题的方法
Sep 10 Python
Python实现识别手写数字大纲
Jan 29 Python
python实现画五角星和螺旋线的示例
Jan 20 Python
Python 实现域名解析为ip的方法
Feb 14 Python
Python程序暂停的正常处理方法
Nov 07 Python
Python: 传递列表副本方式
Dec 19 Python
python实现爱奇艺登陆密码RSA加密的方法示例详解
May 27 Python
idea2020手动安装python插件的实现方法
Jul 17 Python
Python爬虫中Selenium实现文件上传
Dec 04 Python
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
Python 循环读取数据内存不足的解决方案
May 25 #Python
python基于机器学习预测股票交易信号
Python数据可视化之绘制柱状图和条形图
总结Python常用的魔法方法
Python入门学习之类的相关知识总结
python munch库的使用解析
May 25 #Python
You might like
php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
2010/05/15 PHP
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
2011/07/17 PHP
举例详解PHP脚本的测试方法
2015/08/05 PHP
PHP静态成员变量和非静态成员变量详解
2017/02/14 PHP
图片上传即时显示缩略图的js代码
2009/05/27 Javascript
javascript showModalDialog 多层模态窗口实现页面提交及刷新的代码
2009/11/28 Javascript
js监听输入框值的即时变化onpropertychange、oninput
2011/07/13 Javascript
仿谷歌主页js动画效果实现代码
2013/07/14 Javascript
如何获取select下拉框的值(option没有及有value属性)
2013/11/08 Javascript
Javascript 按位与赋值运算符 (&=)使用介绍
2014/02/04 Javascript
jQuery 计算iframe 窗口大小的方法
2014/05/13 Javascript
jQuery获得子元素个数的方法
2015/04/14 Javascript
jQuery 更改checkbox的状态,无效的解决方法
2016/07/22 Javascript
jQuery simpleModal插件的使用介绍
2016/08/30 Javascript
jQuery通过ajax方法获取json数据不执行success的原因及解决方法
2016/10/15 Javascript
JavaScript基于replace+正则实现ES6的字符串模版功能
2017/04/25 Javascript
通过源码分析Vue的双向数据绑定详解
2017/09/24 Javascript
浅谈node中的cluster集群
2018/06/02 Javascript
webuploader分片上传的实现代码(前后端分离)
2018/09/10 Javascript
python数据预处理之将类别数据转换为数值的方法
2017/07/05 Python
python seaborn heatmap可视化相关性矩阵实例
2020/06/03 Python
详解python算法常用技巧与内置库
2020/10/17 Python
详解pandas映射与数据转换
2021/01/22 Python
Html5 localStorage入门教程
2018/04/26 HTML / CSS
波兰珠宝品牌:YES
2019/08/09 全球购物
俄罗斯首家面向中国消费者的一站式购物网站:Wruru
2020/05/08 全球购物
Exception类的常用方法
2012/06/16 面试题
土木工程师职业规划范文
2014/03/07 职场文书
销售经理岗位职责
2014/03/16 职场文书
销售顾问工作计划书
2014/08/15 职场文书
2014年保安个人工作总结
2014/11/13 职场文书
2015年生活老师工作总结
2015/05/27 职场文书
如何写通讯稿
2015/07/22 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python
MySql 缓存查询原理与缓存监控和索引监控介绍
2021/07/02 MySQL