Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使图像在Pygame中移动?_Python_Pygame - Fatal编程技术网

Python 如何使图像在Pygame中移动?

Python 如何使图像在Pygame中移动?,python,pygame,Python,Pygame,我有以下代码: plaxer = 20 player = 300 vel = 5 res = (720,720) thistle = (216,191,216) plum = (221,160,221) screen = pygame.display.set_mode(res) color = (255,255,255) color_light = (255,0,0) color_dark = (200,0,0) red = (128, 0, 128) reder = (31,0,31

我有以下代码:

plaxer = 20
player = 300
vel = 5
res = (720,720)
thistle = (216,191,216)
plum = (221,160,221)
screen = pygame.display.set_mode(res) 
color = (255,255,255) 
color_light = (255,0,0) 
color_dark = (200,0,0) 
red = (128, 0, 128) 
reder = (31,0,31) 
    
width = screen.get_width() 
height = screen.get_height() 
      
smallfont = pygame.font.SysFont('Corbel',35) 
text = smallfont.render('Exit ' , True , color) 
small = pygame.font.SysFont('Corbel',22) 
texta = small.render('Customise Avatar ' , True , color)
screen.fill((0,0,255)) 
img1 = pygame.image.load("C:\\Users\\Path\\To\\Brown.png")
screen.blit(img1,(plaxer, player))
runs = True
    
while runs: 
    mouse = pygame.mouse.get_pos()
    for ev in pygame.event.get():
        keys = pygame.key.get_pressed()  
        if keys[pygame.K_a]:
            plaxer =+ 0
            screen.fill((0,0,255))
            screen.blit(img1, (plaxer, player))

问题是精灵不能正常移动——它的移动太机械化了。如何修复此问题?

您必须绘制播放器并更新应用程序循环中的显示:

运行时:
mouse=pygame.mouse.get_pos()
对于pygame.event.get()中的ev:
如果ev.type==pygame.QUIT:
运行=错误
keys=pygame.key.get_pressed()
如果键[pygame.K_a]:
plaxer+=1
屏幕填充((0,0255))
屏幕blit(img1,(plaxer,player))
pygame.display.update()
典型的PyGame应用程序循环必须:

  • 通过或处理事件
  • 根据输入事件和时间(分别为帧)更新游戏状态和对象位置
  • 清除整个显示或绘制背景
  • 绘制整个场景(
    blit
    所有对象)
  • 通过或更新显示

你把输入法弄混了。您只处理事件循环中的键(
用于pygame.event.get()中的ev
)。你应该把它移出循环。您还应该创建一个
pygame.time.Clock
,并使用它来调节帧速率。我编辑了您的帖子以删除个人信息,使缩进保持一致,然后。然而,我不明白你所说的“太机械化”是什么意思。试着制作一个最大力和最大速度变量,并尝试将其应用到你的角色中,以便玩家可以有一点真实的动作。