用python写个三子棋游戏

下面是一个简单的三子棋游戏的Python代码示例。在这个游戏中,玩家需要使用鼠标点击来放置棋子,并尽可能地使自己的三个棋子连成一线(横、竖或斜)。

python
复制代码
import pygame  
import random  
  
# 初始化pygame  
pygame.init()  
  
# 设置屏幕大小和标题  
screen_width = 800  
screen_height = 600  
screen = pygame.display.set_mode((screen_width, screen_height))  
pygame.display.set_caption("三子棋游戏")  
  
# 设置颜色  
WHITE = (255, 255, 255)  
BLACK = (0, 0, 0)  
RED = (255, 0, 0)  
GREEN = (0, 255, 0)  
  
# 设置棋盘大小和棋子大小  
board_width = 16  
board_height = 16  
tile_size = 30  
margin = 10  
  
# 创建棋盘和棋子列表  
board = [[0 for _ in range(board_width)] for _ in range(board_height)]  
tiles = []  
for row in range(board_height):  
    for col in range(board_width):  
        x = margin + col * tile_size + tile_size // 2  
        y = margin + row * tile_size + tile_size // 2  
        tiles.append((x, y))  
  
# 游戏主循环  
running = True  
while running:  
    for event in pygame.event.get():  
        if event.type == pygame.QUIT:  
            running = False  
        elif event.type == pygame.MOUSEBUTTONDOWN:  # 如果点击了鼠标左键,则放置棋子并检查是否获胜  
            mouse_x, mouse_y = pygame.mouse.get_pos()  
            row = (mouse_y - margin) // tile_size + 1  
            col = (mouse_x - margin) // tile_size + 1  
            if board[row][col] == 0:  # 如果该位置没有棋子,则放置棋子并检查是否获胜  
                board[row][col] = 1  # 放置白棋子(玩家1)  
                if check_win(board, row, col, 1):  # 检查是否获胜(玩家1)胜出  
                    pygame.font.init()  # 初始化字体模块(如果之前没有初始化)  
                    font = pygame.font.SysFont("Arial", 36)  # 创建字体对象(36号字体)  
                    text = font.render("玩家1胜出!", True, GREEN)  # 创建获胜提示文本对象(绿色字体)  
                    screen.blit(text, (20, 20))  # 在屏幕上显示获胜提示文本(左上角位置)  
                    pygame.display.flip()  # 更新屏幕显示内容  
                    running = False  # 结束游戏循环(获胜)  
                else:  # 如果玩家1没有获胜,则轮到玩家2下棋(交替下棋)  
                    pygame.time.wait(1000)  # 等待1秒钟(等待时间可调整)  
                    board[row][col] = -1  # 放置黑棋子(玩家2)  
                    if check_win(board, row, col, -1):  # 检查是否获胜(玩家2)胜出  
                        pygame.font.init()  # 初始化字体模块(如果之前没有初始化)  
                        font = pygame.font.SysFont("Arial", 36)  # 创建字体对象(36号字体)  
                        text = font.render("玩家2胜出!", True, RED)  # 创建获胜提示文本对象(红色字体)  
                        screen.blit(text, (20, 20))  # 在屏幕上显示获胜提示文本(左上角位置)  
                        pygame.display.flip()  # 更新屏幕显示内容  
                        running = False  # 结束游戏循环(获胜)  
            else:  # 如果该位置已经有棋子,则不放置棋子(无法重复下棋)  
                pygame.font.init()  # 初始化字体模块(如果之前没有初始化)  
                font = pygame.font.SysFont("Arial", 24)  # 创建字体对象(24号字体)  
                text

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/613984.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iptables TEE模块测试小记

概述 因为公司项目需求,需要对服务器特定端口进行流量镜像,各种百度之后,发现TEE的模块,后来一番折腾,发现被转发的机器死活收不到数据,最后tcpdump一通了解到根源,博文记录,用以备…

极客时间-读多写少型缓存设计

背景 内容是极客时间-徐长龙老师的高并发系统实战课的个人学习笔记,欢迎大家学习!https://time.geekbang.org/column/article/596644 总览内容如下: 缓存性价比 一般来说,只有热点数据放到缓存才更有价值 数据量查询频率命中…

力扣289. 生命游戏

模拟 染色 思路: 可以复制一个表格,然后根据规则两层循环模拟出结果,但是空间复杂度太高;可以复用原有数组,对其进行染色标记; 最终状态是活的标记值 > 1,还原标记值时可以使用规则 val &g…

MongoDB聚合:$bucketAuto

按照指定的表达式对输入文档进行分类后放入指定数字的桶中&#xff0c;跟$bucket不太一样&#xff0c;$bucketAuto可以指定分组的数量&#xff08;颗粒度&#xff09;&#xff0c;$bucketAuto会根据groupBy的值和颗粒度自动生成桶的边界。 语法 {$bucketAuto: {groupBy: <…

java基础之异常练习题

异常 1.Java 中所有的错误/异常都继承自 Throwable类&#xff1b;在该类的子类中&#xff0c; Error 类表示严重的底层错误&#xff0c; 对于这类错误一般处理的方式是 直接报告并终止程序 &#xff1b; Exception 类表示异常。 2.查阅API&#xff0c;完成以下填空&#xff1a;…

leetcode动态规划(零钱兑换II、组合总和 Ⅳ)

518.零钱兑换II 给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。 示例 1: 输入: amount 5, coins [1, 2, 5] 输出: 4 解释: 有四种方式可以凑成总金额: 55 5221 52111 511111 示例 2: 输入: amount 3, coi…

【江科大STM32单片机】day1点亮LED灯流水灯蜂鸣器

知识点 推挽模式&#xff1a;高-》低、低-》高电平都能驱动 开漏模式&#xff1a;只能低-》高电平能驱动&#xff0c;高电平相当于高阻态 GPIO_WriteBit 操作单个 GPIO_ResetBits 操作同组 3-2 led闪烁 配置相关驱动 USE_STDPERIPH_DRIVER 配置输出文件格式debug配置slink勾选…

华为认证 | HCIE自学通过率有多高?

01 什么是HCIE认证&#xff1f; HCIE&#xff08;Huawei Certified ICT Expert 华为认证 ICT 专家&#xff09;是华为认证体系中最高级别的 ICT 技术认证&#xff0c;表示通过认证的人具有ICT 领域专业知识和丰富实践经验。 02 HCIE考试可以自学吗&#xff1f; HCIE考试可以自…

Leetcode242.有效的字母异位词

文章目录 原题链接思路1&#xff08;字符串排序后比较&#xff09;代码1思路2&#xff08;哈希表&#xff09;代码2 原题链接 Leetcode242.有效的字母异位词 思路1&#xff08;字符串排序后比较&#xff09; t 是 s 的字母异位词 等价于 将 t 和 s 排序后&#xff0c;两个字符串…

基于Springboot的课程答疑系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的课程答疑系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

Python知识点(史上最全)

Python期末考试知识点&#xff08;史上最全&#xff09; python简介 Python是一种解释型语言 Python使用缩进对齐组织代码执行&#xff0c;所以没有缩进的代码&#xff0c;都会在载入时自动执行 数据类型&#xff1a;整形 int 无限大 浮点型 float…

小程序基础学习(组件化)

&#xff08;一&#xff09;创建 找到components文件夹下面创建新的文件夹 然后再文件夹内创建component格式的文件 创建后这样 我创建的是my-info的文件夹以及my-info的components文件&#xff0c;跟着普通的页面一样 &#xff08;二&#xff09; 注册组件 找到你需要使用组…

Android Debug Bridge(ADB)常用指令记录

ADB简介 Android Debug Bridge&#xff08;ADB&#xff09;是用于在计算机和 Android 设备之间进行通信和调试的命令行工具。它提供了一组命令&#xff0c;可以帮助执行各种与 Android 设备相关的操作&#xff0c;如安装应用程序、调试应用程序、访问设备的文件系统等。 下载…

392. 判定子序列

给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符而不改变剩余字符相对位置形成的新字符串。&#xff08;例如&#xff0c;"ace"是"abcde"的一个子序列&#…

轴承故障诊断系统的需求说明,仅供参考使用

项目名称&#xff1a;轴承故障诊断系统 项目目标 开发一个自动化系统&#xff0c;用于测试和诊断工业轴承的潜在故障。系统将通过分析从轴承收集的振动数据来检测异常模式&#xff0c;以预测故障并提供维护建议。 硬件需求 传感器&#xff1a;高精度振动传感器&#xff0c;…

微信小程序-----宿主环境(组件介绍和代码编写)

目录 前言 宿主环境简介 1. 什么是宿主环境 ​编辑 2.小程序的宿主环境 3. 小程序宿主环境包含的内容 一、通信模型 1. 通信的主体 2. 小程序的通信模型 二、运行机制 1.小程序启动的过程 2.页面渲染的过程 三、组件 常用的视图容器类组件 1.view 组件 2.scroll-…

RK3399平台入门到精通系列讲解(驱动篇)eventpoll结构体详解

🚀返回总目录 文章目录 一、eventpoll 结构体二 、epitem 结构体三、eppoll_entry 结构体eventpoll 结构体:eventpoll 结构体是 epoll 在内核中的核心结构epitem 结构体:epitem 结构体用于表示 epoll 实例中的事件项eppoll_entry 结构体:它的作用就是关联Socket等待队列中…

OpenXP(Windows Server 2003 RTM,NT 5.2.3790.0)构建指南

OpenXP&#xff08;Windows Server 2003 RTM&#xff0c;NT 5.2.3790.0&#xff09;构建指南 版本 11&#xff0c;最后更新于 2023 年 10 月 1 日 Discord |信使极客 注意 OpenXP&#xff08;Windows Server 2003 RTM&#xff0c;NT 5.2.3790.0&#xff09;构建指南 (rentry…

Leetcode16-有多少小于当前数字的数字(1365)

1、题目 给你一个数组 nums&#xff0c;对于其中每个元素 nums[i]&#xff0c;请你统计数组中比它小的所有数字的数目。 换而言之&#xff0c;对于每个 nums[i] 你必须计算出有效的 j 的数量&#xff0c;其中 j 满足 j ! i 且 nums[j] < nums[i] 。 以数组形式返回答案。…

MES数据采集在制造业的应用

MES设备数据采集的流程包括以下几个步骤&#xff1a; 1. 设备接入&#xff1a;将设备接入MES系统&#xff0c;建立设备与MES系统之间的连接。 2. 数据采集&#xff1a;通过传感器和采集器等设备&#xff0c;采集设备运行数据和状态信息。 3. 数据存储&#xff1a;将采集到的设…