06-pygame弹球游戏(下)

702 阅读2分钟

这是我参与8月更文挑战的第6天,活动详情查看:8月更文挑战

你好,我是悦创。

前面我们讲了一个小实战,接下来呢,我们来继续把这个弹球小实战写完。上一篇链接:05-pygame弹球游戏(上) 接下来,我们来完成接杆的代码。

文中的代码,如果要复制,可以关注公众号:AI悦创,获取。因为,活动代码和文字的比例有要求。

接杆

创建接杆,同样是将接杆作为一个类来进行创建,规定它的大小颜色以及矩形选框,并且获取矩形的左侧与顶部位置。

carbon.png

实例化接杆对象,并显示到屏幕。

# 循环外面
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]

帧率、积分变量和分数显示。

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

上面的代码,多有碎片化,接下来我就把完整的代码放出来:

carbon.png