我想要的是两件事: 计算屏幕上敌人的数量。用一个contion从屏幕上移除所有敌人。 第二种选择是允许敌人随机射击
class Enemy(Particle):
active = False
tex_name = 'ufo'
v = 0
def reset(self, created=False):
self.active = False
self.x = -100
self.y = -100
self.v = 0
def advance(self, nap):
if self.active:
if self.check_hit():
self.reset()
return
self.x -= 200 * nap
if self.x < -50:
self.reset()
return
self.y += self.v * nap
if self.y <= 0:
self.v = abs(self.v)
elif self.y >= self.parent.height:
self.v = -abs(self.v)
elif self.parent.spawn_delay <= 0:
self.active = True
self.x = self.parent.width + 50
self.y = self.parent.height * random()
self.v = randint(-100, 100)
self.parent.spawn_delay += 1
def check_hit(self):
if math.hypot(self.parent.player_x - self.x,
self.parent.player_y - self.y) < 60:
return True
for b in self.parent.bullets:
if not b.active:
continue
if math.hypot(b.x - self.x, b.y - self.y) < 30:
b.reset()
return True
我想要的是两件事: 计算屏幕上敌人的数量。用一个contion从屏幕上移除所有敌人。 第二种选择是允许敌人随机射击
您可以通过修改
PSWidget
类来完成前两个问题。通过向类添加两个属性enemy_count
和killall
:并在
update_glsl()
方法中使用这些属性:因此,任何时候,只要使用
PSWidget
实例的enemy_count
属性,就可以计算活动敌人的数量。无论何时,只要设置PSWidget
实例的killall
属性,就可以杀死所有活动的敌人至于你的第三个问题,告诉我们你在编码方面的尝试
如果您使用的是我在另一个问题中给出的答案,我建议使用
on_enter()
方法启动游戏更新,那么您可以使用on_leave()
停止更新。每次输入MainScreen
时,游戏的移动速度都会更快,因为每个条目上都安排了更多的更新。下面是一个处理该问题的修改的MainScreen
:相关问题 更多 >
编程相关推荐