这是我参与8月更文挑战的第6天,活动详情查看:8月更文挑战
你好,我是悦创。
前面我们讲了一个小实战,接下来呢,我们来继续把这个弹球小实战写完。上一篇链接:05-pygame弹球游戏(上) 接下来,我们来完成接杆的代码。
文中的代码,如果要复制,可以关注公众号:AI悦创,获取。因为,活动代码和文字的比例有要求。
接杆
创建接杆,同样是将接杆作为一个类来进行创建,规定它的大小颜色以及矩形选框,并且获取矩形的左侧与顶部位置。
实例化接杆对象,并显示到屏幕。
# 循环外面
mybar = Mybraclass([270, 600])
# 循环里面
screen.blit(mybar.image, mybar.rect)
让接杆移动起来,要跟随鼠标移动,这里用到了鼠标事件中的 MOUSEMOTION ,然后进行碰撞检测。在写碰撞检测之前,有时候需要将进行碰撞检测放到一个组里面,当某个元素与组内元素发生碰撞时,则进行速度取反。
# 将我的球类放入组中
ballgroup = pygame.sprite.Group(myball)
# 写在循环中
# 当鼠标滑过时将新建一个鼠标划过的事件并赋值给接杆的中心点
if event.type == pygame.MOUSEMOTION:
mybar.rect.centerx = event.pos[0]
# 小球与接杆的碰撞检测
if pygame.sprite.spritecollide(mybar, ballgroup, False):
myball.speed[1] = -myball.speed[1]
帧率、积分变量和分数显示。
- 帧率、积分变量和分数
clock = pygame.time.Clock()
ball_speed = [4, -4]
score = 0
# 小球与接杆的碰撞检测
if pygame.sprite.spritecollide(mybar, ballgroup, False):
myball.speed[1] = -myball.speed[1]
time = time + 1
score = score + 10
clock.tick(time)
screen.fill([255, 255, 255])
font = pygame.font.SysFont('', 20)
text_surface = font.render(u"score:" + str(score), True, (0, 0, 255))
screen.blit(text_surface, (32, 24))
上面的代码,多有碎片化,接下来我就把完整的代码放出来: