Python之pygame让图形动起来(4) |
您所在的位置:网站首页 › 图形的运动画图怎么画 › Python之pygame让图形动起来(4) |
pygame移动图形 上篇说到绘制图形,今天我们把绘制的图形进行移动! 说起移动图形,我们需要了解下相关的知识! 绘制的参数里面第一个是绘制的 “表面”; 水平是X轴, 垂直是Y轴, ![]() 这个“表面”我们可以当做一个画布,我们在上面绘制我们需要的形状; ![]() 绘制完成后,我们更新下画板图像就展现在我们面前了。 要我们图像动起来,那么就一次次的绘制我们想要移动的图形,并且更新画面就可以了! ![]() 我们想象中的效果: ![]() 但是 如果我们只是在pygame中重新移动方块则实际效果不是我们看到的效果。 ![]() 其实就是我们在绘制一个一个的方块,并没有清除上一个方块,这样就形成了图上我们看到的场景。 就如下图,绘制一个个方块,原来的方块还在。 ![]() 怎么解决这个问题呢? 我们都见过这样的翻页画。 ![]() 在一张新的纸上绘制与上一张不一样的画面,然后我们翻动纸张,那样画面就动了起来;那在我们pygame上,我们也在一张新的纸上绘制不就可以了吗? 代码语言:javascript复制# 定义的画布对象,中使用fill方法绘制新的背景screen.fill((255,255,255)) # 传递背景颜色的参数再次运行就达到我们要的效果了! 我们还有个事情考虑下,就是我们看翻页画的时候看到纸张一页一页的翻动,在pygame里面也可以指定翻页的速度! 这个速度在动态效果里面的单位是‘帧’; 所谓的‘帧’就是在1秒内我们翻动了多少页纸, 帧率越大,我们看到方块移动的速度就越快,反之就越慢。 定义刷新的帧率: 代码语言:javascript复制# 定义频率clock = pygame.time.Clock()然后我们在循环事件中设置刷新的帧率: 代码语言:javascript复制# 设定刷新帧率clock.tick(60) # 越大刷新的越快说了上面这么多话,到底怎么移动呢? 其实,我们在绘制的时候使用一个变量,放在绘制的图形参数内。 每次对变量进行操作就可以让形状动起来! 绘制的图形,会返回一个 rect(x轴,Y轴,宽,高) ![]() 我们可以接收这个参数,来获取绘制图形的位置,来进行重新绘制移动的方向或者大小! 有了这些知识,我们就可以让形状简单的动起来了。 全部代码: 代码语言:javascript复制import pygame def rungame(): # 分辨率 800 * 600 win = (100, 100) # 一般情况我们都只是设置一个固定大小的窗口 screen = pygame.display.set_mode(win) # 设置当前窗口标题 pygame.display.set_caption('绘制基础图像!') # 设置窗口的背景色 screen.fill((255, 255, 255)) # 设置游戏时钟 clock = pygame.time.Clock() x, y = 0, 0 # 方块的起点 width, height = 20, 20 # 方块的宽,高 print(screen) # b = pygame.draw.rect(screen, (0,255,0), [20, 20, 20, 20], 0) # 开启一个事件循环处理发生的事件 while True: clock.tick(60) # 从消息队列中获取事件并对事件进行处理 for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() exit(0) # 重绘背景 screen.fill((255,255,255)) # 画方块 a = pygame.draw.rect(screen, (255,0,0), (x, y, width, height)) print(a) # print(a.x, a.y) if a.x + a.size[0] < 100 and a.y == 0: # 方块右移 x += 1 # y += 1 elif a.y + a.size[1] < 100 and a.x + a.size[0] == 100: # 方块下移 y += 1 elif a.y + a.size[1] == 100 and a.x > 0: # 方块左移 x -= 1 elif a.y > 0 and a.x == 0: y -= 1 pygame.display.update() # clock. def main(): # 初始化导入的pygame中的模块 pygame.init() rungame() if __name__ == "__main__": main() |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |