Exemplo n.º 1
0
class BattleshipScreen(Screen):
    def __init__(self, **kwargs):
        super(BattleshipScreen, self).__init__(name=kwargs.get('name'))

        self.ui_layout()

    def ui_layout(self):

        start_game_button_anchor = AnchorLayout(anchor_x='center', anchor_y='bottom',
                                            padding=[dp(25), dp(25), dp(25), dp(25)])


        self.start_game_button = MDFloatingActionButton(icon='play', size=[dp(56), dp(56)])
        self.start_game_button.md_bg_color = App.get_running_app().theme_cls.primary_color
        self.start_game_button.text_color = [1, 1, 1, 1]

        if platform not in ['ios', 'android']:
            self.start_game_button.bind(on_press=lambda x: self.start_game())


        start_game_button_anchor.add_widget(self.start_game_button)


        game_card = MDCard(padding=dp(24), spacing=dp(24), orientation='vertical',
                             size_hint_x=0.85, size_hint_y=0.7,
                             pos_hint={'top': 0.85, 'center_x': 0.5})
        rules = """The objective of Battleship is to try and sink all of the other player's before they sink all of your ships. All of the other player's ships are somewhere on his/her board.  


Player's take turns guessing out the coordinates of the enemy ships. If it's a hit the cell turns RED. If its a miss the cell turns BLUE.
The first played to guess and hit all the ships completely wins!"""
        game_label = MDLabel(text=rules, font_style='Body1', halign='center',
                               size_hint=(1, 0.5))
        game_label.theme_text_color = 'Custom'
        game_label.text_color = [1, 1, 1, 1]
        game_card.add_widget(game_label)
        game_card.md_bg_color = App.get_running_app().theme_cls.accent_color
        game_card.elevation = 15

        self.add_widget(game_card)
        self.add_widget(start_game_button_anchor)

        # Nav Bar
        self.nav_bar = MyNavigationLayout()
        self.nav_bar_anchor = AnchorLayout(anchor_x='center', anchor_y='top')
        self.nav_bar_anchor.add_widget(self.nav_bar)
        self.add_widget(self.nav_bar_anchor)


    def start_game(self):

        # add this line - os.system('java -jar ./jar/<filename>.jar')
        os.system('java -jar ./jar/BATTLESHIP.jar')

    def return_home(self):
        self.manager.current = 'welcome'
Exemplo n.º 2
0
class AlarmScreen(Screen):
    def __init__(self, **kw):
        self.app = MDApp.get_running_app()
        Clock.schedule_once(self.post_init, 0)
        super().__init__(**kw)

    def post_init(self, dt):
        self.btn = MDFloatingActionButton(icon='alarm-off',
                                          pos_hint={
                                              'center_x': .5,
                                              'center_y': .1
                                          })
        self.btn.md_bg_color = self.app.theme_cls.primary_color
        self.btn.bind(on_release=self.close)
        self.image = Image(source=self.app.car_image,
                           pos_hint={
                               'center_x': .5,
                               'center_y': .5
                           },
                           size_hint=[None, None],
                           size=[200, 200])
        self.add_widget(self.image)
        self.add_widget(self.btn)

    def on_enter(self, *args):
        self.start_animation()
        return super().on_enter(*args)

    def on_pre_leave(self, *args):
        Animation.cancel_all(self.image)
        return super().on_pre_leave(*args)

    def start_animation(self, *_):
        a = Animation(size=[300, 300], d=1., t='in_out_elastic')
        a.bind(on_complete=self.back_aniamte)
        a.start(self.image)

    def back_aniamte(self, *_):
        a = Animation(size=[150, 150], d=1., t='in_out_elastic')
        a.bind(on_complete=self.start_animation)
        a.start(self.image)

    def close(self, *_):
        self.app.root.ids.sm.current = 'scr 1'
        if self.app.vibrator:
            self.app.vibrator.stop()
            self.app.vibrator = None
        Clock.schedule_once(self.move_close, .3)

    def move_close(self, _):
        cancel_notification(192837)
        mActivity.moveTaskToBack(True)
Exemplo n.º 3
0
    def ui_layout(self):
        self.clear_widgets()

        layout = BoxLayout(orientation='vertical')
        scroll = ScrollView(do_scroll_x=False,
                            size_hint=(1, None),
                            size=(Window.width, Window.height))
        scroll_box = BoxLayout(orientation='vertical',
                               size_hint_y=None,
                               padding=(dp(12), dp(60)),
                               spacing=dp(5))
        scroll_box.bind(minimum_height=scroll_box.setter('height'))
        # Add more self.scrollbox.add_widget(MDLabel(text='')) to increase padding
        scroll_box.add_widget(MDLabel(text=' '))
        scroll_box.add_widget(MDLabel(text=' '))
        scroll_box.add_widget(MDLabel(text=' '))
        scroll_box.add_widget(MDLabel(text=' ', size_hint=(1, 5)))

        for contact in self.util.contact_list:
            contact_card = ContactCard(util=self.util,
                                       contact=contact
                                       )
            scroll_box.add_widget(contact_card)

        scroll.add_widget(scroll_box)
        layout.add_widget(scroll)

        # Add floating action button to write messages
        add_contact_anchor = AnchorLayout(anchor_x='right', anchor_y='bottom',
                                          padding=[dp(25), dp(25), dp(25), dp(25)])
        add_contact_btn = MDFloatingActionButton(icon='account-plus', size=[dp(56), dp(56)])
        add_contact_btn.md_bg_color = App.get_running_app().theme_cls.primary_color
        add_contact_btn.theme_text_color = "Custom"
        add_contact_btn.text_color = [1, 1, 1, 1]
        add_contact_btn.bind(on_press=lambda x: self.change_screen('add_contact'))
        add_contact_anchor.add_widget(add_contact_btn)

        toolbar_anchor = AnchorLayout(anchor_x='center', anchor_y='top')
        toolbar = MDToolbar(title='Contacts', anchor_title='center')
        toolbar.md_bg_color = App.get_running_app().theme_cls.primary_color
        toolbar.left_action_items = [['arrow-left', lambda x: self.change_screen('message')]]
        toolbar_anchor.add_widget(toolbar)

        self.add_widget(layout)
        self.add_widget(add_contact_anchor)
        self.add_widget(toolbar_anchor)

        self.do_layout()
 def show_drill(self, chosen_drills):
     """Shows all the chosen drills on the screen"""
     i = 0
     for page in [self.ids.drill1, self.ids.drill2, self.ids.drill3]:
         page.ids.title.text = chosen_drills[i]['title']
         page.ids.body.text = chosen_drills[i]['description']
         if chosen_drills[i]['link'] is not None:
             floating_button = MDFloatingActionButton(pos_hint={
                 'center_x': 0.8,
                 'center_y': 0.1
             },
                                                      icon='youtube')
             floating_button.md_bg_color = self.app.theme_cls.primary_color
             floating_button.bind(on_release=lambda x, link=chosen_drills[i]
                                  ['link']: open_url(link))
             page.add_widget(floating_button)
             self.youtube_button[i] = floating_button
         i += 1
Exemplo n.º 5
0
class DecoderScreen(Screen):
    def __init__(self, **kwargs):
        super(DecoderScreen, self).__init__(name=kwargs.get('name'))
        self.util = kwargs.get('util')
        if platform not in ['ios', 'android']:
            self.amr = self.util.auto_morse_recognizer
        self.ui_layout()

    def ui_layout(self):
        record_button_anchor = AnchorLayout(
            anchor_x='center',
            anchor_y='bottom',
            padding=[dp(25), dp(25), dp(25), dp(25)])

        self.record_button = MDFloatingActionButton(icon='record',
                                                    size=[dp(56),
                                                          dp(56)])
        self.record_button.md_bg_color = App.get_running_app(
        ).theme_cls.primary_color
        self.record_button.text_color = [1, 1, 1, 1]
        if platform not in ['ios', 'android']:
            self.record_button.bind(on_press=lambda x: self.decode_audio())
        record_button_anchor.add_widget(self.record_button)

        self.decode_input = MDTextFieldRound(pos_hint={
            'center_x': 0.5,
            'center_y': 0.5
        },
                                             size_hint=(0.85, 0.5))
        self.decode_input.icon_left_dasabled = True
        # Moves widget out of the field of view
        self.decode_input.children[2].children[2].pos_hint = {
            'center_x': 500,
            'center_y': 500
        }
        # This binds the right icon to record the input
        self.decode_input.icon_right = 'database-export'
        self.decode_input.children[2].children[0].bind(
            on_press=lambda x: self.clear_text())

        decode_card = MDCard(padding=dp(24),
                             spacing=dp(24),
                             orientation='vertical',
                             size_hint_x=0.85,
                             size_hint_y=0.7,
                             pos_hint={
                                 'top': 0.85,
                                 'center_x': 0.5
                             })
        decode_label = MDLabel(text='Decode Morse Code Audio',
                               font_style='Body1',
                               halign='center',
                               size_hint=(1, 0.5))
        decode_label.theme_text_color = 'Custom'
        decode_label.text_color = [1, 1, 1, 1]
        decode_card.add_widget(decode_label)

        decode_text = 'Hit record or enter Morse Code below to start decoding'
        self.decode_output_label = MDLabel(text=decode_text,
                                           font_style='Body1',
                                           halign='center',
                                           size_hint=(1, 0.5))
        self.decode_output_label.theme_text_color = 'Custom'
        self.decode_output_label.text_color = [1, 1, 1, 1]
        if platform not in ['ios', 'android']:
            self.audio_indicator = AudioIndicator(
                stack_width=self.amr.bits_per_frame)
        else:
            self.audio_indicator = AudioIndicator(stack_width=40)
        self.audio_indicator.size_hint = (1, 2)

        decode_card.add_widget(self.audio_indicator)
        decode_card.add_widget(self.decode_output_label)
        decode_card.add_widget(self.decode_input)
        decode_card.md_bg_color = App.get_running_app().theme_cls.accent_color
        decode_card.elevation = 15

        self.add_widget(decode_card)
        self.add_widget(record_button_anchor)

        # Nav Bar
        self.nav_bar = MyNavigationLayout()
        self.nav_bar_anchor = AnchorLayout(anchor_x='center', anchor_y='top')
        self.nav_bar_anchor.add_widget(self.nav_bar)
        self.add_widget(self.nav_bar_anchor)

    def update_audio_indicator(self, dt):
        if hasattr(self.audio_indicator, 'stack_width'):
            level_array = [
                self.audio_indicator.stack_height + 1 if bit == 0 else 0
                for bit in dt[-self.audio_indicator.stack_width:]
            ]
            self.audio_indicator.set_levels(level_array)

    def clear_text(self):
        self.decode_input.text = ''

    def decode_audio(self):
        if self.record_button.md_bg_color == App.get_running_app(
        ).theme_cls.primary_color:
            self.record_button.md_bg_color = App.get_running_app(
            ).theme_cls.error_color
            self.decode_output_label.text = 'Recording Started'
            print("Start audio recording thread")
            self.amr.start()
            Clock.schedule_interval(self.update_amr, self.amr.frame_rate)

        else:
            self.decode_output_label.text = 'Recording Stopped'
            print("Stopped audio recording thread")
            self.record_button.md_bg_color = App.get_running_app(
            ).theme_cls.primary_color
            Clock.unschedule(self.update_amr)
            self.amr.stop()
            self.clear_text()

    def update_amr(self, kargs):
        print(kargs)
        morse_code, bit_signal = self.amr.update()
        self.update_audio_indicator(bit_signal)
        self.update_text(morse_code)

    def update_text(self, morse_code):
        self.decode_input.text = self.decode_input.text + ''.join(morse_code)

    def return_home(self):
        self.manager.current = 'welcome'
Exemplo n.º 6
0
    def ui_layout(self):
        self.clear_widgets()
        layout = BoxLayout(orientation='vertical')

        self.scroll = ScrollView(do_scroll_x=False,
                                 size_hint=(1, None),
                                 size=(Window.width, Window.height))
        scroll_box = BoxLayout(orientation='vertical',
                               size_hint_y=None,
                               padding=(dp(1), dp(60)),
                               spacing=dp(1))
        scroll_box.bind(minimum_height=scroll_box.setter('height'))
        # Add more self.scrollbox.add_widget(MDLabel(text='')) to increase padding
        scroll_box.add_widget(MDLabel(text=' '))
        scroll_box.add_widget(MDLabel(text=' '))
        scroll_box.add_widget(MDLabel(text=' '))

        for key in self.util.user_data['message_dict']:
            morse_code = ''
            temp_dict = self.util.user_data['message_dict'][key][-1:][0]
            if '_.' not in temp_dict['message']:
                morse_code = self.util.morse_helper.text_to_morse(
                    str(temp_dict['message']))
            else:
                morse_code = str(temp_dict['message'])

            message_card = MessageCard(
                text_post=morse_code,
                name=key,
                name_data=(key + '\n' + temp_dict['timestamp']),
                swipe=True,
                source='ui/img/default_avatar.png',
            )
            scroll_box.add_widget(message_card)

        self.scroll.add_widget(scroll_box)
        layout.add_widget(self.scroll)

        self.add_widget(layout)

        # Add floating action button to write messages
        create_message_anchor = AnchorLayout(
            anchor_x='right',
            anchor_y='bottom',
            padding=[dp(25), dp(25), dp(25), dp(25)])
        create_message_btn = MDFloatingActionButton(icon='message',
                                                    size=[dp(56),
                                                          dp(56)])
        create_message_btn.md_bg_color = App.get_running_app(
        ).theme_cls.primary_color
        create_message_btn.theme_text_color = "Custom"
        create_message_btn.text_color = [1, 1, 1, 1]
        create_message_btn.bind(on_press=lambda x: self.switch_screens())
        create_message_anchor.add_widget(create_message_btn)
        self.add_widget(create_message_anchor)

        # Nav Bar
        self.nav_bar = MyNavigationLayout(scroll_view=self.scroll)
        self.nav_bar_anchor = AnchorLayout(anchor_x='center', anchor_y='top')
        self.nav_bar_anchor.add_widget(self.nav_bar)
        self.add_widget(self.nav_bar_anchor)
        self.do_layout()
Exemplo n.º 7
0
class PaintBallScreen(Screen):
    def __init__(self, **kwargs):
        super(PaintBallScreen, self).__init__(name=kwargs.get('name'))

        self.ui_layout()

    def ui_layout(self):

        start_game_button_anchor = AnchorLayout(
            anchor_x='center',
            anchor_y='bottom',
            padding=[dp(25), dp(25), dp(25), dp(25)])

        self.start_game_button = MDFloatingActionButton(icon='play',
                                                        size=[dp(56),
                                                              dp(56)])
        self.start_game_button.md_bg_color = App.get_running_app(
        ).theme_cls.primary_color
        self.start_game_button.text_color = [1, 1, 1, 1]

        if platform not in ['ios', 'android']:
            self.start_game_button.bind(on_press=lambda x: self.start_game())

        start_game_button_anchor.add_widget(self.start_game_button)

        game_card = MDCard(padding=dp(24),
                           spacing=dp(24),
                           orientation='vertical',
                           size_hint_x=0.85,
                           size_hint_y=0.7,
                           pos_hint={
                               'top': 0.85,
                               'center_x': 0.5
                           })
        rules = """Hit the blocks popping up before they disappear!
Hit the blocks a specific number of times to win the game! Keep in mind, you just have limited chances to hit the blocks. So buckle up for some exciting fun! """
        game_label = MDLabel(text=rules,
                             font_style='Body1',
                             halign='center',
                             size_hint=(1, 0.5))
        game_label.theme_text_color = 'Custom'
        game_label.text_color = [1, 1, 1, 1]
        game_card.add_widget(game_label)
        game_card.md_bg_color = App.get_running_app().theme_cls.accent_color
        game_card.elevation = 15

        self.add_widget(game_card)
        self.add_widget(start_game_button_anchor)

        # Nav Bar
        self.nav_bar = MyNavigationLayout()
        self.nav_bar_anchor = AnchorLayout(anchor_x='center', anchor_y='top')
        self.nav_bar_anchor.add_widget(self.nav_bar)
        self.add_widget(self.nav_bar_anchor)

    def start_game(self):

        # add this line - os.system('java -jar ./jar/<filename>.jar')
        os.system('java -jar ./jar/PAINTBALL.jar')

    def return_home(self):
        self.manager.current = 'welcome'
Exemplo n.º 8
0
class SnakeScreen(Screen):
    def __init__(self, **kwargs):
        super(SnakeScreen, self).__init__(name=kwargs.get('name'))

        self.ui_layout()

    def ui_layout(self):

        start_game_button_anchor = AnchorLayout(
            anchor_x='center',
            anchor_y='bottom',
            padding=[dp(25), dp(25), dp(25), dp(25)])

        self.start_game_button = MDFloatingActionButton(icon='play',
                                                        size=[dp(56),
                                                              dp(56)])
        self.start_game_button.md_bg_color = App.get_running_app(
        ).theme_cls.primary_color
        self.start_game_button.text_color = [1, 1, 1, 1]

        if platform not in ['ios', 'android']:
            self.start_game_button.bind(on_press=lambda x: self.start_game())

        start_game_button_anchor.add_widget(self.start_game_button)

        game_card = MDCard(padding=dp(24),
                           spacing=dp(24),
                           orientation='vertical',
                           size_hint_x=0.85,
                           size_hint_y=0.7,
                           pos_hint={
                               'top': 0.85,
                               'center_x': 0.5
                           })
        rules = """Snakes and ladders is a game to play with your friends. Navigate your piece from start to finish, avoid the snakes, and take shortcuts going up the ladders.


How to play:

Each player starts from base. Both players alternatively roll the dice and move the respective pawns.
If your pawn lands at the bottom of a ladder, you can move up to the top of the ladder.
If your pawn lands on the head of a snake, you must slide down to the bottom of the snake.
The first player to get to the last tile numbered '100'  is the winner."""
        game_label = MDLabel(text=rules,
                             font_style='Body1',
                             halign='center',
                             size_hint=(1, 0.5))
        game_label.theme_text_color = 'Custom'
        game_label.text_color = [1, 1, 1, 1]
        game_card.add_widget(game_label)
        game_card.md_bg_color = App.get_running_app().theme_cls.accent_color
        game_card.elevation = 15

        self.add_widget(game_card)
        self.add_widget(start_game_button_anchor)

        # Nav Bar
        self.nav_bar = MyNavigationLayout()
        self.nav_bar_anchor = AnchorLayout(anchor_x='center', anchor_y='top')
        self.nav_bar_anchor.add_widget(self.nav_bar)
        self.add_widget(self.nav_bar_anchor)

    def start_game(self):

        # add this line - os.system('java -jar ./jar/<filename>.jar')
        os.system('java -jar ./jar/SNAKES_AND_LADDERS.jar')

    def return_home(self):
        self.manager.current = 'welcome'
Exemplo n.º 9
0
class BlueDevicesScreen(MDScreen):
    def __init__(self, **kw):
        self.devices = []
        self.list_of_devices = None
        self.toolbar = None
        self.choosen_color = None
        self.app = MDApp.get_running_app()
        self.number_of_devices = 0
        self.count_animations = 0

        if platform == 'android':
            self.bluetoothAdapter = BluetoothAdapter.getDefaultAdapter()
            if not self.bluetoothAdapter:
                android_toast("This device doesn't support bluetooth", True)
        else:
            self.bluetoothAdapter = None

        Clock.schedule_once(self.post_init, 0)
        super().__init__(**kw)

    def post_init(self, dt):

        scroll = ScrollView(always_overscroll=False)
        self.list_of_devices = MDList()
        scroll.add_widget(self.list_of_devices)
        box = BoxLayout()
        box.add_widget(scroll)

        self.refresh_btn = MDFloatingActionButton(
            icon='refresh',
            pos_hint={
                'center_x': .5,
                'center_y': .5
            },
            md_bg_color=self.app.theme_cls.primary_color,
            opacity=0)
        self.refresh_btn.bind(on_release=self.get_bluetooth_devices)
        btn_layout = FloatLayout(size_hint_y=None, height=dp(100))
        btn_layout.add_widget(self.refresh_btn)

        self.container = BoxLayout(orientation='vertical')
        self.toolbar = MDToolbar(pos_hint={'top': 1})
        self.toolbar.left_action_items = [
            'chevron-left', lambda x: self.switch_screen()
        ],
        self.toolbar.right_action_items = [
            'bluetooth-off', lambda x: self.clear_device()
        ],
        self.container.add_widget(self.toolbar)
        self.container.add_widget(box)
        self.container.add_widget(btn_layout)

        self.add_widget(self.container)

    def enable_bluetooth(self):
        enableAdapter = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
        mActivity.startActivityForResult(enableAdapter, 0)

    def post_background_permissions(self):
        if self.bluetoothAdapter:
            if not self.bluetoothAdapter.isEnabled():
                self.enable_bluetooth()
                return
            self.get_bluetooth_devices()
        Clock.schedule_once(self.animate_button_colors, 0)

    def on_enter(self, *args):

        if platform == 'android':
            granted = self.app.check_background()
            if granted:
                self.post_background_permissions()
            else:
                self.app.root.ids.sm.current = 'scr 1'

        return super().on_enter(*args)

    def on_leave(self, *args):
        self.devices = []
        self.number_of_devices = 0
        self.list_of_devices.clear_widgets()
        Clock.schedule_once(self.app.save_theme, 0)
        Animation.cancel_all(self.refresh_btn)
        Animation.cancel_all(self.toolbar)
        self.toolbar.md_bg_color = self.app.theme_cls.primary_color
        self.refresh_btn.md_bg_color = self.app.theme_cls.primary_color
        return super().on_leave(*args)

    def on_pre_enter(self, *args):
        Animation(opacity=1, d=1.5).start(self.refresh_btn)
        return super().on_pre_enter(*args)

    def on_pre_leave(self, *args):
        self.app.set_decorations()
        self.refresh_btn.opacity = 0
        return super().on_pre_leave(*args)

    def get_bluetooth_devices(self, *_):

        if self.bluetoothAdapter:
            if self.bluetoothAdapter.isEnabled():
                results = self.bluetoothAdapter.getBondedDevices()
                self.devices = results.toArray()
                self.list_of_devices.clear_widgets()

                for device in self.devices:
                    name = OneLineListItem(text=device.getName(), opacity=0)
                    name.bind(on_release=self.save_device_name)
                    self.list_of_devices.add_widget(name)

                self.count_animations = len(self.list_of_devices.children)
                Clock.schedule_once(self.animate_items_opacity, 0)
            else:
                self.enable_bluetooth()

    def save_device_name(self, widget):

        self.app.paired_car = widget.text

        self.app.root.ids.content_drawer\
            .ids.md_list.children[0].text = widget.text

        android_toast(f'Listening for {widget.text}', True)

    def switch_screen(self):
        self.app.root.ids.sm.current = 'scr 1'

    def clear_device(self):
        self.app.paired_car = ''
        self.app.root.ids.content_drawer\
            .ids.md_list.children[0].text = 'Choose car'

    def change_decorations(self, *_):

        if platform == 'android':
            statusbar = get_hex_from_color(self.choosen_color[:-1])
            navbar = get_hex_from_color(self.choosen_color[:-1])
            self.app.statusbar(statusbar, navbar)

    def animate_button_colors(self, *_):
        self.choosen_color = choice(DECORATION_COLORS)
        a = Animation(md_bg_color=self.choosen_color, d=.3)
        b = Animation(md_bg_color=self.choosen_color, d=.3)
        a.bind(on_start=self.change_decorations)
        a.start(self.refresh_btn)
        b.start(self.toolbar)

    def animate_items_opacity(self, *_):
        try:
            a = Animation(opacity=1, d=.25, t='out_bounce')
            a.bind(on_complete=self.decrease_children)
            a.start(self.list_of_devices.children[self.count_animations - 1])
        except IndexError as e:
            print(e)
            for child in self.list_of_devices.children:
                child.opacity = 1

    def decrease_children(self, *_):
        self.count_animations -= 1
        if self.count_animations < 0:
            self.count_animations = 0
            return
        self.animate_items_opacity()
Exemplo n.º 10
0
class TicTacScreen(Screen):
    def __init__(self, **kwargs):
        super(TicTacScreen, self).__init__(name=kwargs.get('name'))

        self.ui_layout()

    def ui_layout(self):

        start_game_button_anchor = AnchorLayout(
            anchor_x='center',
            anchor_y='bottom',
            padding=[dp(25), dp(25), dp(25), dp(25)])

        self.start_game_button = MDFloatingActionButton(icon='play',
                                                        size=[dp(56),
                                                              dp(56)])
        self.start_game_button.md_bg_color = App.get_running_app(
        ).theme_cls.primary_color
        self.start_game_button.text_color = [1, 1, 1, 1]

        if platform not in ['ios', 'android']:
            self.start_game_button.bind(on_press=lambda x: self.start_game())

        start_game_button_anchor.add_widget(self.start_game_button)

        game_card = MDCard(padding=dp(24),
                           spacing=dp(24),
                           orientation='vertical',
                           size_hint_x=0.85,
                           size_hint_y=0.7,
                           pos_hint={
                               'top': 0.85,
                               'center_x': 0.5
                           })
        rules = """You probably already know how to play Tic-Tac-Toe. It's a really simple game, right? That's what most people think. But if you really wrap your brain around it, you'll discover that Tic-Tac-Toe isn't quite as simple as you think!
        
        1. The game is played on a grid that's 3 squares by 3 squares.

        2. You are X, your friend (or the computer in this case) is O. Players take turns putting their marks in empty squares.

        3. The first player to get 3 of her marks in a row (up, down, across, or diagonally) is the winner.

        4. When all 9 squares are full, the game is over. If no player has 3 marks in a row, the game ends in a tie."""
        game_label = MDLabel(text=rules,
                             font_style='Body1',
                             halign='center',
                             size_hint=(1, 0.5))
        game_label.theme_text_color = 'Custom'
        game_label.text_color = [1, 1, 1, 1]
        game_card.add_widget(game_label)
        game_card.md_bg_color = App.get_running_app().theme_cls.accent_color
        game_card.elevation = 15

        self.add_widget(game_card)
        self.add_widget(start_game_button_anchor)

        # Nav Bar
        self.nav_bar = MyNavigationLayout()
        self.nav_bar_anchor = AnchorLayout(anchor_x='center', anchor_y='top')
        self.nav_bar_anchor.add_widget(self.nav_bar)
        self.add_widget(self.nav_bar_anchor)

    def start_game(self):

        # add this line - os.system('java -jar ./jar/<filename>.jar')
        os.system('java -jar ./jar/TICTACTOE.jar')

    def return_home(self):
        self.manager.current = 'welcome'
Exemplo n.º 11
0
class ShipScreen(Screen):
    def __init__(self, **kwargs):
        super(ShipScreen, self).__init__(name=kwargs.get('name'))

        self.ui_layout()

    def ui_layout(self):

        start_game_button_anchor = AnchorLayout(
            anchor_x='center',
            anchor_y='bottom',
            padding=[dp(25), dp(25), dp(25), dp(25)])

        self.start_game_button = MDFloatingActionButton(icon='play',
                                                        size=[dp(56),
                                                              dp(56)])
        self.start_game_button.md_bg_color = App.get_running_app(
        ).theme_cls.primary_color
        self.start_game_button.text_color = [1, 1, 1, 1]

        if platform not in ['ios', 'android']:
            self.start_game_button.bind(on_press=lambda x: self.start_game())

        start_game_button_anchor.add_widget(self.start_game_button)

        game_card = MDCard(padding=dp(24),
                           spacing=dp(24),
                           orientation='vertical',
                           size_hint_x=0.85,
                           size_hint_y=0.7,
                           pos_hint={
                               'top': 0.85,
                               'center_x': 0.5
                           })
        rules = """Catch em all is a game where you have to catch the ever escaping target.
With a limited amount you need to catch the target as fast as you can..

How to play:
A random target appears all over the screen
Click on it before it disappears and moves to another target
Collect the target 10 times before the timer runs out to finish the game.
Clicking on any obstacle or any area outside the ground gives a penalty of 4 seconds"""
        game_label = MDLabel(text=rules,
                             font_style='Body1',
                             halign='center',
                             size_hint=(1, 0.5))
        game_label.theme_text_color = 'Custom'
        game_label.text_color = [1, 1, 1, 1]
        game_card.add_widget(game_label)
        game_card.md_bg_color = App.get_running_app().theme_cls.accent_color
        game_card.elevation = 15

        self.add_widget(game_card)
        self.add_widget(start_game_button_anchor)

        # Nav Bar
        self.nav_bar = MyNavigationLayout()
        self.nav_bar_anchor = AnchorLayout(anchor_x='center', anchor_y='top')
        self.nav_bar_anchor.add_widget(self.nav_bar)
        self.add_widget(self.nav_bar_anchor)

    def start_game(self):

        # add this line - os.system('java -jar ./jar/<filename>.jar')
        os.system('java -jar ./jar/SHIPS.jar')

    def return_home(self):
        self.manager.current = 'welcome'
Exemplo n.º 12
0
class ConnectPage(GridLayout):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.cols = 2
        self.padding = 10

        if os.path.isfile("prev_details.txt"):
            with open("prev_details.txt", "r") as f:
                d = f.read().split(",")
                prev_ip = d[0]
                prev_port = d[1]
                prev_username = d[2]
        else:
            prev_ip = "192.168.1.9"
            prev_port = "1234"
            prev_username = ""
        self.add_widget(MDLabel())
        self.add_widget(MDLabel())
        self.add_widget(MDLabel(text="IP : ", halign="center",
                                theme_text_color="Primary"))
        self.float = FloatLayout()
        self.ip = MDTextField(text=prev_ip, multiline=False,
                              pos_hint={'x': 0, 'y': 0.2})
        self.float.add_widget(self.ip)
        self.add_widget(self.float)

        self.add_widget(MDLabel(text="Port : ", halign="center",
                                theme_text_color="Primary"))
        self.float = FloatLayout()
        self.port = MDTextField(
            text=prev_port, multiline=False, pos_hint={'x': 0, 'y': 0.2})
        self.float.add_widget(self.port)
        self.add_widget(self.float)

        self.add_widget(MDLabel(text="Username : "******"center", theme_text_color="Primary"))
        self.float = FloatLayout()
        self.username = MDTextField(
            text=prev_username, multiline=False, pos_hint={'x': 0, 'y': 0.2})
        self.float.add_widget(self.username)
        self.add_widget(self.float)

        self.float_layout = FloatLayout()
        self.connect_fab = MDFloatingActionButton(
            icon="arrow-right", pos_hint={'x': 0.68, 'y': 0})
        self.connect_fab.bind(on_release=self.connect_button)
        self.float_layout.add_widget(self.connect_fab)
        self.add_widget(MDLabel())
        self.add_widget(MDLabel())
        self.add_widget(MDLabel())
        self.add_widget(MDLabel())
        self.add_widget(MDLabel())
        self.add_widget(self.float_layout)

    def connect_button(self, instance):
        ip = self.ip.text
        port = self.port.text
        username = self.username.text

        with open("prev_details.txt", "w") as f:
            f.write(f"{ip},{port},{username}")

        info = f"Attempting to join {ip}:{port} as {username}"
        chat_app.info_page.update_info(info)
        chat_app.screen_manager.current = "Info"
        Clock.schedule_once(self.connect, 0.5)

    def connect(self, _):
        ip = self.ip.text
        port = self.port.text
        port = int(port)
        username = self.username.text

        if not client.connect(ip, port, username, show_error):
            return
        chat_app.create_chat_page()
        chat_app.screen_manager.current = "Chat"