pygame制作的一个图片滚动

来源:互联网 发布:新淘宝店怎么提高销量 编辑:程序博客网 时间:2024/04/29 07:08

学了python有一个月,想拿些简单的小项目来练练手,觉得pygame是一个很有意思的东西,就装了pygame来写点小玩意。图片滚动是在网页设计里面比较基础的东西,网上的js实现基本上都是那一个算法,我这里的算法实现也是参照的它。

算法描述

首先生成一个列表将所需要图片对象都装在里面,通过动态改变第一张图片的位置坐标(x1, y1)来实现按照列表中元素的顺序图片无限循环滚动。每当列表中的一张图片左滑至完全消失,将其加至列表的末尾。

代码实现

# -*- coding:utf-8 -*-import pygamefrom pygame.locals import *from sys import exitpygame.init()# 初始化pygame对象screen = pygame.display.set_mode((400, 250), 0, 24)# 设置显示的屏幕的模式和像素大小image1_filename = 'img/1.bmp'image2_filename = 'img/2.bmp'image3_filename = 'img/3.bmp'# 对于所需要的背景图命名bgimage1 = pygame.image.load(image1_filename).convert()bgimage2 = pygame.image.load(image2_filename).convert()bgimage3 = pygame.image.load(image3_filename).convert()# 将三张背景图片都加载和转化bgimage = [bgimage1, bgimage2, bgimage3]# 生成一个image列表,后面将列表所有元素的同时向前移动一位会用到x1, y1 = 0, 0# 给出第一张背景图左上角的坐标while True:    for event in pygame.event.get():        if event.type == QUIT:            exit()    # 事件捕捉使得用户退出程序    x1 -= 2 #通过改变数值能够改变滑动的速度    if x1 <= -400:        bgimage = bgimage[1:]+bgimage[:1]        # 每当列表中的第一张图片左移动至完全消失的时候,将第一张图片加到列表的末尾        bgimage1, bgimage2, bgimage3 = bgimage        x1 = 0    # 图片水平滑动的算法    screen.blit(bgimage1, (x1, y1))    screen.blit(bgimage2, (x1+400, y1))    screen.blit(bgimage3, (x1+800, y1))    # 把三张背景图依次画到屏幕上    pygame.display.update()     # 使得pygame对象不断刷新

但是代码还是有bug的,pygame中图片显示依靠的是所有的pygame.display 对象不断刷新然后再blit()在屏幕上的,从执行图片滑动算法到图片执行update()是有时间差的,每张图片滑过一个width后都会有很小的一段时间显示是空白。大家如果有好的方法希望不吝赐教。:)

这里写图片描述

0 0
原创粉丝点击