pygame.mask.from_surface(self,image)
对图片的非透明部分做标记
pygame.sprite.spritecollide(b, enemies, False, pygame.sprite.collide_mask)
完美检测碰撞
bullet1.append(bullet.Bullet1(me.rect.midtop))
me.rect.midtop,子弹生成在飞机的中间的顶部
if not(delay % 10):
bullet1[bullet1_index].reset(me.rect.midtop)
bullet1_index = (bullet1_index + 1) % BULLET1_NUM
每10帧绘制一枚子弹,子弹索引0~3,
按照子弹的飞行速度,4个子弹差不多一个屏幕的高度
pygame.draw.line(screen, BLACK, \
(each.rect.left, each.rect.top - 5), \
(each.rect.right, each.rect.top - 5), \
2)
绘制血槽的底槽,黑色,放在飞机的上方5个像素的位置,2个像素的宽度
energy_remain = each.energy / enemy.BigEnemy.energy
if energy_remain > 0.2:
energy_color = GREEN
else:
energy_color = RED
pygame.draw.line(screen, energy_color, \
(each.rect.left, each.rect.top - 5), \
(each.rect.left + each.rect.width * energy_remain, \
each.rect.top - 5), 2)
如果energy(血量)大于百分之20,血条颜色为绿色,低于则为红色
起点(each.rect.left, each.rect.top - 5)
终点(each.rect.left + each.rect.width * energy_remain, \each.rect.top - 5)