如何在pygame中使用按键移动背景图像



我正在pygame中制作一个游戏。在这个游戏中,背景图像很大。在屏幕上,玩家只能看到大约1/20的背景图像。我想,当玩家按下左、右、上或下箭头键时,背景图像会分别移动,但当玩家到达图像末尾时,它会停止移动。我不知道该怎么做。

我的代码到目前为止:-

import pygame
FPS = 60
screen = pygame.display.set_mode((1000, 1000))
bg = pygame.image.load('map.png')
clock = pygame.time.Clock()
while True:
clock.tick(FPS)
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()

提前感谢:-

通过get_size():获取背景和屏幕的大小

screen_size = screen.get_size()
bg_size = bg.get_size()

在[0,bg_size[0]-screen_size[0]]范围内定义背景的初始开始。例如背景中心:

bg_x = (bg_size[0]-screen_size[0]) // 2

通过pygame.key.get_pressed():获取关键状态列表

keys = pygame.key.get_pressed()

根据:的状态更改bg_x

if keys[pygame.K_LEFT]:
bg_x -= 10
if keys[pygame.K_RIGHT]:
bg_x += 10

bg_x箝位到范围[0,bg_size[0]-screen_size[0]]:

bg_x = max(0, min(bg_size[0]-screen_size[0], bg_x))

blit屏幕上-bg_x的背景:

screen.blit(bg, (-bg_x, 0))

参见示例:

import pygame
FPS = 60
screen = pygame.display.set_mode((1000, 1000))
bg = pygame.image.load('map.png')
screen_size = screen.get_size()
bg_size = bg.get_size()
bg_x = (bg_size[0]-screen_size[0]) // 2
bg_y = (bg_size[1]-screen_size[1]) // 2
clock = pygame.time.Clock()
while True:
clock.tick(FPS)
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
bg_x -= 10
if keys[pygame.K_RIGHT]:
bg_x += 10
if keys[pygame.K_UP]:
bg_y -= 10
if keys[pygame.K_DOWN]:
bg_y += 10
bg_x = max(0, min(bg_size[0]-screen_size[0], bg_x)) 
bg_y = max(0, min(bg_size[1]-screen_size[1], bg_y))
screen.blit(bg, (-bg_x, -bg_y))
pygame.display.flip()

最新更新