I need to create an object of class GameScreen and call it's init and schedule interval to it's update method when the on_release event of a button with text as "New Game" happens
Here is the shortened code:
class Snake(Widget):
def init(self, bool, list):
pass
def update(self):
pass
class Food(Widget):
def init():
pass
def draw(snake_instance):
pass
def check(snake_instance):
pass
class WindowManager(ScreenManager):
pass
class MainMenuScreen(Screen):
pass
class GameScreen(Screen):
snk = ObjectProperty(None)
fd = ObjectProperty(None)
def init(self):
self.snk.init(False, (0,1,0,1))
self.fd.init()
Clock.schedule_interval(self.update, 1/20)
def update(self, deltaTime):
self.snk.update()
self.fd.draw(self.snk)
self.fd.check(self.snk)
class GameOverScreen(Screen):
pass
class OptionsScreen(Screen):
pass
class HighScoreScreen(Screen):
pass
kivyFile = Builder.load_string("""
#: import FadeTransition kivy.uix.screenmanager.FadeTransition
WindowManager:
transition: FadeTransition()
MainMenuScreen:
GameScreen:
GameOverScreen
OptionsScreen:
HighScoreScreen:
<Button>:
font_size: 50
size_hint: None, None
background_color: 0,0,0,0
color: self.parent.red if self.state=="normal" else self.parent.black
canvas.before:
Color:
rgba: self.parent.black if self.state=="normal" else self.parent.red
RoundedRectangle:
size: self.size
pos: self.pos
radius: [self.height*0.4]
Color:
rgba: self.parent.red if self.state=="normal" else self.parent.black
Line:
width: 2
rounded_rectangle: self.x, self.y, self.width, self.height, self.height*0.4
<MainMenuScreen>:
name: "mainmenuscreen"
red: (1,0,0,1)
black: (0,0,0,1)
canvas.before:
Color:
rgba: 0.15,0,0,1
Rectangle:
size: root.size
pos: root.pos
Widget:
Label:
text: "Snake Game"
bold: True
color: (0,0,0,1)
font_size: 100
outline_width: 3
outline_color: (1,0,0,1)
pos: 0, 1050
center_x: root.center_x
Button:
text: "New Game"
size: 350, 90
pos: 0, 800
center_x: root.center_x
on_release:
root.manager.current = "gamescreen"
Button:
text: "Options"
size: 300, 90
pos: 0, 650
center_x: root.center_x
Button:
text: "High Scores"
size: 350, 90
pos: 0, 500
center_x: root.center_x
Button:
text: "Exit"
size: 200, 90
pos: 0, 350
center_x: root.center_x
on_release: app.stop()
<GameScreen>:
name: "gamescreen"
snk: snake_id
fd: fd_id
canvas.before:
Color:
rgba: .2, .2, .2, 1
Rectangle:
pos: self.pos
size: self.size
Widget:
Snake:
id: snake_id
Label:
font_size: 50
color: self.parent.color
text: self.parent.disScore
size: self.texture_size
size_hint: None, None
pos: root.width-self.width-20, root.height-self.height-10
Food:
id: fd_id
""")
runTouchApp(kivyFile)
Everything works fine, no errors. I need some way to create an instance of the GameScreen class and call it's init() and also schedule an interval to call its update() method.
Something Like this if i can guess:
def someMethod():
gs = GameScreen()
gs.init()
Clock.schedule_interval(gs.update,1/20)
Can anybody help this noob kivy developer ??