Pygame入门:从零创建游戏窗口与角色控制
它是一个现在比较流行的一个跨平台模块, 这个模块是专门为了电子游戏才做出来用的, 它给提供了做游戏需要用到的图形库和声音库。要想开始用这个模块的话, 你需要已经具备了那些相关的基础知识, 并且要把这个模块已经在你的系统上头安装好了。咱们在第一步得先把东西装好, 具体做法就是用 pip 命令去弄, 也就是执行: pip。等到这安装的事儿圆满搞定了, 接下来就能动手整出一个最基本的那种游戏窗口了。import pygamepygame.init()# 设置屏幕大小screen pygame.display.set_mode((800, 600))# 设置标题pygame.display.set_caption(我的游戏)# 游戏主循环running Truewhile running:for event in pygame.event.get():if event.type pygame.QUIT:running False# 退出游戏前清理Pygame资源pygame.quit()​在当中, 所有互动都是通过事件来进行处理的。上面的那个主循环会一直不停地运转, 等着接收并处理那些事件, 比如有退出的这种游戏行为。而每一次迭代进行的时候, 游戏都会去查一遍事件的这个队列里都有些什么。然后, 大家能够在电脑显示器的区域里面把某些东西给画出来。在这个环节里面, 各位能够应用不少种不同的操作方式来完成图形的制作或者是图片内容的读取工作, 最终把这些东西呈现在屏幕上面去。# 设置颜色WHITE (255, 255, 255)# 游戏主循环while running:screen.fill(WHITE) # 填充背景色for event in pygame.event.get():if event.type pygame.QUIT:running Falsepygame.display.update() # 更新屏幕显示​必须要确保你在主循环里面包含了那两个函数, 也就是写成..()或者..flip的样子, 这样干的话, 就能让屏幕的显示内容得到及时的更新。随后, 我们要去执行添加角色以及移动这两个操作。在一般情况下, 我们会倾向于使用类这个东西来对游戏里面的角色进行管理工作, 具体是怎么弄的呢?class Player():def __init__(self):self.image pygame.image.load(player.png)self.x 370self.y 480self.x_change 0def draw(self, screen):screen.blit(self.image, (self.x, self.y))def move(self):self.x self.x_changeplayer Player()# 在游戏主循环中while running:screen.fill(WHITE) # 填充背景色player.move()player.draw(screen)for event in pygame.event.get():if event.type pygame.QUIT:running Falseif event.type pygame.KEYDOWN:if event.key pygame.K_LEFT:player.x_change -0.3if event.key pygame.K_RIGHT:player.x_change 0.3if event.type pygame.KEYUP:if event.key pygame.K_LEFT or event.key pygame.K_RIGHT:player.x_change 0pygame.display.update() # 更新屏幕显示对于这个例子来说, 我们要实现的功能是, 只要玩家们一直按着那个箭头方向的关键按钮不动, 角色就会继续往前跑, 但是一旦玩家们把爪子松开不再按了, 就得立刻停下来, 不能让它乱动。游戏通常也需要一个得分系统, 而且还需要对游戏结束的情况进行处理。通常情况下,这一过程会涉及到监测物体的碰撞情况, 并且在检测到碰撞时增加分数, 或者当游戏最终结束时进行必要的清理工作。# 游戏结束函数简例def game_over():font pygame.font.Font(freesansbold.ttf, 64)text font.render(游戏结束, True, (255, 0, 0))screen.blit(text, (200, 250))# 在游戏主循环的适当位置调用game_over# 游戏结束条件检查# 如果游戏结束了game_over()在实打实的操作过程里, 你有可能需要去搭建一些更加复杂的类以及函数, 好用来处理游戏里面的分数、剩余生命值、各种敌人以及其他与游戏相关的机制。这里需要你好好记住的一件事是, 在游戏开发里面绝大多数的逻辑运算内容, 都应当被封装在一个所谓的游戏循环里面去运行, 并且还要通过检查各种事件的变化以及更新游戏当前的状态来进行管理操作。。在游戏的设计阶段, 还有游戏的开发过程之中, 请你去确保那个代码的结构是属于良好的那种样子的, 这样做的话, 等到以后项目的复杂度变高了之后, 你就能保持一个清晰的开发思路了, 另外呢, 注释和文档也属于非常重要的一部分内容, 它们不仅可以帮你去回忆你的那些代码到底是具备什么样的功能的, 同时它们也可以帮助其他的人去理解你写出来的这些代码究竟是什么回事。

相关新闻

Oracle多租户PDB自动化备份脚本:RMAN备份与清理实践

Oracle多租户PDB自动化备份脚本:RMAN备份与清理实践

刚接手一套多租户环境时,我的第一反应是先把备份体系搭起来。可看了半天,发现之前的备份方式还是最原始的expdp逻辑导出:所有PDB逐个手工执行,导出文件散落在各台机器上,没人记得清理。结果磁盘被撑爆过两次&#xff0…

2026/10/19 12:09:21 阅读更多 →
手脑分离与边界治理:企业级 Agent 平台的总体架构设计

手脑分离与边界治理:企业级 Agent 平台的总体架构设计

在本地终端环境中,开发者早已习惯使用 Claude Code、Cursor 或各类命令行 Agent 进行自主编码与系统运维。模型推理循环与操作系统的 Shell、文件系统和环境变量运行在同一台宿主机上,通过本地进程树与内存字典直接驱动。这种“脑与手同机”的拓扑&#…

2026/10/19 12:09:21 阅读更多 →
Kimi K3写评论文案四轮五版全翻车:病根不在模型,在机制

Kimi K3写评论文案四轮五版全翻车:病根不在模型,在机制

摘要让Kimi K3写抖音评论引流话术,四轮五版全被我打回;同一需求发给豆包,两到三轮接近达标。复盘拆出身份锚定、收敛机制、火力分配三层病根,收场靠一句话身份声明加一条26字声口锚点。文末附给AI派"感觉类"活的四条纪律。昨天下午,我干了件自以为很简单的事:让军师写…

2026/10/19 12:09:21 阅读更多 →

最新新闻

基于Socket的TCP Linux聊天系统实战:从协议设计到文件传输

基于Socket的TCP Linux聊天系统实战:从协议设计到文件传输

做过Linux网络编程的人,大概率都自己动手写过聊天程序。但很多人的练习项目在“能收发字符串”这一步就停了,再往上基本就是查文档、复制粘贴、能跑就算完。这里想完整分享一个我自己完整搭过的项目,基于Socket的TCP协议Linux聊天系统&#x…

2026/10/19 14:17:57 阅读更多 →
CLI驱动的Git原生代码审查工具open-code-review

CLI驱动的Git原生代码审查工具open-code-review

1. 项目概述:这不是又一个“AI写代码”玩具,而是一套可嵌入开发流程的轻量级代码审查协作者 “open-code-review”这个名字乍一听像某个开源项目仓库名,但拆开来看——open(开放)、code(代码)、…

2026/10/19 14:17:57 阅读更多 →
2025 CTF备赛必备:BurpSuite与IDA核心使用要点

2025 CTF备赛必备:BurpSuite与IDA核心使用要点

2025年的CTF备赛圈里,话题绕不开两个名字:BurpSuite和IDA。前者是Web方向拦截分析流量的标准装备,后者是逆向方向打开二进制文件的默认入口。只要你想认真打CTF,这两把刀迟早要上手。不过我这两年带队伍、带新人的过程中发现一个很…

2026/10/19 14:17:57 阅读更多 →
open-code-review:面向人脑认知的可解释代码审查系统

open-code-review:面向人脑认知的可解释代码审查系统

1. 项目概述:这不是又一个代码审查工具,而是一次对“人如何协作理解代码”的重新建模 “open-code-review”这个名字乍听像某个开源项目的代号,但拆开来看——open,不是指“开源”,而是指“开放性”;code r…

2026/10/19 14:17:57 阅读更多 →
Docker容器化Python环境:Dockerfile与compose最佳实践

Docker容器化Python环境:Dockerfile与compose最佳实践

说实话,做了这么多年开发,每次新同事入职、或者我自己换台电脑重新拉项目,最头疼的都不是业务代码本身,而是Python环境那一堆破事:解释器版本对不上、某个包编译报错缺系统库、全局site-packages被各种项目依赖搅成一锅…

2026/10/19 14:17:57 阅读更多 →
基于Atlas的MySQL读写分离与分库分表实践指南

基于Atlas的MySQL读写分离与分库分表实践指南

1. 项目整体设计与适用场景解析1.1 这个项目到底解决什么问题做后端开发的人应该都有这种感觉:业务量一上来,数据库最先扛不住。单库单表跑到一定量级,写入并发和查询延迟都会明显恶化,这时候大部分人第一反应是上缓存、做读写分离…

2026/10/19 14:16:37 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →