2014-04-16 71 views
0

當我使用箭頭鍵時,我的精靈不移動?我看了我的代碼,我不能爲我的生活工作出什麼問題呢?任何幫助將大量提前預先感謝!!:D在Pygame中,我無法讓我的精靈移動?這是我的代碼嗎?

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

'IndentationError'? – That1Guy

回答

0

檢查您的縮進。它看起來像你的for循環,它檢查你的事件不在你的while循環中,你的代碼也不會移動你的精靈或更新你的屏幕。

0

參考您的標題第一:如果有什麼不工作,機會是,它真的是因爲你的代碼;)

Indendation在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. 

你必須indend我張貼以上,因此在同一indendation水平爲

if event.type == ... 

塊代碼的一部分。現在安排它的方式,x + = movex .....部分正在等待直到while循環結束 - 並且這不會真的發生,所以不會更新x/y值和blitting。

+0

非常感謝?我敢肯定,你可以告訴我對pygame是新手,但是我應該從我的python經驗中知道這一點:(謝謝 – user3542499

+0

呃,比你想象的更頻繁地發生:D就在昨天,我在這裏問了一些問題,有人指出,那只是傳遞給某個方法的某些變量的順序是錯誤的,實際上沒有代碼或者我做它的方式... –

+0

我現在有另一個問題,我得到以下錯誤消息:Traceback(最近調用最後一次): File「 C:\ Python27 \ reddwarf.py「,第25行,在 elif event.key == KEY_RIGHT: NameError:名稱'KEY_RIGHT'未定義 – user3542499

0

看起來像一個縮進錯誤。你需要把你的

x+=movex 
y+=movey 

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

在while循環。

相關問題