Я создаю игру и хочу иметь разные уровни и разные настройки параметров, такие как кнопка воспроизведения и так далее. Поэтому для этого мне нужно много экранов, особенно для моих уровней. Мои классы наследуются от виджетов, поэтому я не могу использовать менеджер экрана. Но я хотел бы использовать это. Моя идея состоит в том, чтобы очистить все widegts и затем отобразить новые виджеты. Но я не знаю, как начать и реализовать мою идею. Кто-нибудь может помочь. Вот мой код.
class PongGame(Widget):
ball = ObjectProperty(None)
ship = ObjectProperty(None)
enemy = ObjectProperty(None)
def serve_ball(self,*args):
self.ball.x = self.ship.x
self.ball.y = self.ship.y
self.ball.velocity = Vector(5,0).rotate(90)
if self.ball.y > self.height:
self.ball.x = self.ship.x
self.ball.y = self.ship.y
self.sound = SoundLoader.load('laser.wav')
self.sound.play()
def random_generator(self,x,y):
return random.randint(x,y)
enemies = ListProperty([])
def add_enemy(self, *args):
enemy = Enemy()
enemy.pos = (random.randint(0,600), randint(200,600))
self.add_widget(enemy)
self.enemies.append(enemy)
And so on lots of code I don't think that everything else is important
Мой враг и класс корабля
class Enemy(Widget):
x_change = NumericProperty(3)
y_change = NumericProperty(-50)
score = NumericProperty(0)
def collision(self, ball):
if self.collide_widget(ball):
self.y = 1000
self.score += 5
# enemy1.y = randint(300, 500)
ball.x = -1000
ball.y = self.height / self.width
def move(self, *args):
self.x -= self.x_change
if self.x >= self.parent.width - 64:
self.x_change = 3
self.y += self.y_change
elif self.x <= 0:
self.x_change = -3
self.y += self.y_change
if self.y < 0:
print('Game Over')
self.clear_widgets()
class SpaceShip(Widget):
pass
Мой основной класс приложения
class PongApp(App):
def build(self):
game = PongGame()
# game.serve_ball()
# pro second 60 frames are shown
Clock.schedule_interval(game.update,1/60)
return game
Некоторые из моих кодов kv
<Enemy>:
size_hint: None,None
size: 64,64
canvas:
Rectangle:
pos:self.pos
size: self.size
source:'alien.png'
<PongGame>:
ball: pong_ball
ship: space_ship
start_button: start_button
resume_button:resume_button
canvas.before:
Rectangle:
pos: self.pos
size: self.size
source: 'background.png'
Label:
font_size: 40
x:root.width/ 1/4 +70
y:root.height -350
text: 'Your score :'
Label:
font_size: 40
x:root.width/ 1/2
y:root.height -350
#text: str(root.Enemy.score)