【发布时间】:2020-04-29 10:22:00
【问题描述】:
我目前正在 kivy 开发一款太空探索者游戏。我有一艘宇宙飞船,它向敌人发射子弹。敌人向右移动,当他们撞到边界时,他们向左转,这种情况一次又一次地发生。一切都很完美。我可以射击并且敌人正在移动。但问题是我不能制造多个敌人。我必须为每个敌人设置一个自己的类,并一次又一次地编写相同的代码。我的想法是创建一个敌人列表,然后从列表中显示它们。所以看起来有多个敌人。但是我不知道我该怎么做,而且我从一天开始就失败了。另外,当您有其他想法时,如果您提出建议,那就太好了。这是我的代码。
敌人类:
class Enemy(Widget):
def collision(self,ball,enemy,enemy1):
if self.collide_widget(ball):
enemy.y = randint(300,500)
enemy1.y = randint(300,500)
ball.x = -1000
ball.y = self.height / self.width
我的主要游戏类:
class SapceGame(Widget):
enemy = ObjectProperty(None)
enemy = ObjectProperty(None)
x_change = NumericProperty(3)
y_change = NumericProperty(-50)
def enemy_movement(self, *args):
self.enemy.x -= self.x_change
if self.enemy.x >= self.width -64:
self.x_change = 3
self.enemy.y += self.y_change
elif self.enemy.x <=0:
self.x_change = -3
self.enemy.y += self.y_change
elif self.enemy.y < 0:
print('Game Over')
def update(self,dt):
self.enemy_movement()
我的kv文件:
<Enemy>:
size: 64,64
canvas:
Rectangle:
pos:self.pos
size: self.size
source:'alien.png'
<SpaceGame>:
ball: pong_ball
ship: space_ship
enemy: enemy_ship
Enemy:
id:enemy_ship
x:root.random_generator(2,root.width-64)
y:root.random_generator(300,550)
App 类
class SpaceApp(App):
def build(self):
game = PongGame()
# pro second 60 frames are shown
Clock.schedule_interval(game.update, 1.0/60.0)
return game
SpaceApp().run()
Now when I want to create more enemies I have to write the same code again and again.
【问题讨论】:
标签: python for-loop kivy kivy-language