def casillas_ocupadas(self): vehiculos_puestos = self.vehiculos_actual celdas_ocupadas = list() for vehiculo in vehiculos_puestos: for celda in celdas.celdas_ocupadas(vehiculo.pos_actual, vehiculo.size): celdas_ocupadas.append(celda) return celdas_ocupadas
def get_elemento(self, coordenada, espacio=(1, 1)): cobertura = celdas.celdas_ocupadas(coordenada, espacio) for vehiculo in self.vehiculos_actual: exitos = 0 efectividad100 = False ocupadas = celdas.celdas_ocupadas(vehiculo.pos_actual, vehiculo.size) for celda_buscada in cobertura: if celda_buscada in ocupadas: exitos += 1 if exitos == len(cobertura): efectividad100 = True if exitos > 0: return vehiculo, efectividad100 return None, efectividad100
def get_elemento(self, coordenada, espacio=(1, 1)): cobertura = celdas.celdas_ocupadas(coordenada, espacio) for vehiculo in self.vehiculos_actual: exitos = 0 efectividad100 = False ocupadas = celdas.celdas_ocupadas(vehiculo.pos_actual, vehiculo.size) for celda_buscada in cobertura: if celda_buscada in ocupadas: exitos += 1 if exitos == len(cobertura): efectividad100 = True if exitos > 0: return vehiculo, efectividad100 return None, efectividad100
def casillas_ocupadas(self): vehiculos_puestos = self.vehiculos_actual celdas_ocupadas = list() for vehiculo in vehiculos_puestos: for celda in celdas.celdas_ocupadas(vehiculo.pos_actual, vehiculo.size): celdas_ocupadas.append(celda) return celdas_ocupadas
def check_espacio(self, elemento, posicion): celdas_ocupadas = self.casillas_ocupadas() celdas_nuevas = celdas.celdas_ocupadas(posicion, elemento.size) for casilla in celdas_nuevas: if casilla in celdas_ocupadas: return False if casilla[0] >= 15 or casilla[1] >= 15: return False return True
def test_celdas_ocupadas(self): vehiculo = self.vehiculos["barco_p"] vehiculo.pos_actual = (5, 5) celdas_ocupadas = celdas.celdas_ocupadas(vehiculo.pos_actual, vehiculo.size) assert not (4, 4) in celdas_ocupadas assert (6, 5) in celdas_ocupadas assert not (5, 6) in celdas_ocupadas assert not (8, 5) in celdas_ocupadas
def check_espacio(self, elemento, posicion): celdas_ocupadas = self.casillas_ocupadas() celdas_nuevas = celdas.celdas_ocupadas(posicion, elemento.size) for casilla in celdas_nuevas: if casilla in celdas_ocupadas: return False if casilla[0] >= 15 or casilla[1] >= 15: return False return True
def atacado(self, ataque): if not isinstance(ataque, Paralizer): self.resistencia += ataque.damage if self.resistencia <= 0: print(""" {} ha sido destruido. Estaba ocupando las celdas {} """.format(self, celdas_ocupadas(self.pos_actual, self.size))) return False # mató return True # sigue vivo
def atacado(self, ataque): if not isinstance(ataque, Paralizer): self.resistencia += ataque.damage if self.resistencia <= 0: print(""" {} ha sido destruido. Estaba ocupando las celdas {} """.format(self, celdas_ocupadas(self.pos_actual, self.size))) return False # mató return True # sigue vivo
def mostrar_mapa(self, turno): numeros = list(map(lambda x: str(x + 1), range(self.dimension))) grilla = self.grilla_default() for elemento in self.historial[turno]: for celda in celdas.celdas_ocupadas(elemento.pos_actual, elemento.size): grilla[celda[0]][celda[1]] = elemento.id self.grilla_actual = grilla self.encabezado() for i in range(len(grilla)): numero = numeros[i] if int(numero) < 10: numero = "0{}".format(numeros[i]) print("{}".format(numero), grilla[i])
def mostrar_mapa(self, turno): numeros = list(map(lambda x: str(x + 1), range(self.dimension))) grilla = self.grilla_default() for elemento in self.historial[turno]: for celda in celdas.celdas_ocupadas(elemento.pos_actual, elemento.size): grilla[celda[0]][celda[1]] = elemento.id self.grilla_actual = grilla self.encabezado() for i in range(len(grilla)): numero = numeros[i] if int(numero) < 10: numero = "0{}".format(numeros[i]) print("{}".format(numero), grilla[i])
def atacar_mar(self, atacante, ataque, mapa): exitos = list() exito = "No" for celda in celdas.celdas_ocupadas(ataque.coordenada_ataque, ataque.size): exito = "No" resultado_ataque = mapa.get_elemento(celda) if resultado_ataque[0] and resultado_ataque[0] not in exitos: vehiculo_atacado = resultado_ataque[0] exito = "Si" exitos.append(vehiculo_atacado) if not vehiculo_atacado.atacado(ataque): mapa.borrar_elemento(vehiculo_atacado) if isinstance(ataque, Tomahawk) or isinstance(ataque, Explorar): print("Exito: {}".format(vehiculo_atacado)) else: print("Ataque exitoso: {}".format(celdas.index_to_coord(celda))) ataque.usar() atacante.historial_ataques.append( (atacante.turno, ataque, celdas.index_to_coord(ataque.coordenada_ataque), exito) )
def atacar_mar(self, atacante, ataque, mapa): exitos = list() exito = "No" for celda in celdas.celdas_ocupadas(ataque.coordenada_ataque, ataque.size): exito = "No" resultado_ataque = mapa.get_elemento(celda) if resultado_ataque[0] and resultado_ataque[0] not in exitos: vehiculo_atacado = resultado_ataque[0] exito = "Si" exitos.append(vehiculo_atacado) if not vehiculo_atacado.atacado(ataque): mapa.borrar_elemento(vehiculo_atacado) if isinstance(ataque, Tomahawk) or isinstance( ataque, Explorar): print("Exito: {}".format(vehiculo_atacado)) else: print("Ataque exitoso: {}".format( celdas.index_to_coord(celda))) ataque.usar() atacante.historial_ataques.append( (atacante.turno, ataque, celdas.index_to_coord(ataque.coordenada_ataque), exito))
def buscar_algo(self): celda = (random.randint(0, 14), random.randint(0, 14)) for celda in celdas_ocupadas(celda, (3, 3)): resultado = self.enemigo.mapas_propios["M"].get_elemento(celda) if resultado[0]: self.celda_exito = celda
def buscar_algo(self): celda = (random.randint(0, 14), random.randint(0, 14)) for celda in celdas_ocupadas(celda, (3, 3)): resultado = self.enemigo.mapas_propios["M"].get_elemento(celda) if resultado[0]: self.celda_exito = celda