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