Python kivy снова играет

#python #kivy #kivy-language

#python #kivy #kivy-language

Вопрос:

Я делаю игру в жонглирование футболом в киви, поэтому всякий раз, когда игра заканчивается, я хочу снова поиграть. Как я могу это сделать? Ниже мой «main.py» и код «gamescreen.kv»! Я перепробовал много вещей, но, похоже, ничего не вышло. Большое вам спасибо за любую помощь! Я действительно ценю это!

main.py

 from kivy.app import App from kivy.uix.screenmanager import Screen from kivy.uix.image import Image from kivy.core.audio import SoundLoader from kivy.clock import Clock from kivy.properties import NumericProperty from kivy.vector import Vector    class HomeScreen(Screen):  pass   def play_sound(self):  sound = SoundLoader.load('button press sound.wav.')  if sound:  sound.play()   sound = SoundLoader.load('Crowd sound effect.wav') sound.loop = True sound.play()   class GameScreen(Screen):  pass   def play_sound(self):  sound = SoundLoader.load('button press sound.wav.')  if sound:  sound.play()   class Ball(Image):  velocity = NumericProperty(0)    def on_touch_down(self, touch):  if Vector(self.center).distance(touch.pos) lt;= 33:  label = App.get_running_app().root.get_screen('game_screen').ids.score  label.text = str(int(label.text)   1)  sound = SoundLoader.load('Soccer ball sound.wav')  sound.play()  self.source = "icons/ball.png"  self.velocity = 275  return super().on_touch_down(touch)    def on_touch_up(self, touch):  if Vector(self.center).distance(touch.pos) lt;= 33:  self.source = "icons/ball.png"  return super().on_touch_up(touch)   class MainApp(App):  GRAVITY = 300    def move_ball(self, time_passed):  ball = self.root.ids.game_screen.ids.ball  ball.y = ball.y   ball.velocity * time_passed  ball.velocity = ball.velocity - self.GRAVITY * time_passed  self.check_collision()   def check_collision(self):  ball = self.root.ids.game_screen.ids.ball  if ball.top lt; 96:  self.game_over()   def game_over(self):  print("game over")    def start_game(self):  Clock.schedule_interval(self.move_ball, 1/60.)  self.root.ids.game_screen.ids.score.text = "0"    def change_screen(self, screen_name):  self.root.current = screen_name     MainApp().run()  

игровой экран.кв

 #:import utils kivy.utils   lt;GameScreengt;:  FloatLayout:  canvas:  Color:  rgb: utils.get_color_from_hex("#39B3F2")  Rectangle:  size: self.size  pos: self.pos  GridLayout:  rows: 1  pos_hint: {"top": 1, "left": 1}  size_hint: 1, .1  Image:  source: "icons/sun.png"  GridLayout:  rows: 1  pos_hint: {"top": 1, "left": 1}  size_hint: 1, .2  Image:  source: "icons/clouds.png"  GridLayout:  rows: 1  pos_hint: {"bottom": 1, "left": 1}  size_hint: 1, .5  Image:  source: "icons/Field4.png"  allow_stretch: True  keep_ratio: False  pos: self.pos   Label:  id: score  size_hint: None, None  font_size: dp(25)  font_name: 'SackersGothicStd-Medium.otf'  text: "0"  color: "gold"  pos_hint: { "center_x": 0.1, "center_y": 0.9}   Button:  size_hint: None, None  font_size: dp(20)  font_name: 'SackersGothicStd-Medium.otf'  text: "Start Game"  color: "gold"  pos_hint: { "center_x": 0.5, "center_y": 0.3}  size: 150, 55  size_hint: None, None  background_normal: ''  background_color: (57/255.0, 179/255.0, 242/255.0, .10)   on_release:  self.disabled = True  self.opacity = 0  root.play_sound()  app.start_game()    Ball:  source: "icons/ball.png"  size_hint: None, None  size: 500, 500  pos_hint: {"center_x": 0.5}  id: ball