0

私はプログラミングを始めたばかりで、最近 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)

何か助けはありますか?

4

1 に答える 1

6

Pygame には、2 つの四角形が重なっているかどうかをチェックするメソッドが組み込まれています。したがって、この条件が真の場合:

ballrect.colliderect(target.get_rect())

...2 つの画像が重なっているということです。

于 2013-09-12T18:41:01.587 に答える