我从pygame的教程此程序:pygame的简单弹跳动画
1 import sys, pygame
2 pygame.init()
3
4 size = width, height = 320, 240
5 speed = [2, 2]
6 black = 0, 0, 0
7
8 screen = pygame.display.set_mode(size)
9
10 ball = pygame.image.load("ball.bmp")
11 ballrect = ball.get_rect()
12
13 while 1:
14 for event in pygame.event.get():
15 if event.type == pygame.QUIT: sys.exit()
16
17 ballrect = ballrect.move(speed)
18 if ballrect.left < 0 or ballrect.right > width:
19 speed[0] = -speed[0]
20 if ballrect.top < 0 or ballrect.bottom > height:
21 speed[1] = -speed[1]
22
23 screen.fill(black)
24 screen.blit(ball, ballrect)
25 pygame.display.flip()
这是一个简单的反弹球。我想要的是用一个将用pygame绘制的圆来代替ball(ball.gif),而不对代码做大的修改。我的意思是,我想要改变的唯一事情就是用一个圆圈代替它,并用我用来制作动画的相同代码对该圆圈进行动画处理。有什么办法可以做到吗?谢谢。
但是,如果我这样做,这意味着它使用图像的矩形区域。并且,例如,如果圆直径小于或大于矩形“球形”的长度,则圆形在到达屏幕边缘时不会弹起。为了做到这一点,我将不得不使用与圆相同大小的图像......是否有一种方法可以只使用圆而不必使用图像? – Joker
如果你用pygame.draw绘制,那么是的,如果你想使用rect进行碰撞,你的矩形尺寸需要匹配圆的大小。但是,不,你不需要一个图像。为了消除对矩形的需求,您需要重新编写碰撞检测来检查诸如圆形平面相交之类的事情。 – kevintodisco