我希望我的播放器图像左右移动

问题描述

我是编程新手,我需要帮助来左右移动我的播放器(图像)(希望有键绑定)

我真的不知道我在做什么,我只是需要帮助,请帮忙

这是我目前的代码


import pygame

# Intialize the pygame
pygame.init()

# Resulution?
screen = pygame.display.set_mode((800,600))

# Title and logo
pygame.display.set_caption("Båtisens Herre")
icon = pygame.image.load('img.png')
pygame.display.set_icon(icon)

#Background
background = pygame.image.load("bakgrunn.png")

# Player
playerImg = pygame.image.load('King Arthur2.png')
playerX = 100
playerY = 200

def player(x,y):
    screen.blit(playerImg,(x,y))

#game loop 

running = True
while running:

    # RGB (red,green blue)
    screen.fill((248,58,226))
    playerY -=0
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

#Background(2)
    screen.blit(background,(0,))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    player(playerX,playerY)
    pygame.display.update()

解决方法

您必须更改播放器的 x 坐标。例如,按 ad 移动玩家:

#game loop 

clock = pygame.time.Clock()
running = True
while running:
    clock.tick(100)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    keys = pygame.key.get_pressed()
    if keys[pygame.K_a]:
        playerX -= 1
    if keys[pygame.K_d]:
        playerX += 1

    screen.blit(background,(0,))
    player(playerX,playerY)
    pygame.display.update() 

说明:

pygame.key.get_pressed() 返回一个包含每个键状态的序列。如果某个键被按下,则该键的状态为 True,否则为 False。使用 pygame.key.get_pressed() 评估按钮的当前状态并获得连续移动。


pygame.event.get() 获取所有消息并将它们从队列中删除。请参阅文档:。请参阅文档:

这将获取所有消息并将它们从队列中删除。 [...]

如果在多个事件循环中调用 pygame.event.get(),则只有一个循环接收事件,但不会所有循环都接收所有事件。因此,似乎错过了一些事件。


使用 pygame.time.Clock 控制每秒帧数,从而控制游戏速度。

tick() 对象的方法 pygame.time.Clock 以这种方式延迟游戏,即循环的每次迭代消耗相同的时间段。见pygame.time.Clock.tick()

这个方法应该每帧调用一次。

这意味着循环:

clock = pygame.time.Clock()
run = True
while run:
   clock.tick(100)

每秒运行 100 次。