def lanzar_dados(self): dado_1 = random.randint(1, 6) dado_2 = random.randint(1, 6) self.dados[0] = dado_1 self.dados[1] = dado_2 interfaz_network.send_command_to_all("update_dices", dado_1, dado_2) self.event_dados_lanzados.set()
def realizar_intercambio(self, aceptado): if aceptado: # Da la materia ofrecida self.jugador_oferente_intercambio.mazo[self.materia_ofrecida]\ -= self.cant_materia_ofrecida self.jugador_elegido_intercambio.mazo[self.materia_ofrecida]\ += self.cant_materia_ofrecida # Quita la materia pedida self.jugador_oferente_intercambio.mazo[self.materia_pedida]\ += self.cant_materia_pedida self.jugador_elegido_intercambio.mazo[self.materia_pedida]\ -= self.cant_materia_pedida # Notifica el intercambio msg = f"Se ha realizado un intercambio entre\ {self.jugador_oferente_intercambio.nombre} \ y {self.jugador_elegido_intercambio.nombre}" interfaz_network.send_command_to_all("pop_up", msg) # setea none todos los datos del intercambio self.jugador_oferente_intercambio = None self.jugador_elegido_intercambio = None self.materia_ofrecida = None self.materia_pedida = None self.cant_materia_ofrecida = None self.cant_materia_pedida = None else: msg = "Se ha rechazado el intercambio" interfaz_network.send_command(self.jugador_oferente_intercambio.nombre, "pop_up", msg) self.event_accion_realizada.set()
def __setitem__(self, key, value): keys = {"madera", "arcilla", "trigo"} if key not in keys: raise KeyError("No existe la materia prima dada") #print(f"Enviando Comando: {key}: {value}: {self.usuario}") interfaz_network.send_command_to_all("update_resource", self.usuario, key, value) super().__setitem__(key, value)
def comprar_choza(self, id_nodo): choza = self.banco.comprar_choza(self.jugador_actual) if choza: if self.mapa.anadir_construccion(choza, id_nodo): # Chequea los adyacentes msg = f"{self.jugador_actual.nombre} ha construido una choza" interfaz_network.send_command_to_all("pop_up", msg) self.event_accion_realizada.set() else: # Si no se pudo construir se activa la interfaz interfaz_network.send_command(self.jugador_actual.nombre, "enable_interface") else: # Si no se pudo comprar se activa la itnerfaz interfaz_network.send_command(self.jugador_actual.nombre, "enable_interface")
def construccion(self, valor): if valor is not None: self.__construccion = valor puntos = valor.puntos self.usuario.puntos += puntos interfaz_network.send_command_to_all("add_building", self.id, self.construccion.nombre, self.usuario.nombre) else: self.usuario.puntos -= self.construccion.puntos print(f"Enviar comando eliminar construccion, id: {self.id}") self.__construccion = valor
def poner_ladron(self, id_hexagono): if self.mapa.hexagonos[id_hexagono].ladron == True: msg = "Posicion Invalida, ya hay un ladron en ese Hexagono" interfaz_network.send_command(self.jugador_actual.nombre, "pop_up", msg) else: print(f"Poniendo Ladron en id: {id_hexagono}") self.mapa.hexagonos[id_hexagono].ladron = True msg = f"{self.jugador_actual.nombre} ha usado el ladron" interfaz_network.send_command_to_all("put_thief", id_hexagono) interfaz_network.send_command_to_all("pop_up", msg) interfaz_network.send_command(self.jugador_actual.nombre, "steal_cards") pass
def comenzar_turno(self): self.jugador_actual = self.cola_turnos.popleft() interfaz_network.send_command_to_all("update_current_player", self.jugador_actual.nombre) interfaz_network.send_command(self.jugador_actual.nombre, "enable_dice_throw") # Espera a que se lanzen los dados y resetea el evento self.event_dados_lanzados.wait() self.event_dados_lanzados.clear() # Reparte las cartas y lo deja jugar if self.suma_dados() == 7: self.quitar_materias_primas() interfaz_network.send_command(self.jugador_actual.nombre, "enable_thief") else: self.banco.repartir_cartas(self.mapa, self.suma_dados()) interfaz_network.send_command(self.jugador_actual.nombre, "enable_interface") self.event_accion_realizada.wait() self.event_accion_realizada.clear() self.chequear_ganador(self.jugador_actual) self.cola_turnos.append(self.jugador_actual)
def puntos(self, valor): self.__puntos = valor interfaz_network.send_command_to_all("update_points", self.nombre, valor)
def nombre(self, valor): self.__nombre = valor interfaz_network.send_command_to_all("load_user_name", self.nombre) print(f"Enviar Comando Fijar nombre usuario {self.nombre}")
def init_nodo(self): interfaz_network.send_command_to_all("del_construccion", self.id)
def num_ficha(self, valor): self.__num_ficha = valor interfaz_network.send_command_to_all("load_num_ficha", self.id, self.num_ficha)
def materia_prima(self, valor): self.__materia_prima = valor interfaz_network.send_command_to_all("load_hexagon_resource", self.id, self.materia_prima)
def fase_juego(self): interfaz_network.send_command_to_all("close_wait_window") interfaz_network.send_command_to_all("open_game_window") while not self.ganador: self.comenzar_turno() print("TERMINANDO PARTIDA")
def enviar_chat(self, nombre, texto): interfaz_network.send_command_to_all("add_chat_line", nombre, texto)
def fase_termino(self): lista_nombres_puntos = [(usuario.nombre, usuario.puntos) for usuario in self.usuarios] lista_nombres_puntos.sort(key=lambda tupla: tupla[1], reverse=True) interfaz_network.send_command_to_all("update_winner_window", lista_nombres_puntos) interfaz_network.send_command_to_all("close_game_window") interfaz_network.send_command_to_all("open_winner_window")