pygame教程实例(一)小球弹跳

本教程使用python3

推荐一个python基础教程


1.导入pygame

import pygame
import os

如果你没有安装pygame

  • 使用pip安装:pip3 install pygame

  • 或使用国内镜像:

pip3 install pygame -i https://mirrors.aliyun.com/pypi/simple


2.创建pygame窗体

1.我们先定义一些必要的全局变量

WINDOW_W, WINDOW_H = 640, 480  # 窗体尺寸
FPS = 50  # 帧率,即每秒刷新多少次
g = 9.8 * 100  # 重力加速度(我们用的单位是像素每二次方秒)

2.创建窗体

pygame.init()  # 初始化pygame
# 设置窗口出现的位置
os.environ['SDL_VIDEO_WINDOW_POS'] = "%d,%d" % (200,100)
# 创建一个窗口
screen = pygame.display.set_mode((WINDOW_W, WINDOW_H), pygame.DOUBLEBUF, 32)
# 设置窗口标题
pygame.display.set_caption("hello,world!")
# 创建时钟对象 (可以控制游戏循环频率)
clock = pygame.time.Clock()
  • set_mode(resolution=(0,0), flags=0, depth=0)
    • resolution:窗体的宽和高

    • flags:附件选项的集合

      选项含义
      pygame.FULLSCREEN全屏显示
      pygame.DOUBLEBUF双缓冲模式(推荐和 HWSURFACE 或 OPENGL 一起使用)
      pygame.HWSURFACE硬件加速,只有在 FULLSCREEN 下可以使用
      pygame.OPENGL创建一个 OPENGL 渲染的显示
      pygame.RESIZABLE创建一个可调整尺寸的窗口
      pygame.NOFRAME创建一个没有边框和控制按钮的窗口
    • depth:使用的颜色深度

  • 更多pygame.display模块介绍见https://fishc.com.cn/thread-62164-1-1.html

3.游戏主循环

if __name__ == '__main__':
    x, y = WINDOW_W/2, 10   # 球的坐标
    vx, vy = 0, 0  # 球在x,y方向上的速度
    # 游戏主循环
    while True:
        # 遍历事件
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                # 接收到退出事件后退出程序
                exit()

        # 小球下一时刻的速度、位置计算
        vy += g * 1/FPS
        x += vx * 1/FPS
        y += vy * 1/FPS
        if y >= WINDOW_H-10:
            # 到达地面则是其竖直速度反向
            vy = -vy

        # 将背景图画上去(0,0,0)为RGB颜色
        screen.fill((0, 0, 0))
        # 根据球的坐标画圆
        pygame.draw.circle(screen, (255, 0, 0), (int(x), int(y)), 10)

        # 刷新画面
        pygame.display.update()
        # 设置FPS
        time_passed = clock.tick(FPS)

我们使用while True 来不断循环,每次循环都做三件事:响应事件、计算下一时刻状态、重画画面。

4.最终效果

这个gif看起来很卡,实际上运行很流畅
球.gif
下一篇:pygame教程实例(二)模拟三体

  • 14
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值