python实现简单的井字棋

 更新时间:2021年05月26日 08:35:52   作者:哈尔的心  
这篇文章主要为大家详细介绍了python实现简单的井字棋,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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利用open函数读写文件的示例详解

    Python利用open函数读写文件的示例详解

    在目前的环境中,读取文件应该算是最基本的操作了,python也内置了读写文件的函数,让我们来看下Python是如何利用open函数读写文件吧
    2023-04-04
  • python select.select模块通信全过程解析

    python select.select模块通信全过程解析

    这篇文章主要为大家解析了python select.select模块通信全过程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • 推荐技术人员一款Python开源库(造数据神器)

    推荐技术人员一款Python开源库(造数据神器)

    今天小编给大家推荐一款Python开源库,技术人必备的造数据神器!非常不错,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2020-07-07
  • 利用pipenv和pyenv管理多个相互独立的Python虚拟开发环境

    利用pipenv和pyenv管理多个相互独立的Python虚拟开发环境

    这篇文章主要介绍了利用pipenv和pyenv管理多个相互独立的Python虚拟开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Django url 路由匹配过程详解

    Django url 路由匹配过程详解

    这篇文章主要介绍了Django url 路由匹配过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • django在接受post请求时显示403forbidden实例解析

    django在接受post请求时显示403forbidden实例解析

    这篇文章主要介绍了django在接受post请求时显示403forbidden实例解析,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Python中的闭包使用及作用

    Python中的闭包使用及作用

    这篇文章主要介绍了Python中的闭包使用及作用,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • Python接口自动化浅析如何处理动态数据

    Python接口自动化浅析如何处理动态数据

    本文是python接口自动化系列文章,主要介绍了接口自动化过程中,动态数据如何生成、动态数据与数据库数据进行对比并替换,有需要的朋友可以参考下
    2021-08-08
  • 对python内置map和six.moves.map的区别详解

    对python内置map和six.moves.map的区别详解

    今天小编就为大家分享一篇对python内置map和six.moves.map的区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • python中(str,list,tuple)基础知识汇总

    python中(str,list,tuple)基础知识汇总

    本文给大家汇总介绍的是python中str(字符串)、list(列表)、tuple(元组)、dict(字典)的一些基础知识,有需要的小伙伴可以参考下
    2018-02-02

最新评论