Pygame教程05:帧动画原理+边界值检测,让小球来回上下运动

2024-03-07 1567阅读

温馨提示:这篇文章已超过391天没有更新,请注意相关的内容是否还可用!

------------★Pygame系列教程★------------

Pygame教程01:初识pygame游戏模块

Pygame教程02:图片的加载+缩放+旋转+显示操作

Pygame教程03:文本显示+字体加载+transform方法

Pygame教程04:draw方法绘制矩形、多边形、圆、椭圆、弧线、直线和线条等

Pygame教程05:帧动画原理+边界值检测,让小球来回上下运动

1.pygame动画的原理:主要基于帧动画的概念。在帧动画中,每一帧都表示动画的一个小部分或状态。通过快速连续地显示这些帧,人眼会将这些帧合并成一个连续的动态效果,这就是动画的基本原理。简单来说,就是通过不断更新和绘制对象的状态,并利用人眼的视觉暂留效应,将连续的帧合并成动态的视觉效果。

要实现动画效果,通常需要做以下几个步骤:

初始化pygame环境。

创建窗口或屏幕对象。

定义动画对象(例如小球、角色等),并为其设置属性(如位置、速度、大小等)。

在一个循环中,不断更新动画对象的状态(例如位置)。

在每一帧中,清除屏幕,然后重新绘制动画对象。

使用pygame.display.flip()或pygame.display.update()刷新屏幕,以显示新的帧。

通过pygame.time.Clock().tick(fps)控制帧率,其中fps表示每秒帧数。帧率决定了动画的流畅度,通常建议至少30fps以获得平滑的动画效果。

2.小球的循环上下运动:我们首先初始化 Pygame,并设置窗口大小。然后,我们定义了一些常量,包括小球的半径、位置和移动速度。在游戏主循环中,我们不断绘制小球,并根据其速度更新其 y 坐标。当小球碰到屏幕顶部或底部时,我们反转其移动方向,从而实现上下移动的效果。

注意,这个示例中的小球会不断在屏幕上下反弹。如果你想要小球只向上或只向下移动,你可以相应地调整 ball_speed 的值和条件判断逻辑。

Pygame教程05:帧动画原理+边界值检测,让小球来回上下运动

# @Author : 小红牛
# 微信公众号:WdPython
import pygame
import sys
# 初始化 Pygame
pygame.init()
# 1.设置窗口大小
screen_width = 400
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))
# 2.设置颜色常量
WHITE = (255, 255, 255)
RED = (255, 0, 0)
# 3.设置小球属性
ball_radius = 20
# 初始位置xy
ball_x = screen_width // 2
ball_y = screen_height // 2
ball_speed = 0.1  # 控制小球移动速度
# 游戏主循环
while True:
    # 处理事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            # 关闭游戏
            pygame.quit()
            sys.exit()
    # 1.清空屏幕
    screen.fill(WHITE)
    # 2.绘制小球
    pygame.draw.circle(screen, RED, (ball_x, ball_y), ball_radius)
    # 上下运动:改变y坐标,更新小球位置
    ball_y -= ball_speed  # 向上移动
    # print(ball_y)
    # 3.边界检测:确保小球不会移出屏幕
    if ball_y  screen_height:  # 反转方向,向上移动
        ball_speed = -ball_speed
    # 4.刷新屏幕显示
    pygame.display.flip()

3.小球左右循环运动:改变小球X坐标,理解屏幕的宽度和小球半径,及移动后的X坐标之间的变化关系,实现边界检测。

# 左右运动:改变x坐标,更新小球位置
    ball_x -= ball_speed  # 向上移动
    # print(ball_x)
    # 边界检测:确保小球不会移出屏幕
    if ball_x  screen_width - ball_radius:  # 反转方向,左移动
        ball_speed = -ball_speed

完毕!!感谢您的收看

----------★★历史博文集合★★----------

Python入门篇 进阶篇 视频教程 Py安装

py项目 Python模块 Python爬虫 Json

Xpath 正则表达式 Selenium Etree Css

Gui程序开发 Tkinter Pyqt5 列表元组字典

数据可视化 matplotlib 词云图 Pyecharts

海龟画图 Pandas Bug处理 电脑小知识

office自动化办公 编程工具 NumPy Pygame

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]