public override int[] moverse(Terreno terrenoActual, Johto region, int direccionMov) { int filaActual = terrenoActual.getFila(); int colActual = terrenoActual.getColumna(); return(new int[] { filaActual, colActual }); }
public override int[] moverse(Terreno terrenoActual, Johto region, int direccionMov) { int filaActual = terrenoActual.getFila(); int colActual = terrenoActual.getColumna(); int filaNueva = 0; int colNueva = 0; switch (direccionMov) { // Se mueve al terreno de arriba case 0: filaNueva = filaActual - 1; colNueva = colActual; break; // Se mueve al terreno de la deracha case 1: colNueva = colActual + 1; filaNueva = filaActual; break; // Se mueve al terreno de abajo case 2: filaNueva = filaActual + 1; colNueva = colActual; break; // Se mueve al terreno de la izquierda case 3: colNueva = colActual - 1; filaNueva = filaActual; break; // Se mantiene en el mismo terreno case 4: colNueva = colActual; filaNueva = filaActual; break; default: colNueva = colActual; filaNueva = filaActual; break; } //Valida si se puede mover o no , dependiendo de las dimensiones del mapa. if (puedeMoverse(colNueva, filaNueva, direccionMov, region) == true) { return(new int[] { filaNueva, colNueva }); } else { return(new int[] { filaActual, colActual }); } }
public override void breed(Johto region, Terreno terreno, Bitmon reproductor) { TiposBitmons tipos = new TiposBitmons(); int randomBitmon = random.Next(0, 6); string tipoBitmon = tipos.tipo[randomBitmon]; int randomTerrenoFila = random.Next(0, region.alto); int randomTerrenoCol = random.Next(0, region.ancho); if ((region.mapaRegion[randomTerrenoFila, randomTerrenoCol].getTipo() != "Volcan") && (region.mapaRegion[randomTerrenoFila, randomTerrenoCol].getTipo() != "Acuatico")) { region.mapaRegion[randomTerrenoFila, randomTerrenoCol].bitmonsTerreno.Add(new Ent()); reproductor.tiempoVida += reproductor.tiempoVidaPerdido * 0.3; reproductor.cantidadDeHijos += 1; } }
private bool puedeMoverse(int colNueva, int filaNueva, int direccionMov, Johto region) { bool retorno = true; switch (direccionMov) { case 0: if (filaNueva < 0) { retorno = false; } break; case 1: if (colNueva / region.ancho > 0) { retorno = false; } break; case 2: if (filaNueva / region.alto > 0) { retorno = false; } break; case 3: if (colNueva < 0) { retorno = false; } break; case 4: retorno = false; break; default: retorno = false; break; } return(retorno); }
public override void breed(Johto region, Terreno terreno, Bitmon reproductor) { TiposBitmons tipos = new TiposBitmons(); foreach (Bitmon bitmon in terreno.bitmonsTerreno) { if (bitmon != reproductor) { if ((reproductor.bitmonsAfines.Contains(bitmon.getTipo()) && bitmon.bitmonsAfines.Contains(reproductor.getTipo()))) { reproductor.yaSeReprodujo = true; bitmon.yaSeReprodujo = true; if (bitmon.cantidadDeHijos == reproductor.cantidadDeHijos) { int randomBitmon = random.Next(0, 6); string tipoBitmon = tipos.tipo[randomBitmon]; int randomTerrenoFila = random.Next(0, region.alto); int randomTerrenoCol = random.Next(0, region.ancho); switch (tipoBitmon) { case "Dorvalo": region.mapaRegion[randomTerrenoFila, randomTerrenoCol].bitmonsTerreno.Add(new Dorvalo()); break; case "Doti": region.mapaRegion[randomTerrenoFila, randomTerrenoCol].bitmonsTerreno.Add(new Doti()); break; case "Ent": break; case "Gofue": region.mapaRegion[randomTerrenoFila, randomTerrenoCol].bitmonsTerreno.Add(new Gofue()); break; case "Taplan": region.mapaRegion[randomTerrenoFila, randomTerrenoCol].bitmonsTerreno.Add(new Taplan()); break; case "Wetar": if (region.mapaRegion[randomTerrenoFila, randomTerrenoCol].getTipo() != "Acuatico") { continue; } else { region.mapaRegion[randomTerrenoFila, randomTerrenoCol].bitmonsTerreno.Add(new Wetar()); break; } } bitmon.cantidadDeHijos += 1; reproductor.cantidadDeHijos += 1; } else { int randomBitmon = random.Next(0, 7); if (randomBitmon == 6) { if (reproductor.cantidadDeHijos > bitmon.cantidadDeHijos) { foreach (KeyValuePair <int, string> pair in tipos.tipo) { if (pair.Value == reproductor.getTipo()) { randomBitmon = pair.Key; } } } else if (reproductor.cantidadDeHijos < bitmon.cantidadDeHijos) { foreach (KeyValuePair <int, string> pair in tipos.tipo) { if (pair.Value == bitmon.getTipo()) { randomBitmon = pair.Key; } } } } string tipoBitmon = tipos.tipo[randomBitmon]; int randomTerrenoFila = random.Next(0, region.alto); int randomTerrenoCol = random.Next(0, region.ancho); switch (tipoBitmon) { case "Dorvalo": region.mapaRegion[randomTerrenoFila, randomTerrenoCol].bitmonsTerreno.Add(new Dorvalo()); break; case "Doti": region.mapaRegion[randomTerrenoFila, randomTerrenoCol].bitmonsTerreno.Add(new Doti()); break; case "Ent": break; case "Gofue": region.mapaRegion[randomTerrenoFila, randomTerrenoCol].bitmonsTerreno.Add(new Gofue()); break; case "Taplan": region.mapaRegion[randomTerrenoFila, randomTerrenoCol].bitmonsTerreno.Add(new Taplan()); break; case "Wetar": if (region.mapaRegion[randomTerrenoFila, randomTerrenoCol].getTipo() != "Acuatico") { continue; } else { region.mapaRegion[randomTerrenoFila, randomTerrenoCol].bitmonsTerreno.Add(new Wetar()); break; } } bitmon.cantidadDeHijos += 1; reproductor.cantidadDeHijos += 1; } reproductor.yaSeReprodujo = true; reproductor.tiempoVida += reproductor.tiempoVidaPerdido * 0.3; bitmon.yaSeReprodujo = true; bitmon.tiempoVida += bitmon.tiempoVidaPerdido * 0.3; break; } } } }
public abstract void breed(Johto region, Terreno terreno, Bitmon reproductor);
public abstract int[] moverse(Terreno terreno, Johto region, int direccionMov);
static void Main(string[] args) { //Creacion de las 3 cofiguraciones, con mapa y bitmons correspondientes. Johto config1 = new Johto(0, 3, 3); Johto config2 = new Johto(1, 4, 4); Johto config3 = new Johto(2, 5, 5); config1.crearMapa(); config2.crearMapa(); config3.crearMapa(); config1.crearBitmons(); config2.crearBitmons(); config3.crearBitmons(); string opcion1 = "[Opción 1] Dimesiones mapa: 3x3, Terrenos(N° Bitmons iniciales): \n\n"; string opcion2 = "[Opción 2] Dimesiones mapa: 4x4, Terrenos(N° Bitmons iniciales): \n\n"; string opcion3 = "[Opción 3] Dimesiones mapa: 5x5, Terrenos(N° Bitmons iniciales): \n\n"; int contadorfila = 0; foreach (Terreno terreno in config1.mapaRegion) { opcion1 += terreno.getTipoAbrev() + "(" + terreno.numBitmons() + ") - "; contadorfila++; if (contadorfila % 3 == 0) { opcion1 = opcion1.Substring(0, opcion1.Length - 2); opcion1 += "\n"; } } contadorfila = 0; foreach (Terreno terreno in config2.mapaRegion) { opcion2 += terreno.getTipoAbrev() + "(" + terreno.numBitmons() + ") - "; contadorfila++; if (contadorfila % 4 == 0) { opcion2 = opcion2.Substring(0, opcion2.Length - 2); opcion2 += "\n"; } } contadorfila = 0; foreach (Terreno terreno in config3.mapaRegion) { opcion3 += terreno.getTipoAbrev() + "(" + terreno.numBitmons() + ") - "; contadorfila++; if (contadorfila % 5 == 0) { opcion3 = opcion3.Substring(0, opcion3.Length - 2); opcion3 += "\n"; } } // Definicion de terrenos,region y mundoBitmons // Console.WindowWidth = 90; //Console.WindowHeight = 50; Console.SetWindowPosition(0, 0); MapasConsola mapas = new MapasConsola(); Console.WriteLine(mapas.logo); Console.WriteLine("Configuraciones iniciales disponibles: \n"); Console.WriteLine("\nTipos Terreno--> Ac=Acuatico , De=Desierto , Ni=Nieve , Ve=Vegetacion , Vo=Volcan \n\n"); Console.WriteLine(opcion1); Console.WriteLine(opcion2); Console.WriteLine(opcion3); Console.WriteLine("Elija una opción: "); int dimensionMapa = Convert.ToInt32(Console.ReadLine()); dimensionMapa = dimensionMapa - 1; Console.WriteLine("\nIngrese cuantos meses quiere simular: "); int mesesSimulacion = Convert.ToInt32(Console.ReadLine()); Johto regionElegida; switch (dimensionMapa) { case 0: regionElegida = config1; break; case 1: regionElegida = config2; break; case 2: regionElegida = config3; break; default: regionElegida = config1; break; } Simulador simulador = new Simulador(dimensionMapa, regionElegida, mesesSimulacion); simulador.comenzarSimulacion(); }