def press(self, instance: Widget): if self.controller.game_state == 'setup': Popup(title="Invalid move !", content=Label(text="You still need to position your submarines !"), size_hint=(1,None) ,size=(200,200)).open() return if instance.sq_location in self.played_cooridinates: Popup(title="Invalid move !", content=Label(text="You can't play the same square again !"), size_hint=(1,None) ,size=(200,200)).open() return self.played_cooridinates.append(instance.sq_location) res = self.controller.play_human_turn(instance.sq_location) if not res: instance.text = "X" instance.background_color = 1, 0, 0, 1 else: instance.text = 'HIT' name = self.controller.get_submarine_name(instance.sq_location) instance.background_color = 0, 1, 0, 1 # dark green # if name == "Destroyer": # instance.background_color = 1, 0, 1, 1 # dark pink # if name == "Submarine": # instance.background_color = 0, 1, 1, 1 # dark turquoise (blue) # if name == "Cruiser": # instance.background_color = 0, 0, 1, 10 # dark blue # if name == "Battleship": # instance.background_color = 2, 0, 1, 2 # pink # if name == "Carrier": # instance.background_color = 0, 1, 0, 1 # dark green self.controller.active_turn = 'computer' self.controller.game_state='computer_turn'
def create_battle_btns(self): """Generates the player buttons in the battle window. They are returned as a list of widgets, which are horizontal boxes with buttons.""" group_count = 0 battle_pairs = [] #button_height = sp(200) for pair in g.pairing.pairs: innerBox = BoxLayout(orientation='horizontal', padding=4, size_hint=(1, None)) first_toggle = None if pair[0].name == 'Bye': first_toggle = Widget() first_toggle.state = 'normal' first_toggle.color = (1, 1, 1, 0.5) else: first_toggle = battleScreenToggle(group="group" + str(group_count)) first_toggle.background_color = (1, 1, 1, 0.8) first_toggle.background_color_down = (1, 1, 1, 0.2) first_toggle.color = (1, 1, 1, 1) first_toggle.halign = 'center' first_toggle.player = pair[0] first_toggle.size_hint = (1, None) first_toggle.height = self.btn_height #first_toggle.width self.button_height = self.btn_height #first_toggle.width first_icon = Image(source=self.get_icon_path(pair[0]), pos=first_toggle.pos, size=(first_toggle.size[0], self.btn_height), color=[1, 1, 1, 1]) first_name = Label(text=pair[0].name, color=(1, 1, 1, 1), font_size=sp(20)) text_label_wins = str(pair[0].victories) for enemy in pair[0].history: if enemy.name == 'Bye': text_label_wins += "*" first_wins = None if pair[0].name == 'Bye': first_wins = Label(text="", color=(1, 1, 1, 1), font_size=sp(14)) else: first_wins = Label(text=text_label_wins + " wins", color=(1, 1, 1, 1), font_size=sp(14)) first_name.pos = (first_name.pos[0], first_name.pos[1]) first_wins.pos = (first_wins.pos[0], first_wins.pos[1] - sp(20)) first_layout = RelativeLayout(size_hint=first_toggle.size_hint, size=(first_toggle.size[0], self.btn_height)) first_layout.add_widget(first_icon) first_layout.add_widget(first_toggle) first_layout.add_widget(first_name) first_layout.add_widget(first_wins) innerBox.add_widget(first_layout) g.player_buttons.append(first_toggle) second_toggle = None if pair[1].name == 'Bye': second_toggle = Widget() second_toggle.state = 'normal' second_toggle.color = (1, 1, 1, 0.5) else: second_toggle = battleScreenToggle(group="group" + str(group_count)) second_toggle.background_color = (1, 1, 1, 0.8) second_toggle.background_color_down = (1, 1, 1, 0.2) second_toggle.color = (1, 1, 1, 1) second_toggle.halign = 'center' second_toggle.player = pair[1] second_toggle.size_hint = (1, None) second_toggle.height = self.btn_height #first_toggle.width second_icon = Image(source=self.get_icon_path(pair[1]), pos=second_toggle.pos, size=(second_toggle.size[0], self.btn_height), color=[1, 1, 1, 1]) second_name = Label(text=pair[1].name, color=(1, 1, 1, 1), font_size=sp(20)) text_label_wins = str(pair[1].victories) for enemy in pair[1].history: if enemy.name == 'Bye': text_label_wins += "*" if pair[1].name == 'Bye': text_label_wins = "" second_wins = None if pair[1].name == 'Bye': second_wins = Label(text="", color=(1, 1, 1, 1), font_size=sp(14)) else: second_wins = Label(text=text_label_wins + " wins", color=(1, 1, 1, 1), font_size=sp(14)) second_name.pos = (second_name.pos[0], second_name.pos[1]) second_wins.pos = (second_wins.pos[0], second_wins.pos[1] - sp(20)) second_layout = RelativeLayout(size_hint=second_toggle.size_hint, size=(second_toggle.size[0], self.btn_height)) second_layout.add_widget(second_icon) second_layout.add_widget(second_toggle) second_layout.add_widget(second_name) second_layout.add_widget(second_wins) innerBox.add_widget(second_layout) g.player_buttons.append(second_toggle) battle_pairs.append(innerBox) group_count += 1 innerBox.size_hint = (1, None) innerBox.height = self.btn_height #innerBox.height = first_player.height #innerBox.height = first_toggle.height#width return battle_pairs