如何在Python的pygame中实现背景图像无限滚动
我试着把每张图片一个接一个地滚动显示,但它总是在图片后面显示一个灰色的背景。
这是我代码的一个草稿:
import math
import pygame as py
py.init()
clock = py.time.Clock()
FrameHeight = 600
FrameWidth = 1200
# PYGAME FRAME WINDOW
py.display.set_caption("Endless Scrolling in pygame")
screen = py.display.set_mode((FrameWidth,
FrameHeight))
# IMAGE
bg = py.image.load("./Data/sky_background/bg2.png").convert()
# bg.set_colorkey((108,108,108))
# bg = py.transform.scale(bg, [FrameWidth, FrameHeight])
# DEFINING MAIN VARIABLES IN SCROLLING
scroll = 0
# CHANGE THE BELOW 1 TO UPPER NUMBER IF
# YOU GET BUFFERING OF THE IMAGE
# HERE 1 IS THE CONSTATNT FOR REMOVING BUFFERING
tiles = math.ceil(FrameWidth / bg.get_width()) + 1
# MAIN LOOP
while 1:
# THIS WILL MANAGE THE SPEED OF
# THE SCROLLING IN PYGAME
clock.tick(33)
# APPENDING THE IMAGE TO THE BACK
# OF THE SAME IMAGE
i = 0
while(i < tiles):
screen.blit(bg, (bg.get_width()*i+scroll, 0))
i += 1
# FRAME FOR SCROLLING
scroll -= 20
# RESET THE SCROLL FRAME
if abs(scroll) > bg.get_width():
scroll = 0
# CLOSINF THE FRAME OF SCROLLING
for event in py.event.get():
if event.type == py.QUIT:
quit()
py.display.flip()
py.quit()
这段代码运行得很好(至少我测试过是这样),但我唯一的问题就是每张图片后面都有那个灰色的背景。
1 个回答
0
很遗憾,如果没有实际的图片文件,我们无法确定这些灰色方块出现的原因。不过,很可能是你的图片文件里有灰色的背景。在这种情况下,你可以去一个在线网站,比如 www.remove.bg,把背景去掉(这样在加载图片时,你需要用 convert_alpha() 而不是 convert())。另外,你也可以把图片的颜色键设置成灰色背景的颜色。不过,使用这种方法时要小心,因为它会把所有这种颜色的像素都去掉,包括那些其实是图片一部分而不是背景的像素!
如果你有任何问题,请告诉我,希望这些信息能帮到你!