有些事情第一:
解决您的压痕
你的船的功能几乎是无用
使用矩形来处理移动
你真正的问题是,你的代码永远不会达到pygame.display.update()因为你的第二个while循环
所以,为了做出无尽的滚动背景,而简单的方法是做到以下几点:
BLIT背景图像两次,一旦在y位置,而一旦在y + image_width(与x取代y你想要的)。然后,您的主循环的每一次迭代都可以从y中减去以创建运动。一旦图像移动它的整个高度上,复位y起始值
这里的一个完整的例子,示出了一个滚动背景(以及如何使用精灵,组,载体和rects):
import pygame
pygame.init()
SCREEN = pygame.display.set_mode((300, 300))
move_map = {pygame.K_w: pygame.math.Vector2(0, -1),
pygame.K_s: pygame.math.Vector2(0, 1),
pygame.K_a: pygame.math.Vector2(-1, 0),
pygame.K_d: pygame.math.Vector2(1, 0)}
class Actor(pygame.sprite.Sprite):
def __init__(self, group, color, pos, size=(30, 30)):
self.image = pygame.Surface(size)
self.image.fill(color)
self.rect = self.image.get