当前位置: 首页 > 知识库问答 >
问题:

Pygame:按下键时玩家不会移动

芮雪风
2023-03-14

刚开始使用pygame,当你按住箭头键时,试图让一个简单的点在屏幕上移动。目前,它只在你按键时移动,但你必须重复按键。

import random
import pygame
import keyboard
import time
from pygame.locals import *

class Player:
    def __init__(self):
        self.x = 150
        self.y = 150

pygame.init()
screen = pygame.display.set_mode((400, 300))
pygame.display.set_caption("Smile, you're beautiful!")
player = Player()
while True:
    pygame.time.Clock().tick(60)
    for event in pygame.event.get():
        if event.type == QUIT:
            exit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_RIGHT:
                player.x += 5
            if event.key == pygame.K_DOWN:
                player.y += 5
            if event.key == pygame.K_LEFT:
                player.x -= 5
            if event.key == pygame.K_UP:
                player.y -= 5
        pygame.event.pump()
    pygame.display.flip()
    pygame.display.update()
    screen.fill((0,0,0))
    pygame.draw.circle(screen, (180, 180, 180), (player.x, player.y), 5)

此外,我很感激你对我目前的代码有任何建议,可以改进或改变,使之更有效。

共有1个答案

劳嘉实
2023-03-14

你需要使用 pygame.key.get_pressed 而不是按键向下事件。通过这种方式,您可以知道每次逐笔报价时当前正在按下哪些键

while True:
    pressed = pygame.key.get_pressed()
    if pressed[pygame.K_RIGHT]:
        player.x += 5
    if pressed[pygame.K_DOWN]:
        player.y += 5
    if pressed[pygame.K_LEFT]:
        player.x -= 5
    if pressed[pygame.K_UP]:
        player.y -= 5
 类似资料:
  • 我是一个业余程序员,在Pyplay非常新。这是我用Pyplay编写的程序,类似于我的世界。在过去的一个小时里,我一直在尝试设置一个代码,让我的玩家在按下X键时移动到随机瓦片。我已经耗尽了大部分如果不是所有的网站和搜索引擎寻找。我已经设法完成了一半的任务;当按下X键时,化身会移动到随机磁贴,但它会移出窗口/显示器。拜托,你能看看我的代码,看看我能做些什么来改进它吗?

  • 问题是: 所以我在制作这个2D平台游戏时遇到了一个问题。当玩家跳到一个平台上并离开它时,重力不会影响它,它不会掉下来,直到你再次按下跳跃键,就好像它认为它仍然在地面上,直到你更新他。我已经把问题缩小到重力或碰撞,但找不到问题。有人能帮忙吗?我在下面附上代码。 代码:

  • 你好,我目前正在开发一款生存射击游戏,我目前对一些事情感到沮丧。一个是我的游戏动画不起作用。我这里有播放器类的代码: 如果您想了解我的任何其他问题/挫折,请说出来。任何帮助将不胜感激。谢谢。

  • 我正在做一个平台游戏,玩家有一把剑。我希望玩家只能在他下面有地面的时候攻击(所以他不能在空中攻击)。所以我实现了这段代码: 但是.. 每次返回零。虽然如果我将添加到测试玩家是否在地面的部分,它仍然存在!(虽然接地仍然等于零) 以下是完整的代码: 有人能帮忙吗?:)

  • 我试图在pygame中创建一个下降效果,但我被困在一个特定的问题上。每当玩家摔倒并与平台发生碰撞时,我的玩家类就会开始上下摆动。我确信这与我的更新循环有关,但我不确定它到底是什么。我尝试了几种方法,例如重新排列层次结构,但无济于事。我最终在网上搜索,但没有得到答案。所以如果有人能帮忙,我将不胜感激。 谢谢!

  • 我做了一些小游戏与pyplay模块,它一直很有趣。然而,现在我正试图通过midi用钢琴移动角色pygame.midi.有问题。我做到了,但不是以我想的方式,因为角色有时会移动,有时不会。我想我知道问题在哪里:如果我理解正确,pygame.event.get()函数捕捉事件总是,它不重要的时候(在游戏的主循环内),所以我认为用我的代码这不是发生,我的意思是,我相信玩家并不总是做应该做的事情,因为mi