飞机大战python

bullet2_index = (bullet2_index + 2) % BULLET2_NUM 这个是什么意思?帮我看下

    if life_num and not paused:
        # 绘制全屏炸弹补给并检测是否获得
        if bomb_supply.active:
            bomb_supply.move()
            screen.blit(bomb_supply.image, bomb_supply.rect)
            if pygame.sprite.collide_mask(bomb_supply, me):
                get_bomb_sound.play()
                if bomb_num < 3:
                    bomb_num += 1
                bomb_supply.active = False

        # 发射子弹
        if not (delay % 10):
            bullet_sound.play()
            if is_double_bullet:
                bullets = bullet2
                bullets[bullet2_index].reset((me.rect.centerx - 33, me.rect.centery))
                bullets[bullet2_index + 1].reset((me.rect.centerx + 33, me.rect.centery))
                bullet2_index = (bullet2_index + 2) % BULLET2_NUM
            else:
                bullets = bullet1
                bullets[bullet1_index].reset(me.rect.midtop)
                bullet1_index = (bullet1_index + 1) % BULLET1_NUM

一句话概括就是变量的重新赋值

网页给的不全面

猜测一下:
BULLET1_NUM 和 BULLET2_NUM 表示的是当前游戏窗口同时展现的最大子弹数量。而一旦子弹移动到窗口边缘,这个代码的思路不是删除旧子弹并创建新的子弹,而是把子弹的位置重置,所以看起来就像是发射了新子弹。
因为总共只有 BULLET2_NUM 颗子弹,那么利用子弹的索引求余数,就必然能够保证子弹的索引在(0,BULLET2_NUM-1)之间,随着游戏循环体的进行,从而能够遍历到每一个子弹。
bullet2_index = (bullet2_index + 2) % BULLET2_NUM