2013-07-23 2 views
0

Я хочу, чтобы «ball.giff» поворачивался по экрану таким образом.У меня есть проблемы с pygame

--->   --> 
        | 
^     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

да, я думал, что :) правильно, кстати, мне очень жаль моего плохого английского –

Смежные вопросы