2014-03-02 113 views
0

所以我想用python和pygame模块制作游戏。我从YouTube视频中获得了这些代码,但它不起作用。当你按下箭头键时,代码应该会让球移动,但是每当我按下箭头键球就会保持原位。如果您发现任何问题,请您纠正我的代码。这是我的代码:Python游戏开发帮助

bif="hills.jpg" 
mif="ball.png" 

import pygame, sys 
from pygame.locals import * 

pygame.init() 

screen=pygame.display.set_mode((604,367),0,32) 

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==K_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==K_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

您的移动球的代码仅在event.type == QUIT:时执行。这里是正确缩进的代码

bif="hills.jpg" 
mif="ball.png" 

import pygame, sys 
from pygame.locals import * 

pygame.init() 

screen=pygame.display.set_mode((604,367),0,32) 

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==K_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==K_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()