from kivy.logger import Logger
from kivy.uix.widget import Widget
class BaseUI(Widget):
is_active = True
def hide(self):
if self.is_show():
Logger.debug("BaseUI: id=%s is hide()" % self.id)
self.is_active = False
self.disabled = True
self.opacity = 0.0
def show(self):
if not self.is_show():
Logger.debug("BaseUI: id=%s is show()" % self.id)
self.is_active = True
self.disabled = False
self.opacity = 1.0
def is_show(self):
return not self.disabled and self.opacity == 1.0
def update(self):
if self.is_active:
self.show()
else:
self.hide()
print(self, end=" ")
print(self.is_active, end=" ")
print(self.disabled, end=" ")
print(self.opacity)from core.ui.base import BaseUI
class GameField(BaseUI):
pass
from kivy.logger import Logger
from core.ui.base import BaseUI
class Menu(BaseUI):
player_number = 0
def start_by_player(self, player_number):
if player_number not in [1, 2]:
raise Exception("Menu: player_number should be 1 or 2. player_number = %s" % player_number)
self.player_number = int(player_number)
Logger.debug("Menu: Start with: player_number=%s" % int(player_number))
def bnt_exit(self):
Logger.debug("Menu: Exit from app. Call system exit()")
exit()
from kivy.logger import Logger
from kivy.properties import ObjectProperty
from kivy.core.window import Window
from kivy.uix.widget import Widget
from core.ui.base import BaseUI
from core.ui.menu import Menu
from core.ui.field import GameField
class MainGame(Widget):
menu = ObjectProperty(None)
field = ObjectProperty(None)
def __init__(self, **kwargs):
super(MainGame, self).__init__(**kwargs)
self._keyboard = Window.request_keyboard(self._keyboard_closed, self, 'text')
if self._keyboard.widget:
# If it exists, this widget is a VKeyboard object which you can use
# to change the keyboard layout.
pass
self._keyboard.bind(on_key_down=self._on_keyboard_down)
def update(self, dt):
self.update_ui()
if self.menu.player_number == 1:
pass
elif self.menu.player_number == 2:
pass
def update_ui(self):
for name, widget in self.ids.items():
widget.update()
def _keyboard_closed(self):
Logger.debug('MainGame: Keyboard have been closed!')
self._keyboard.unbind(on_key_down=self._on_keyboard_down)
self._keyboard = None
def _on_keyboard_down(self, keyboard, keycode, text, modifiers):
Logger.debug('MainGame: The key code: %s key: %s have been pressed' % (keycode[0], keycode[1]))
Logger.debug('MainGame: text is %r' % text)
Logger.debug('MainGame: modifiers are %r' % modifiers)
# Keycode is composed of an integer + a string
# If we hit escape, release the keyboard
if keycode[1] == 'escape':
self.menu.is_active = not self.menu.is_active
self.field.is_active = not self.menu.is_active
# Return True to accept the key. Otherwise, it will be used by
# the system.
return True