2013-07-23 3 views
0

"ball.giff"를 이와 같이 화면에서 돌리고 싶습니다.파이 게임에 약간의 문제가 있습니다.

--->   --> 
        | 
^     v 
|    

        | 
^     v 
|  <--  <- - 

내 코드 :

import sys 
import pygame 

size = width, height = 600, 600 
screen = pygame.display.set_mode(size) 
pygame.display.set_caption("wedding") 

brade = pygame.image.load("ball.gif") 
brade_rect = brade.get_rect() 
speed = [10, 0] 
black = 0, 0, 0 
while True: 
    for event in pygame.event.get(): 
     if event.type==pygame.QUIT: 
      pygame.quit() 
      sys.exit() 

    brade_rect.move_ip(speed) 
    if brade_rect.right>width: 
     speed = [0,10] 
    if brade_rect.bottom>height: 
     speed = [-10, 0] 
    if brade_rect.left<0: 
     speed = [0, -10] 
    if brade_rect.top<0: 
     speed = [10, 0] 

    pygame.time.delay(100) 
    screen.fill(black) 
    screen.blit(brade, brade_rect) 
    pygame.display.flip() 

하지만 문제가있다. 한 번 둘러 본 후에 공은 영원히 계속됩니다. 그것은 내려 가지 않습니다? 내가 놓친 것은 도움이 될 수 있습니까?

답변

1

첫 번째 회전이 끝날 때 brad_rect.top-10이됩니다. 속도를 [10, 0]으로 변경하지만 brad_rect.top-10으로 유지하십시오. 따라서 마지막으로 여전히 활성화되어 있으면 속도가 될 수있는 항목을 모두 지우십시오. 당신은 창에 brade_rect을 다시 넣어해야합니다

if brade_rect.right>width: 
    speed = [0,10] 
    brade_rect.right=width 
if brade_rect.bottom>height: 
    speed = [-10, 0] 
    brade_rect.bottom=height 
if brade_rect.left<0: 
    speed = [0, -10] 
    brade_rect.left=0 
if brade_rect.top<0: 
    speed = [10, 0] 
    brade_rect.top=0 

을 그건 그렇고, 당신은 여기에 몇 가지 else을 넣어 고려해야한다.

+0

정말 고맙습니다. 나는 더 집중해야합니다. –

+0

몇 장의 프린트를 추가하면 문제를 보았을 것입니다! – hivert

+0

참으로, 나는 생각하고 있었다 :) 맞은 방법, 그런데 나는 나의 나쁜 영어에 대해 매우 유감이다. –

관련 문제