优草派 > 问答 > Python

pygame学习笔记(3):运动速率、时间、事件、文字

作者:ttiger3691     

在前两篇文章中,我们已经学习了pygame的基本概念和操作。本篇文章将继续介绍pygame的一些常用功能,包括运动速率、时间、事件和文字。

一、运动速率

在游戏开发中,经常需要控制游戏中物体的运动速度。pygame中提供了一个Clock对象,可以用来控制游戏的帧率,从而控制物体的运动速度。

Clock对象的tick()方法可以返回距离上一次调用该方法的时间,单位为毫秒。通过将这个时间与希望的帧率进行比较,就可以得到需要等待的时间,从而控制游戏的帧率。

下面是一个简单的例子,演示了如何使用Clock对象控制游戏的帧率:

```python

import pygame

pygame.init()

# 设置屏幕大小和标题

SCREEN_WIDTH = 800

SCREEN_HEIGHT = 600

screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))

pygame.display.set_caption("Game")

# 创建一个Clock对象

clock = pygame.time.Clock()

# 设置帧率

FPS = 60

# 游戏循环

running = True

while running:

# 处理事件

for event in pygame.event.get():

if event.type == pygame.QUIT:

running = False

# 渲染屏幕

screen.fill((255, 255, 255))

pygame.display.update()

# 控制帧率

clock.tick(FPS)

# 退出pygame

pygame.quit()

```

二、时间

在游戏开发中,时间是一个非常重要的概念。pygame中提供了一个time模块,可以用来获取当前时间、延时等操作。

time模块中最常用的函数是pygame.time.get_ticks(),可以返回自pygame.init()以来经过的毫秒数。通过比较两个时间点的差值,可以计算出经过的时间。

下面是一个简单的例子,演示了如何使用time模块实现一个计时器:

```python

import pygame

pygame.init()

# 设置屏幕大小和标题

SCREEN_WIDTH = 800

SCREEN_HEIGHT = 600

screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))

pygame.display.set_caption("Game")

# 创建一个Clock对象

clock = pygame.time.Clock()

# 设置帧率

FPS = 60

# 创建一个Font对象

font = pygame.font.Font(None, 36)

# 计时器

start_time = pygame.time.get_ticks()

# 游戏循环

running = True

while running:

# 处理事件

for event in pygame.event.get():

if event.type == pygame.QUIT:

running = False

# 计算经过的时间

elapsed_time = pygame.time.get_ticks() - start_time

# 渲染屏幕

screen.fill((255, 255, 255))

text = font.render("Time: {}".format(elapsed_time), True, (0, 0, 0))

screen.blit(text, (10, 10))

pygame.display.update()

# 控制帧率

clock.tick(FPS)

# 退出pygame

pygame.quit()

```

三、事件

在pygame中,事件是一个非常重要的概念。游戏中的交互操作(比如按键、鼠标点击等)都可以通过事件来处理。

pygame.event模块提供了一组函数,用于获取和处理事件。其中最常用的函数是pygame.event.get(),可以获取所有未处理的事件。每个事件都是一个pygame.event.Event对象,其中包含事件类型、按键等信息。

下面是一个简单的例子,演示了如何处理按键事件:

```python

import pygame

pygame.init()

# 设置屏幕大小和标题

SCREEN_WIDTH = 800

SCREEN_HEIGHT = 600

screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))

pygame.display.set_caption("Game")

# 创建一个Clock对象

clock = pygame.time.Clock()

# 设置帧率

FPS = 60

# 创建一个Font对象

font = pygame.font.Font(None, 36)

# 游戏循环

running = True

while running:

# 处理事件

for event in pygame.event.get():

if event.type == pygame.QUIT:

running = False

elif event.type == pygame.KEYDOWN:

if event.key == pygame.K_SPACE:

print("Space key pressed")

# 渲染屏幕

screen.fill((255, 255, 255))

pygame.display.update()

# 控制帧率

clock.tick(FPS)

# 退出pygame

pygame.quit()

```

四、文字

在pygame中,可以使用Font对象来渲染文字。Font对象可以从系统字体文件中加载,也可以从.ttf文件中加载。

下面是一个简单的例子,演示了如何使用Font对象渲染文字:

```python

import pygame

pygame.init()

# 设置屏幕大小和标题

SCREEN_WIDTH = 800

SCREEN_HEIGHT = 600

screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))

pygame.display.set_caption("Game")

# 创建一个Font对象

font = pygame.font.Font(None, 36)

# 渲染文字

text = font.render("Hello, world!", True, (0, 0, 0))

# 绘制文字

screen.blit(text, (10, 10))

pygame.display.update()

# 等待用户关闭窗口

running = True

while running:

for event in pygame.event.get():

if event.type == pygame.QUIT:

running = False

pygame.quit()

```

5天短视频训练营
新手入门剪辑课程,零基础也能学
分享变现渠道,助你兼职赚钱
限时特惠:0元
立即抢
新手剪辑课程 (精心挑选,简单易学)
第一课
新手如何学剪辑视频? 开始学习
第二课
短视频剪辑培训班速成是真的吗? 开始学习
第三课
不需要付费的视频剪辑软件有哪些? 开始学习
第四课
手机剪辑app哪个好? 开始学习
第五课
如何做短视频剪辑赚钱? 开始学习
第六课
视频剪辑接单网站APP有哪些? 开始学习
第七课
哪里可以学短视频运营? 开始学习
第八课
做短视频运营需要会什么? 开始学习
相关问题
sql判断字段是否存在
python键值对
for循环可以遍历字典吗
怎么使用vscode
查看更多

客服热线:0731-85127885

湘ICP备19005950号-1  

工商营业执照信息

违法和不良信息举报

举报电话:0731-85127885 举报邮箱:tousu@csai.cn

优草派  版权所有 © 2024