在Pygame中,需要将所有需要在屏幕上显示的内容都绘制在一个display surface上。该Surface通常称为screen surface,它是pygame.display.set_mode()函数返回的Surface对象。
在绘制不同对象时,可以使用不同的绘制方法。下面介绍一些常用的绘制方法:
绘制图像:
绘制文本:
绘制几何图形:
在Pygame中,不同对象的显示过程如下:
颜色填充:
简单图形:
图片图像:
文字:
在绘制完所有对象后,需要调用pygame.display.flip()或pygame.display.update()函数来更新屏幕显示。flip()函数会将screen surface的内容更新到屏幕上,并清除之前的内容。update()函数只会更新有变化的部分,可以提高程序的运行效率。
总之,在Pygame中,颜色填充只需调用fill()方法,简单图形使用相关绘制函数并指定screen surface为第一个参数,图片图像先加载为image surface再使用blit()方法绘制,文字先渲染为text surface再使用blit()方法绘制。最后需要调用flip()或update()函数更新屏幕显示。
在Pygame中,要移动物体,可以按照以下步骤进行操作:
注意:
- 注意对象的绘制顺序,后绘制的对象会把先绘制的对象覆盖住。
- 注意及时清除屏幕,当在循环中不断绘制某个对象时,若是没有及时清除屏幕,则会导致“重影”现象,特别是在对象移动的情况下;因此在每次重绘时,最好清除屏幕内容,可以利用fill()方法把整个屏幕填充为相同颜色,也可重绘背景图片,具体方法取决于应用场景。
- 注意记得调用pygame.display.flip()或者pygame.display.update()更新屏幕,否则屏幕上什么都不会显示。
具体示例:一个运动的小球
import pygame
pygame.init()
# 设置窗口大小
size = [400, 300]
screen = pygame.display.set_mode(size)
# 设置窗口标题
pygame.display.set_caption("Moving Ball")
# 设置背景颜色
bg_color = (255, 255, 255)
# 设置小球初始位置和速度
ball_pos = [50, 50]
ball_speed = [2, 2]
# 游戏循环
done = False
while not done:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
# 清除屏幕
screen.fill(bg_color)
# 移动小球
ball_pos[0] += ball_speed[0]
ball_pos[1] += ball_speed[1]
# 如果小球碰到边界,就反弹回来
if ball_pos[0] < 0 or ball_pos[0] > size[0]:
ball_speed[0] = -ball_speed[0]
if ball_pos[1] < 0 or ball_pos[1] > size[1]:
ball_speed[1] = -ball_speed[1]
# 绘制小球
pygame.draw.circle(screen, (255, 0, 0), ball_pos, 10)
# 刷新屏幕
pygame.display.flip()
# 控制帧率
pygame.time.Clock().tick(60)
# 退出程序
pygame.quit()
在上面的代码中,首先初始化了Pygame库,创建一个窗口,并设置了窗口标题和背景颜色。
然后定义了小球的初始位置和速度,以及游戏循环中需要处理的事件。
在游戏循环中,首先清除屏幕,然后移动小球的位置,并处理小球碰到边界的情况,使其反弹回来。
接下来,通过pygame.draw.circle()函数绘制了一个红色的小球,
最后通过pygame.display.flip()刷新屏幕,让绘制的内容显示出来。
在每次循环结束后,调用pygame.time.Clock().tick(60)控制帧率,从而保证程序的运行速度不会过快或过慢。
通过上面的代码,实现了一个简单的运动小球,并且可以通过修改参数和添加功能,实现自己想要的效果。