【Python小游戏】Python实现井字棋游戏

2023-11-10

实现过程

类TicTacToe的构造函数__init__()初始化棋盘board和当前玩家current_player。

  1. print_board()方法用于打印当前的棋盘。
  2. make_move(row, col)方法用于让当前玩家落子。
  3. check_win()方法用于检查胜负。
  4. play()方法是整个游戏的主流程,其中包括打印欢迎信息、打印当前的棋盘、让当前玩家落子、检查胜负等步骤。在游戏结束后会打印出结果。最后,创建一个TicTacToe对象并调用play()方法开始游戏。
class TicTacToe:
    def __init__(self):
        self.board = [[' ' for _ in range(3)] for _ in range(3)]
        self.current_player = 'X'
    
    def print_board(self):
        for row in self.board:
            print('|'.join(row))
            print('-' * 5)
    
    def make_move(self, row, col):
        if self.board[row][col] == ' ':
            self.board[row][col] = self.current_player
            self.current_player = 'O' if self.current_player == 'X' else 'X'
        else:
            print("该位置已经被占据,请重新选择!")
    
    def check_win(self):
        # 检查行
        for row in self.board:
            if row[0] == row[1] == row[2] != ' ':
                return True
        
        # 检查列
        for col in range(3):
            if self.board[0][col] == self.board[1][col] == self.board[2][col] != ' ':
                return True
        
        # 检查对角线
        if self.board[0][0] == self.board[1][1] == self.board[2][2] != ' ':
            return True
        if self.board[0][2] == self.board[1][1] == self.board[2][0] != ' ':
            return True
        
        return False
    
    def play(self):
        print("欢迎来到井字棋游戏!")
        print("玩家 X 先开始。")
        print("输入行和列的编号来选择位置(0-2)")
        
        while True:
            self.print_board()
            
            row = int(input("请输入行号:"))
            col = int(input("请输入列号:"))
            
            self.make_move(row, col)
            
            if self.check_win():
                self.print_board()
                print(f"玩家 {self.current_player} 获胜!")
                break
            
            if all(self.board[i][j] != ' ' for i in range(3) for j in range(3)):
                self.print_board()
                print("平局!")
                break


# 创建游戏对象并开始游戏
game = TicTacToe()
game.play()


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Python小游戏】Python实现井字棋游戏 的相关文章

随机推荐

  • JS数组合并(5种)

    前言 项目过程中 经常会遇到 JS 数组合并的情况 时常为这个纠结 这里整理一下 简单而实用的for 最容易想到的莫过于 for 了 会变更原数组 当然也可以写成生成新数组的形式 let arr 1 2 let arr2 3 4 for l
  • window电脑通过vscode的ssh访问linux服务器-详细部署教程

    在本文中将讲述linux服务器 window电脑的详细设置 一步一步部署 教程包括 在linux服务器和window客户端ssh设置 免密设置 xming图像访问 SSH 是为建立在应用层基础上的安全协议 SSH 是目前较可靠 专为远程登录
  • leetcode--python--228

    228 汇总区间 给定一个无重复元素的有序整数数组 nums 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 也就是说 nums 的每个元素都恰好被某个区间范围所覆盖 并且不存在属于某个范围但不属于 nums 的数字 x 列表中的
  • java属于编译型还是解释型语言?

    首先要明白编译型语言和解释型语言的定义 编译型语言 把做好的源程序全部编译成二进制代码的可运行程序 然后直接运行这个程序 特点 执行速度快 效率高 依靠编译器 跨平台性差 解释性语言 把做好的源程序翻译一句 然后执行一句 直至结束 特点 执
  • BSN长话短说之六:公链如何破局

    BSN长话短说之六 公链破局 王立新 感谢各位嘉宾抽出宝贵时间参与这次对话 先简单介绍下今天出席对话嘉宾 红枣科技CEO 何亦凡 Nervos联合创始人 吕国宁 分布科技Onchain CEO Neo创始人 达鸿飞 Algorand Fou
  • 真题详解(地址索引)-软件设计(五十一)

    真题详解 单元测试 软件设计 五十 https blog csdn net ke1ying article details 130189173 spm 1001 2014 3001 5501 指令寻址方式 有四种 直接寻址 寄存器寻址 隐含
  • Rest分发监听接口

    Rest分发监听接口 一 Rest分发接口 1 创建目录 2 New XMLSchema File Name 自己根据接口定义名字 Directory 选择自己接口Schema的路径 Target Namespace 这个路径根据要求 Sc
  • 使用xlrd库读取Excel自定义sheet表内容,以字典格式输出

    如题描述 如何根据自定义的worksheet读取工作表内容呢 对于参数化数据时如果能做到这个是有一定好处的 当然也有其他不同路径的处理方法也是可以的 想要过程完美需要时间打磨的呀 今天分享xlrd库的用法 根据自定义的sheet读取表格内容
  • 图文并茂开发AR小游戏全教程(一)

    AR动画可放大缩小平移旋转 可自行下载项目运行到真机上演示 由于项目以及下文用到的素材较大 GItHub 无法上传 故传到百度云LLGameAR 文章目录 一 AR 和 VR 概念 二 软件简介 Unity 3D Vuforia SDK 三
  • mybatis中resultmap与resulttype区别

    resultmap与resulttype的区别为 对象不同 描述不同 类型适用不同 一 对象不同 1 resultmap resultMap如果查询出来的列名和pojo的属性名不一致 通过定义一个resultMap对列名和pojo属性名之间
  • 编译ARM版本mosquitto-1.6.8

    编译前提依赖 需下载 c ares 1 14 0 下载源码 wget c https c ares haxx se download c ares 1 14 0 tar gz 解压源码 tar zxvf c ares 1 14 0 tar
  • Redis之《狂神说》学习笔记

    一 Nosql 1 为什么使用Nosql 大数据时代 普通的数据库无法进行数据分析 Hadoop 2006 历史发展 1 单机MySQL时代 90年代 一个网站的访问量一般不会太大 单个数据库完全够用 问题 数据量增加到一定程度 单机数据库
  • OTA测试方法解析

    目前 标准的OTA测试系统是SISO 单输入 单输出 如主流的2G 3G和WLAN的802 11a b g等设备 其主要的测试指标是TRP 总辐射功率 和TIS 总全向灵敏度 现代无线技术如LTE HSPA WI FI和WiMAX为了提高数
  • 点云配准、拼接概念综述

    点云扫描设备在对环境进行扫描时 往往不能在同一坐标系下将环境的点云数据一次性测量 其原因是环境大小超过了扫描设备的测量范围 并且环境里的物体之间相互遮挡 点云扫描设备在一个角度不太可能扫描到物体的完整点云 得到多片点云数据后 我们需要一种技
  • File targeting 'AMD64' is not compatible with the project's target platform 'x86' 解决方法

    我在使用vs2010制作64位安装包时出现了以下问题 File targeting AMD64 is not compatible with the project s target platform x86 Error File NGlb
  • 【零基础学QT】文章导航篇

    作者主页 凉开水白菜 作者简介 共同学习 互相监督 热于分享 多加讨论 一起进步 专栏目录 零基础学QT 文章导航篇 专栏资料 https pan baidu com s 192A28BTIYFHmixRcQwmaHw 提取码 qtqt 点
  • STM32 同一定时器 两个通道捕获输入

    上一个帖子 看到有人在评论区问我代码 那我在这里贴一下吧 有需要的收藏 这是定时器 通道2 通道3的写法 定时器2中断服务程序 void TIM2 IRQHandler void if TIM2CH2 CAPTURE STA 0X80 0
  • 神秘的HVV到底是什么?

    1 什么是HVV行动 HVV行动 是国家应对网络安全问题所做的重要布局之一 是由政府统一组织的 网络安全实战攻防演习 通过与进攻方的对抗 企事业单位网络 系统以及设备等的安全能力会大大提高 2 发展 HVV行动 从2016年开始 随着我国对
  • 复盘:第一次面向研发的技术写作培训

    上周我完成了第一次真正意义上的 面向研发人员的技术写作培训 作为一只 在公共场合讲话紧张得要死的人类 整个过程 竟然自我感觉表现得很不错 培训后也收到了研发同事积极 鼓励的反馈 朋友们 我感觉自己膨胀了啊 飘了啊 这么说 恐怕是有点臭屁啦
  • 【Python小游戏】Python实现井字棋游戏

    实现过程 类TicTacToe的构造函数 init 初始化棋盘board和当前玩家current player print board 方法用于打印当前的棋盘 make move row col 方法用于让当前玩家落子 check win