2015-01-03 19 views
-4

我讀過其他表格,我根本不明白我做錯了什麼,它根本不動。不能讓角色在pygame中移動。完全丟失

問題是我不能讓它移動我嘗試運行模塊,我的角色只是不動。我不知道爲什麼。

#1 - import Game library 
import pygame 
from pygame.locals import * 

#2 - Starts the game 
pygame.init() 
width, height = 640, 480 
keys = [False, False, False, False] 
playerpos=[100,100] 
screen=pygame.display.set_mode((width, height)) 
#3 - Shows Player 
player = pygame.image.load("resources/images/dude.png") 
grass = pygame.image.load("resources/images/grass.png") 
castle = pygame.image.load("resources/images/castle.png") 

#4 - Loops it 
while 1: 
    #5 - Clears screen the draws it again 
    screen.fill(0) 
    #6 - Draw Screen 
    for x in range(width/grass.get_width()+1): 
     for y in range(height/grass.get_height()+1): 
      screen.blit(grass,(x*100,y*100)) 
    screen.blit(castle,(0,30)) 
    screen.blit(castle,(0,135)) 
    screen.blit(castle,(0,240)) 
    screen.blit(castle,(0,345)) 
    screen.blit(player, playerpos) 
    #7 - updates screen 
    pygame.display.flip() 
    #8 - Loops through it 
    for event in pygame.event.get(): 
     if event.type==pygame.QUIT: 
      if event.type == pygame.KEYDOWN: 
       if event.key==K_w: 
        keys[0]=True 
       elif event.key==K_a: 
        keys[1]=True 
       elif event.key==K_s: 
        keys[2]=True 
       elif event.key==K_d: 
        keys[3]=True 
      if event.type == pygame.KEYUP: 
       if event.key==K_w: 
        keys[0]=False 
       elif event.key==K_a: 
        keys[1]=False 
       elif event.key==K_s: 
        keys[2]=False 
       elif event.key==K_d: 
        keys[3]=False 
      pygame.quit() 
      exit(0) 

    # 9 - Move player 
    if keys[0]: 
     playerpos[1]-=5 
    elif keys[2]: 
     playerpos[1]+=5 
    if keys[1]: 
     playerpos[0]-=5 
    elif keys[3]: 
     playerpos[0]+=5 

回答

2

您的移動按鍵檢測代碼被放入退出事件中。您只在遊戲窗口關閉時檢查移動關鍵事件。

for event in pygame.event.get(): 
    if event.type==pygame.QUIT: 
     if event.type == pygame.KEYDOWN: 
      if event.key==K_w: 
       keys[0]=True 
      elif event.key==K_a: 
       keys[1]=True 
      elif event.key==K_s: 
       keys[2]=True 
      elif event.key==K_d: 
       keys[3]=True 
     if event.type == pygame.KEYUP: 
      if event.key==K_w: 
       keys[0]=False 
      elif event.key==K_a: 
       keys[1]=False 
      elif event.key==K_s: 
       keys[2]=False 
      elif event.key==K_d: 
       keys[3]=False 
     pygame.quit() 
     exit(0) 

這應該修復它:

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

    if event.type == pygame.KEYDOWN: 
     if event.key==K_w: 
      keys[0]=True 
     elif event.key==K_a: 
      keys[1]=True 
     elif event.key==K_s: 
      keys[2]=True 
     elif event.key==K_d: 
      keys[3]=True 

    if event.type == pygame.KEYUP: 
     if event.key==K_w: 
      keys[0]=False 
     elif event.key==K_a: 
      keys[1]=False 
     elif event.key==K_s: 
      keys[2]=False 
     elif event.key==K_d: 
      keys[3]=False