2013-09-12 5 views
0

Я довольно новичок в программировании, и недавно я решил начать Pygame. Основываясь на учебнике, которое я нашел, я создал эту игру. Цель состоит в том, чтобы наблюдать, как мяч отскакивает и держит его подальше от ящика внизу, щелкая в нужное время. Я знаю, что код немного грязный, но большая проблема заключается в том, что хотя код работает, игра не прекращается, как нужно, когда мяч и коробка касаются.Pygame, обнаруживающий столкновения между фотографиями

import sys, pygame 
pygame.init() 
size = width, height = 320, 240 
speed = [2, 2] 
black = 0, 0, 0 
screen = pygame.display.set_mode(size) 
ball = pygame.image.load("ball.bmp") 
target = pygame.image.load("square_target.bmp") 
ballrect = ball.get_rect() 
clock = pygame.time.Clock() 
target_place = [160, 200] 
fps = 60 

while 1: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: sys.exit() 

    ballrect = ballrect.move(speed) 
    if ballrect.left < 0 or ballrect.right > width: 
     speed[0] = -speed[0] 
    if ballrect.top < 0 or ballrect.bottom > height: 
     speed[1] = -speed[1] 
    if pygame.mouse.get_pressed()[0]: 
     speed[0] = -speed[0] 
    if ballrect <= target_place[0] + 50 or ballrect <= target_place[1] + 50: 
     pygame.event.post(pygame.QUIT) 

    screen.fill(black) 
    screen.blit(ball, ballrect) 
    screen.blit(target, target_place) 
    pygame.display.flip() 
    fps += 0.01 
    print (fps) 
    clock.tick(fps) 

Любая помощь?

+0

замените 'while 1:' на 'while not done:' и установите 'done = True', когда произойдет ваше столкновение. – ninMonkey

ответ

4

Pygame содержит встроенный метод, чтобы проверить, перекрываются ли два прямоугольника. Поэтому, если это условие верно:

ballrect.colliderect(target.get_rect()) 

... это означает, что два изображения перекрываются.

+0

Хорошо, я думал, что у меня есть это, чтобы работать, но теперь, когда я запускаю программу, он показывает экран на долю секунды, затем закрывается. Я добавил некоторые вещи для печати, чтобы выяснить, что происходит, и выяснилось, что всякий раз, когда программа проверяет, перекрываются ли изображения, они вернулись, и они ушли. Какие-либо предложения? – toytttttt24

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