文章目录
- 简介
- 时钟对象
- 平抛运动
pygame系列:初步💎加载图像💎图像变换💎直线绘制
简介
之前在更新图形的时候,为了调控死循环的响应时间,用到了time.sleep。而实际上,我们并不需要额外导入其他包,pygame就提供了time模块,用以调控游戏的帧率。
time中主要有下面几种
方法和类 | |
---|---|
get_ticks | 获取pygame初始化后的毫秒数 |
wait(milliseconds) delay(milliseconds) | 延时,前者更轻量,后者更精确 |
set_timer | 重复创建事件队列中的事件 |
Clock | 时钟对象 |
时钟对象
Clock是time模块中的时钟类,封装了下列方法
方法 | |
---|---|
tick, tick_busy_loop | 更新时钟,前者更轻量,后者更精确 |
get_time, get_rawtime | 上一次tick的毫秒数 |
get_fps | 计算时钟帧率 |
下面简单测试一下时钟类
import pygame as pgc = pg.time.Clock()
c.tick() # 5
c.tick_busy_loop() # 1
c.get_time() # 1
平抛运动
接下来,用time模块将平抛运动重做一次,代码如下
import pygame as pgpg.init()size = width, height = 640, 320
speed = [10, 0]screen = pg.display.set_mode(size)ball = pg.image.load("intro_ball.gif")
rect = ball.get_rect()th = 0
while True:if pg.QUIT in [e.type for e in pg.event.get()]:pg.quit()breakpg.time.delay(20)rect = rect.move(speed)if rect.right>width:speed = [10, 0]rect = ball.get_rect()if rect.bottom>height:speed[1] = -speed[1]speed[1] += 1th += 5screen.fill("black")screen.blit(pg.transform.rotate(ball, th), rect)pg.display.flip()
效果如下