gpt4 book ai didi

python - pygame中 "x"和 "y"中的独立 Sprite 运动

转载 作者:行者123 更新时间:2023-12-01 05:43:23 25 4
gpt4 key购买 nike

好的,这是我当前的程序:

bif="bg.jpg"
mif="pkmn.png"


import pygame
import sys

from pygame.locals import *

pygame.init()

screen=pygame.display.set_mode ((600,375),0,32)
background=pygame.image.load(bif).convert()
mouse_c=pygame.image.load(mif).convert_alpha()

x,y=0,0
movex, movey=0,0

while True:

for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()

if event.type==KEYDOWN:
if event.key==K_LEFT:
movex=-1
elif event.key==K_RIGHT:
movex=+1
elif event.key==K_UP:
movey=-1
elif event.key==K_DOWN:
movey=+1

if event.type==KEYUP:
if event.key==K_LEFT:
movex=0
elif event.key==K_RIGHT:
movex=0
elif event.key==K_UP:
movey=0
elif event.key==K_DOWN:
movey=0

x+=movex
y+=movey

screen.blit(background,(0,0))
screen.blit(mouse_c,(x,y))

pygame.display.update()

问题是,即使我可以向各个方向移动,例如,当我按向右箭头键时,它会向右移动,那么如果我继续按住向右箭头键并按住向左箭头键,它就会移动向左,问题是这样的:当我放开右键时,即使我要向左走,我的 Sprite 也会停止。

我知道问题是当释放右或左时,x 变为 0

我希望能够按住右侧并向右移动,然后按住左侧并向左移动,但然后松开左侧并向右移动,因为我一直按住右侧

我希望我能解释一下自己,我已经尝试了所有方法并到处搜索,请帮助我,如果有人可以修改我的代码并将其显示给我以便我可以分析它,那就太好了。

谢谢

最佳答案

试试这个:

import pygame
import sys

from pygame.locals import *


bif="bg.jpg"
mif="pkmn.png"


pygame.init()
FPS = 30 # changed for FPS
FPSCLOCK = pygame.time.Clock() # changed for FPS

screen = pygame.display.set_mode ((600,375),0,32)
background = pygame.image.load(bif).convert()
mouse_c = pygame.image.load(mif).convert_alpha()

move_speed = 5 # changed for FPS
x, y = 0, 0

while True:

for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()

pressed = pygame.key.get_pressed()
if pressed[K_LEFT]:
x -= move_speed
if pressed[K_RIGHT]:
x += move_speed
if pressed[K_UP]:
y -= move_speed
if pressed[K_DOWN]:
y += move_speed

screen.blit(background,(0,0))
screen.blit(mouse_c,(x,y))

pygame.display.update()
FPSCLOCK.tick(FPS) # changed for FPS

编辑 1: 我正在运行您的代码,并注意到您没有任何 FPS 监控 - 您只是以 CPU 可以处理的最大速率运行代码。这会导致稍后出现问题,因此我添加了代码以确保您的 FPS 永远不会超过 30。

编辑 2:我的旧代码过于复杂;既然你同意向左和向右按住应该没有任何作用;这会起作用。 (它也将更具可读性,这有助于保护您免受错误的影响)

关于python - pygame中 "x"和 "y"中的独立 Sprite 运动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16878588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com