首页 > 编程语言 >Python小游戏3——井字棋

Python小游戏3——井字棋

时间:2024-10-16 14:18:31浏览次数:8  
标签:current 游戏 Python 井字棋 player 小游戏 board print row

表格知识点

知识点类别

具体内容

数据结构

二维数组(列表):游戏板是一个3x3的二维列表

函数

print_board(board):打印游戏板状态

 

check_winner(board, player):检查玩家是否获胜

 

is_board_full(board):检查游戏板是否已满

 

tic_tac_toe():游戏主函数

控制结构

循环:使用while循环重复游戏

 

条件语句:使用if和elif处理不同游戏状态

输入和输出

input():获取玩家输入

 

print():显示游戏信息

异常处理

使用try和except块捕获和处理异常

字符串操作

使用join()方法打印游戏板

逻辑运算

使用all()和列表推导式检查胜利条件

变量作用域

变量(current_player, board)的作用域和用途

游戏逻辑

玩家轮流输入、检查输入有效性、更新游戏板状态、检查胜利/平局

 

如何运行这个游戏


  1. 确保你已经安装了Python(建议版本3.x)。
  2. 将上述代码复制到一个新的Python文件中,例如tic_tac_toe.py
  3. 在命令行或终端中导航到保存该文件的目录。
  4. 运行该文件:python tic_tac_toe.py(对于Windows用户,可能需要使用py tic_tac_toe.py,具体取决于你的Python安装和配置)。

     


游戏玩法


  • 游戏开始时,显示一个空的3x3网格。
  • 玩家轮流输入行号和列号来放置他们的标记(“X”或“O”)。
  • 如果一个玩家在水平、垂直或对角线上连续放置了三个相同的标记,则他们获胜。
  • 如果所有位置都被占用且没有玩家获胜,则游戏为平局。

    代码


    def print_board(board):  

        for row in board:  

            print("|".join(row))  

            print("-" * 5)  

      

    def check_winner(board, player):  

        # 检查行  

        for row in board:  

            if all([cell == player for cell in row]):  

                return True  

        # 检查列  

        for col in range(3):  

            if all([board[row][col] == player for row in range(3)]):  

                return True  

        # 检查对角线  

        if all([board[i][i] == player for i in range(3)]) or all([board[i][2-i] == player for i in range(3)]):  

            return True  

        return False  

      

    def is_board_full(board):  

        return all([cell != ' ' for row in board for cell in row])  

      

    def tic_tac_toe():  

        board = [[' ' for _ in range(3)] for _ in range(3)]  

        current_player = 'X'  

      

        while True:  

            print_board(board)  

            try:  

                row = int(input(f"玩家 {current_player},请输入你要放置 {current_player} 的行号 (0, 1, 2): "))  

                col = int(input(f"玩家 {current_player},请输入你要放置 {current_player} 的列号 (0, 1, 2): "))  

      

                if board[row][col] != ' ':  

                    print("这个位置已经被占用,请选择另一个位置。")  

                    continue  

      

                board[row][col] = current_player  

      

                if check_winner(board, current_player):  

                    print_board(board)  

                    print(f"玩家 {current_player} 获胜!")  

                    break  

      

                if is_board_full(board):  

                    print_board(board)  

                    print("平局!")  

                    break  

      

                current_player = 'O' if current_player == 'X' else 'X'  

            except (ValueError, IndexError):  

                print("无效输入,请输入0, 1, 或2作为行号或列号。")  

      

    if __name__ == "__main__":  

        tic_tac_toe()

 

标签:current,游戏,Python,井字棋,player,小游戏,board,print,row
From: https://blog.csdn.net/cxh666888_/article/details/142905884

相关文章

  • python练习题
    一.猜拳游戏​importrandomprint("请输入:剪刀(0)、石头(1)、布(2),三种中的任意一个数字!!!")a=float(input("请输入数字:"))ifa>=0anda<=2:print("您的输入为:",a)b=random.randint(0,2)print("随机生成数字为:",b)ifa=......
  • Python实现K近邻算法:面向对象的思路与详细案例解析
    目录Python实现K近邻算法:面向对象的思路与详细案例解析引言一、K近邻算法的基本原理1.1K近邻算法的核心思想1.2距离度量1.3K的选择二、面向对象的KNN实现2.1类设计2.2Python代码实现2.3代码详解三、案例分析3.1案例一:鸢尾花分类问题描述数据准备模型训练与预测......
  • Python实现朴素贝叶斯算法:面向对象的思路与详细案例解析
    目录Python实现朴素贝叶斯算法:面向对象的思路与详细案例解析引言一、朴素贝叶斯算法的基本原理1.1贝叶斯定理1.2朴素假设二、面向对象的朴素贝叶斯实现2.1类设计2.2Python代码实现朴素贝叶斯分类器实现2.3代码详解三、案例分析3.1案例一:鸢尾花分类问题描述数据......
  • python基础篇(变量)
    学习目标:python语言中的变量Listitempython语言中,变量主要用来表示和保存数据,可随时命名,随时赋值和随时使用。变量赋值可以通过’='来实现。语法如下:一.变量名=value例如:#将HelloWorld赋值给变量名messagemessage=“HelloWorld”print(message)二.关键字与......
  • 创建阿里云函数计算中的层(python运行时)
    来源:使用层功能管理依赖减少代码包体积并实现代码复用_函数计算(FC)-阿里云帮助中心(aliyun.com)层可以为您提供公共依赖库、运行时环境及函数扩展等发布与部署能力。您可以将函数依赖的公共库提炼到层或者使用函数计算官方公共层,以减少部署或更新函数时的代码包体积。功能原理......
  • (开题)flask框架汽车维修服务系统(程序+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着汽车保有量的持续增长,汽车维修服务行业迎来了前所未有的发展机遇。然而,传统的汽车维修服务模式存在管理效率低下、信息不透明、配件采......
  • (开题)flask框架人文学子考研交流平台(程序+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于人文学子考研交流平台的研究,现有研究主要以考研整体情况或特定学科考研情况为主,专门针对人文学子这一特定群体的考研交流平台的研......
  • 【计算机毕业设计选题推荐】 基于Python的人事管理系统的设计与实现 【附源码+数据库+
    ✍✍计算机毕设编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、小程序、大数据实战项目集⚡⚡文末获取......
  • 【计算机毕设选题推荐】基于Python的考研学习系统的设计与实现 【附源码+部署+讲解】
    ✍✍计算机毕设编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、小程序、大数据实战项目集⚡⚡文末获取......
  • 【25届计算机毕设选题推荐】 基于Python的热门微博数据可视化分析的设计与实现 【附源
    ✍✍计算机毕设编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、小程序、大数据实战项目集⚡⚡文末获取......