在Pygame中,我不能让我的精灵移动?这是我的代码吗?

时间:2014-04-16 20:02:10

标签: python events 2d pygame sprite

当我使用箭头键时,我的精灵没有移动?我看了我的代码,我不能为我的生活解决它的问题?任何帮助都会提前大大感谢!!:D

    bif="cloud.jpg"
    mif="reddwarf.png"

import pygame,sys
from pygame.locals import *

pygame.init()

DISPLAYSURF=screen=pygame.display.set_mode((813,555),32,0)
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==KEY_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==KEY_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()

3 个答案:

答案 0 :(得分:0)

检查缩进。看起来你的for循环检查你的事件不在你的while循环中,你的代码也不会移动你的精灵或更新你的屏幕。

答案 1 :(得分:0)

首先参考你的标题:如果某些东西不起作用,那很可能是因为你的代码;)

在Python中,压痕非常重要。这部分在这里:

x+=movex
y+=movey

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

pygame.display.update()

在while循环之外!

Python的工作原理如下:

while True:
    do_something()
    #this code will run while the condition remains true
do_something_else()
#code with this indendation level will run AFTER the while loop has finished.
#It's on the same indendation level like while.

您必须将我在上面发布的代码部分缩进,以使其与

处于相同的压力级别
if event.type == ...

块。现在安排它的方式,x + = movex .....部件正在等待,直到while循环结束 - 这真的不会发生,所以没有更新x / y值和blitting。

答案 2 :(得分:0)

看起来像缩进错误。你需要把你的

x+=movex
y+=movey

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

while while循环。