def commandIC(commands, game): if not bg.has_match(game): print("Não existe jogo em curso.") elif not bg.all_ships_placed(game): print("Navios não colocados.") else: if not bg.has_combat(game): bg.start_combat(game) print("Combate iniciado.")
def commandD(commands, game): player_1_name = commands[1] player_2_name = commands[2] if len(commands) == 3 else None if not bg.has_match(game): print("Não existe jogo em curso.") elif (not bg.in_match(game, player_1_name)) or ( (not bg.in_match(game, player_2_name)) and player_2_name is not None): print("Jogador não participa no jogo em curso.") else: bg.withdraw(game, player_1_name, player_2_name) print("Desistência com sucesso. Jogo terminado.")
def commandV(commands, game): if not bg.has_match(game): print("Não existe jogo em curso.") elif not bg.has_combat(game): print("Jogo em curso sem combate iniciado.") else: result = bg.get_match_state(game) for e in result: print( f"{e['name']} {e['total_shots']} {e['shots_on_ships']} {e['sunk_ships']}" )
def commandRN(commands, game): player_name = commands[1] line = commands[2] column = commands[3] if not bg.has_match(game): print("Não existe jogo em curso.") elif not bg.in_match(game, player_name): print("Jogador não participa no jogo em curso.") elif not bg.is_ship_in_position(game, player_name, line, column): print("Não existe navio na posição.") else: bg.remove_ship(game, player_name, line, column) print("Navio removido com sucesso.")
def commandIJ(commands, game): player_1_name = commands[1] player_2_name = commands[2] if bg.has_match(game): print("Existe um jogo em curso.") elif (not bg.has_player(game, player_1_name)) or (not bg.has_player( game, player_2_name)): print("Jogadores não registados.") else: bg.start_match(game, player_1_name, player_2_name) names = bg.__sort([{ 'name': player_1_name }, { 'name': player_2_name }], ['name']) print(f"Jogo iniciado entre {names[0]['name']} e {names[1]['name']}.")
def commandCN(commands, game): player_name = commands[1] ship_type = commands[2] line = commands[3] column = commands[4] orientation = commands[5] if len(commands) == 6 else None if not bg.has_match(game): print("Não existe jogo em curso.") elif not bg.in_match(game, player_name): print("Jogador não participa no jogo em curso.") elif not bg.is_valid_position(game, player_name, ship_type, line, column, orientation): print("Posição irregular.") elif not bg.is_ship_type_available(game, player_name, ship_type): print("Não tem mais navios dessa tipologia disponíveis.") else: bg.place_ship(game, player_name, ship_type, line, column, orientation) print("Navio colocado com sucesso.")
def commandT(commands, game): player_name = commands[1] line = commands[2] column = commands[3] if not bg.has_match(game): print("Não existe jogo em curso.") elif not bg.has_combat(game): print("Jogo em curso sem combate iniciado.") elif not bg.in_match(game, player_name): print("Jogador não participa no jogo em curso.") elif not bg.is_valid_shot(game, line, column): print("Posição irregular.") else: shot = bg.shot(game, player_name, line, column) if shot['ended']: print(f"Navio {shot['ship']['name']} afundado. Jogo terminado.") elif shot['sunk']: print(f"Navio {shot['ship']['name']} afundado.") elif shot['ship'] is not None: print("Tiro em navio.") else: print("Tiro na água.")
def test_start_match(self): self.assertFalse(bg.has_match(self.game)) self.__add_players() bg.start_match(self.game, "Alice", "Trudy") self.assertTrue(bg.has_match(self.game))
def test_has_match(self): self.assertFalse(bg.has_match(self.game)) self.__add_players_and_set_match() self.assertTrue(bg.has_match(self.game))