专栏导读

| 文章标题 | 直达链接 |
|---|
| |
| pygam第1课——安装pygame&实现界面 | 点我直达 |
| pygam第2课——pygame加载图片 | 点我直达 |
| pygam第3课——画图小程序 | 点我直达 |
| pygam第3课——画图小程序 | 点我直达 |
| pygam第4课——颜色监测(迷宫小游戏 | 点我直达 |
| pygam第5课——自制音乐播放器 | 点我直达 |
| pygame第6课——贪吃蛇小游戏 | 点我直达 |
| pygame第7课——实现简单一个打砖块游戏 | 点我直达 |
| ppygame第8课——实现简单五子棋小游戏 | 点我直达 |
-
🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手
-
-
-
-
📕 此外还有python基础专栏:请点击——>Python基础学习专栏求订阅
-
文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏
-
❤️ 欢迎各位佬关注! ❤️
1、库的介绍
-
Pygame 是一个开源的 Python 模块,主要用于制作游戏。它提供了一系列的功能,如图形和声音,使开发者可以专注于编写游戏逻辑,而不用过多地担心底层的技术细节。Pygame 基于 SDL (Simple DirectMedia Layer) 库构建,后者是一个跨平台的多媒体库,设计用于直接访问计算机的硬件特性。
主要特点
图形处理:Pygame 提供了创建窗口、加载图像、绘制形状等基本功能,支持透明度、颜色键等高级图形效果。
事件处理:可以轻松处理键盘、鼠标甚至手柄输入,使玩家能够与游戏进行互动。
音效支持:允许加载和播放音乐及音效文件,增加游戏的沉浸感。
物理模拟:虽然 Pygame 本身不是物理引擎,但它提供了基本的碰撞检测功能,可以用来实现简单的物理交互。
跨平台:编写的代码可以在多种操作系统上运行,包括 Windows、MacOS 和 Linux。
简单易学:对于初学者来说,Pygame 的学习曲线相对平缓,是学习游戏开发的好选择。 安装
2、库的安装
| 库 | 用途 | 安装 |
|---|
| pygame | 控制打开Excel的软件 | pip install pygame -i https://pypi.tuna.tsinghua.edu.cn/simple/ |
3、核心代码
① 导入库
关键代码:
import pygame
import random
② 设置窗口界面
初始化 Pygame,定义窗口尺寸,并设置窗口标题。
pygame.init()
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("渐变色彩流星雨")
③ 创建流星类
定义一个 Meteor 类,用于设置流星的起始位置、长度、颜色、速度等属性。
每个流星的颜色、长度、速度都在初始化时随机生成,使得流星效果更自然。
class Meteor:
def __init__(self):
self.x = random.randint(0, WIDTH)
self.y = random.randint(-HEIGHT, 0)
self.length = random.randint(20, 50)
self.color = (random.randint(100, 255), random.randint(100, 255), random.randint(100, 255))
self.speed = random.uniform(3, 6)
④ 更新流星位置
在 Meteor 类中定义 update 方法,让流星沿对角线向下移动。
如果流星超出屏幕边界,则重置其位置和属性,以模拟流星雨的连续效果。
def update(self):
self.x += self.speed
self.y += self.speed
if self.x > WIDTH or self.y > HEIGHT:
self.__init__()
⑤ 绘制流星及渐变尾迹
使用 draw 方法在屏幕上绘制流星,每段流星线段的颜色逐步变暗,以实现渐变效果。
每次循环中的 for 让尾迹分段绘制,从亮色到暗色逐步绘制完成。
def draw(self, screen):
for i in range(10):
fade_color = (
max(0, self.color[0] - i * 15),
max(0, self.color[1] - i * 15),
max(0, self.color[2] - i * 15),
)
start_x = int(self.x - i * self.length * 0.05)
start_y = int(self.y - i * self.length * 0.05)
end_x = int(start_x - self.length * 0.1)
end_y = int(start_y - self.length * 0.1)
pygame.draw.line(screen, fade_color, (start_x, start_y), (end_x, end_y), 2)
⑥ 主循环设置
主程序循环中,清空屏幕背景,更新每个流星的位置和绘制。
clock.tick(60) 控制帧率,避免流星移动过快。
meteors = [Meteor() for _ in range(60)]
clock = pygame.time.Clock()
running = True
while running:
screen.fill((0, 0, 20))
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
for meteor in meteors:
meteor.update()
meteor.draw(screen)
pygame.display.flip()
clock.tick(60)
⑦ 退出 Pygame
退出 Pygame 循环,确保游戏正常关闭。
pygame.quit()
4、完整代码
import pygame
import random
pygame.init()
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("渐变色彩流星雨")
class Meteor:
def __init__(self):
self.x = random.randint(0, WIDTH)
self.y = random.randint(-HEIGHT, 0)
self.length = random.randint(20, 50)
self.color = (
random.randint(100, 255),
random.randint(100, 255),
random.randint(100, 255),
)
self.speed = random.uniform(1, 3)
def update(self):
self.x += self.speed
self.y += self.speed
if self.x > WIDTH or self.y > HEIGHT:
self.__init__()
def draw(self, screen):
for i in range(10):
fade_color = (
max(0, self.color[0] - i * 15),
max(0, self.color[1] - i * 15),
max(0, self.color[2] - i * 15),
)
start_x = int(self.x - i * self.length * 0.05)
start_y = int(self.y - i * self.length * 0.05)
end_x = int(start_x - self.length * 0.1)
end_y = int(start_y - self.length * 0.1)
pygame.draw.line(screen, fade_color, (start_x, start_y), (end_x, end_y), 5)
meteors = [Meteor() for _ in range(60)]
clock = pygame.time.Clock()
running = True
while running:
screen.fill((0, 0, 20))
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
for meteor in meteors:
meteor.update()
meteor.draw(screen)
pygame.display.flip()
clock.tick(60)
pygame.quit()
总结
-
希望对初学者有帮助
-
致力于办公自动化的小小程序员一枚
-
希望能得到大家的【一个免费关注】!感谢
-
求个 🤞 关注 🤞
-
-
求个 ❤️ 喜欢 ❤️
-
-
求个 👍 收藏 👍
-