Pygame动画制作进阶(可直接运行,附核心原理)

一、动画核心原理(新手必懂)

Pygame动画本质是"帧刷新+位置偏移":循环中不断更新图形坐标,每次刷新界面覆盖旧图形,视觉上形成运动效果,核心3要素:循环持续运行、坐标逐帧变化、每次刷新界面。


二、实战3:2个基础动画案例(易上手,秒懂逻辑)

  • 案例1:匀速移动的矩形(直线动画)

核心:循环内持续修改矩形x坐标,实现水平移动,碰到窗口边界回弹,完整可运行代码如下:

import pygame

import sys

1. 初始化+窗口设置

pygame.init()

screen = pygame.display.set_mode((600, 400))

pygame.display.set_caption("矩形匀速移动动画")

bg_color = (245,245,245)

2. 矩形初始参数(x/y坐标、宽高、移动速度)

rect_x = 50 # 初始x坐标

rect_y = 150 # 初始y坐标

rect_w = 80 # 矩形宽度

rect_h = 50 # 矩形高度

speed = 2 # 移动速度(像素/帧)

running = True

while running:

screen.fill(bg_color) # 填充背景(覆盖上一帧图形)

事件监听(关闭窗口)

for event in pygame.event.get():

if event.type == pygame.QUIT:

running = False

3. 核心:更新矩形坐标+边界回弹

rect_x += speed

碰到左右边界,速度取反实现回弹

if rect_x <=0 or rect_x + rect_w >=600:

speed = -speed

绘制当前帧矩形(蓝框黄底)

pygame.draw.rect(screen, (255,255,0), (rect_x, rect_y, rect_w, rect_h))

pygame.draw.rect(screen, (0,0,255), (rect_x, rect_y, rect_w, rect_h), 2)

pygame.display.flip() # 刷新界面,显示当前帧

pygame.time.Clock().tick(60) # 帧率60(每秒60帧,动画更流畅)

退出程序

pygame.quit()

sys.exit()

  • 案例2:鼠标跟随的圆形(交互动画)

核心:循环内实时获取鼠标坐标,将圆形圆心绑定鼠标位置,实现跟随效果

import pygame

import sys

初始化+窗口设置

pygame.init()

screen = pygame.display.set_mode((600, 400))

pygame.display.set_caption("鼠标跟随圆形动画")

bg_color = (245,245,245)

circle_color = (255,0,0) # 红色圆形

radius = 25 # 圆形半径

running = True

while running:

screen.fill(bg_color)

事件监听

for event in pygame.event.get():

if event.type == pygame.QUIT:

running = False

核心:实时获取鼠标坐标,作为圆心

mouse_pos = pygame.mouse.get_pos() # 获取鼠标(x,y)坐标

pygame.draw.circle(screen, circle_color, mouse_pos, radius) # 绘制跟随圆形

pygame.display.flip()

pygame.time.Clock().tick(60)

pygame.quit()

sys.exit()


三、动画进阶技巧(避坑+优化)

1. 帧率控制: pygame.time.Clock().tick(60) 固定60帧,避免不同电脑动画速度不一致

2. 边界判断:通过窗口尺寸(如600x400)计算图形边界,防止图形移出窗口

3. 多图形动画:给每个图形单独设置坐标、速度变量,循环内分别更新即可

4. 颜色优化:用RGB元组(如(255,165,0)橙色)自定义颜色,比默认颜色更灵活


四、拓展方向(新手可直接尝试)

- 给移动矩形加颜色变化:循环内修改矩形填充色RGB值

- 多圆形跟随:绘制多个不同颜色、不同半径的圆形,都绑定鼠标坐标

- 变速动画:让speed变量随时间变化,实现加速/减速移动

相关推荐
冰暮流星4 分钟前
flask之app.py讲解
后端·python·flask
大气的小蜜蜂6 分钟前
基于Python+PyQt5+SQLite的药房管理系统实现:事务一致性与界面解耦全流程解析
python·qt·sqlite
程序员杰哥42 分钟前
接口自动化测试项目框架详解
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
love530love1 小时前
AI Agent + 本地 ComfyUI 无头模式实战:关闭 IDE 后 AI 独立重启并完成图文生成
ide·人工智能·windows·python·音视频·agent·devops
FriendshipT1 小时前
Ultralytics:解读Attention模块
人工智能·pytorch·python·深度学习·目标检测
许彰午1 小时前
73_Python爬虫Scrapy框架入门
爬虫·python·scrapy
@realXuan1 小时前
人工智能AI编程 Agent 入门系列教程之 Claude Code 是什么
人工智能·python·ai编程
孤狼warrior1 小时前
从冒泡到传送带流水线:一个3D沉浸式算法靶场,让思想的伟力改变世界
python·算法·typescript
搬砖柯1 小时前
系列11-测试平台 MCP Server 实践:用 Kimi Code 自然语言查项目、跑 API 回归
人工智能·python·ai·开源·自动化
向阳是我1 小时前
在 Mac(M2)上用 faster-whisper 实现高精度中文语音转文字
python·macos·ai·whisper·语音识别