当我使用箭头键时,我的精灵没有移动?我看了我的代码,我不能为我的生活解决它的问题?任何帮助都会提前大大感谢!!: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()
答案 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循环。