static bool ContactoBalasHeroeCangrejoEspecial(CangrejoEspecial _cangrejoEspecial, Disparo _disparoHeroe) { for (int ic = 0; ic < _cangrejoEspecial.posicionCangrejoEspecial.Length; ic++) { if (_cangrejoEspecial.posicionCangrejoEspecial[ic].x == _disparoHeroe.posicionDisparo.x && _cangrejoEspecial.posicionCangrejoEspecial[ic].y == _disparoHeroe.posicionDisparo.y) { return(true); } } return(false); }
/// <summary> /// /// </summary> static void InicializacionJuego() { bool JuegoActivo = true; Pantalla pantallaJuego; Defensas[] defensasLevel; Posicion posicionaSalidaEnemigo; Posicion posicionSalidaHeroe; Posicion posicionSalidaCangrejoEspecial; Posicion posicionGuiVidas; Posicion posicionScore; //****enemigos****** int cantidadEnemigosFila = 6;//max 6 int cantidadEnemigosColumna = 5; int direccionXEnemigos = 1; int direccionYEnemigos = 0; int velocidadEnemigos = 1; int FireRateEnemigos = 25; int timeFireRateEnemigos = 0; int timeSpawnCangrejoEspecial = 0; int SpawnCangrejoEspecial = 250; int scoreCangrejo = 10; Disparo copiaDisparoEnemigo; List <Disparo> ListadisparosEnemigos = new List <Disparo>(); CangrejoEspecial copiaCangrejoEspecial = new CangrejoEspecial(); List <Cangrejo> listaEnemigos = new List <Cangrejo>(); //heroe int velocidadHeroe = 2; int vidaJugador = 3; bool definicion = false; int score = 0; int scoreFinal = 0; Random r = new Random(); pantallaJuego = new Pantalla(50, 50); posicionaSalidaEnemigo.x = pantallaJuego.anchoPantalla / 2 - cantidadEnemigosColumna / 2; posicionaSalidaEnemigo.y = 1; listaEnemigos = CreacionEnemigos(cantidadEnemigosFila, cantidadEnemigosColumna, posicionaSalidaEnemigo, pantallaJuego.anchoPantalla, pantallaJuego.altoPantalla); // AgregarEnemigo(listaEnemigos,pantallaJuego); //*****jugador****** posicionSalidaHeroe.x = pantallaJuego.anchoPantalla / 2; posicionSalidaHeroe.y = pantallaJuego.altoPantalla - 5; Player jugador = new Player(posicionSalidaHeroe); jugador.SetLimitsJugador(pantallaJuego.anchoPantalla, pantallaJuego.altoPantalla); //*****agregando jugador al screen******** for (int ip = 0; ip < jugador.posicionJugador.Length; ip++) { pantallaJuego.AgregarElemento(jugador.posicionJugador[ip], jugador.spriteHeroe[ip]); } //*****agregando defensas*********** defensasLevel = CreacionDefensas(pantallaJuego.anchoPantalla, pantallaJuego.altoPantalla); AgregarDefensas(defensasLevel, pantallaJuego); int tiempoRespawn_heroe = 20;//respawn del heroe int contadorEnemigos = cantidadEnemigosFila * cantidadEnemigosColumna; int[] direcciones_enemigos = new int[2]; direcciones_enemigos[0] = direccionXEnemigos; direcciones_enemigos[1] = direccionYEnemigos; int c = 0; posicionGuiVidas.x = pantallaJuego.anchoPantalla - 2; posicionGuiVidas.y = 2; posicionScore.x = 2; posicionScore.y = 2; // int contadorCantidadNumeros = 0; pantallaJuego.EscrituraMatriz(); //////////////////////////***********************************bucle juego***********************************************************************////////////////////////// while (JuegoActivo) { /////***************************************respawn disparo heroe****************************************** pantallaJuego.Clear_Matriz(); if (jugador.disparoActivo) { jugador.timeFireRate += 1; if (jugador.timeFireRate > jugador.fireRate) { jugador.disparoActivo = false; jugador.timeFireRate = 0; } } //*******************************************************respawn disparo enemigos********************************************** timeFireRateEnemigos += 1; if (timeFireRateEnemigos > FireRateEnemigos) { Cangrejo enemigoDispara = EleccionDisparoEnemigo(listaEnemigos, listaEnemigos.Count); copiaDisparoEnemigo = new Disparo('I', enemigoDispara.posicionEnemigo[1], 1); pantallaJuego.AgregarElemento(copiaDisparoEnemigo.posicionDisparo, copiaDisparoEnemigo.sprite); ListadisparosEnemigos.Add(copiaDisparoEnemigo); timeFireRateEnemigos = 0; } //**************************************************respawn enemigoEspecial************************************************** timeSpawnCangrejoEspecial += 1; //Console.WriteLine("tiempoCangrejoEspecial " + timeSpawnCangrejoEspecial); if (copiaCangrejoEspecial.spriteCangrejoEspecial != "") { copiaCangrejoEspecial.MoverCangrejoEspecial(1, 1); for (int ie2 = 0; ie2 < copiaCangrejoEspecial.posicionCangrejoEspecial.Length; ie2++) { pantallaJuego.AgregarElemento(copiaCangrejoEspecial.posicionCangrejoEspecial[ie2], copiaCangrejoEspecial.spriteCangrejoEspecial[ie2]); } } if (timeSpawnCangrejoEspecial > SpawnCangrejoEspecial) { posicionSalidaCangrejoEspecial.x = 0; posicionSalidaCangrejoEspecial.y = r.Next(3, 6); copiaCangrejoEspecial.SpawnCangrejoEspecial("> O <", posicionSalidaCangrejoEspecial); for (int ie2 = 0; ie2 < copiaCangrejoEspecial.posicionCangrejoEspecial.Length; ie2++) { pantallaJuego.AgregarElemento(copiaCangrejoEspecial.posicionCangrejoEspecial[ie2], copiaCangrejoEspecial.spriteCangrejoEspecial[ie2]); } timeSpawnCangrejoEspecial = 0; } for (int ic = 0; ic < copiaCangrejoEspecial.spriteCangrejoEspecial.Length; ic++) { if (copiaCangrejoEspecial.posicionCangrejoEspecial[ic].x > pantallaJuego.anchoPantalla - 1) { copiaCangrejoEspecial.spriteCangrejoEspecial = ""; } } //***************************************gui************************************* string vidasJugador_string = "vidas: " + vidaJugador.ToString(); posicionGuiVidas.x = pantallaJuego.anchoPantalla - vidasJugador_string.Length - 3; string score_string = "score: " + scoreFinal.ToString(); posicionScore.x = score_string.Length - 6; ImprimirStringScreen(pantallaJuego, vidasJugador_string, posicionGuiVidas); ImprimirStringScreen(pantallaJuego, score_string, posicionScore); //************************************************************************************ENEMIGOS********************************************************************* if (contadorEnemigos < 4) { velocidadEnemigos = 2; } direcciones_enemigos = LimitesEnemigos(listaEnemigos, pantallaJuego.anchoPantalla, pantallaJuego.altoPantalla, direcciones_enemigos[0], direcciones_enemigos[1], velocidadEnemigos, posicionSalidaHeroe.y); bool perderMeta = ControlMetaEnemigos(listaEnemigos); if (!perderMeta)//si algun enemigo llego a la meta { MoviendoEnemigos(listaEnemigos, velocidadEnemigos, direcciones_enemigos[0], direcciones_enemigos[1]); AgregarEnemigo(listaEnemigos, pantallaJuego); //************************************************disparo enemigos******************************************* for (int i = 0; i < ListadisparosEnemigos.Count; i++) { bool contacto_bala_enemigo_heroe_activo = ContactoBalasEnemigosHeroe(jugador, ListadisparosEnemigos[i]); //contacto con heroe bool contactoLadrillo_activo = ContactoBalasDefensas(ListadisparosEnemigos[i], defensasLevel, 3); //contacto defensas bool balaEnemigoFueraEscenario = LimiteBalasEnemigosFueraEscenario(ListadisparosEnemigos[i], pantallaJuego.altoPantalla - 1); //fuera del escenario if (contactoLadrillo_activo) { ListadisparosEnemigos.Remove(ListadisparosEnemigos[i]); contactoLadrillo_activo = false; } else if (contacto_bala_enemigo_heroe_activo) { vidaJugador--; ListadisparosEnemigos.Remove(ListadisparosEnemigos[i]); jugador.spriteHeroe = "";//muerte del heroe jugador.heroMuerto = true; contacto_bala_enemigo_heroe_activo = false; } else if (balaEnemigoFueraEscenario) { ListadisparosEnemigos.Remove(ListadisparosEnemigos[i]); balaEnemigoFueraEscenario = false; } else //moves balas despues de controlar colisiones { ListadisparosEnemigos[i].MoverDisparoArribaAbajo(); pantallaJuego.AgregarElemento(ListadisparosEnemigos[i].posicionDisparo, ListadisparosEnemigos[i].sprite); } } } else { definicion = false; JuegoActivo = false; } // Console.WriteLine("vidas" + jugador.vidas); // ****************************-----------------------************************ //*******************************agregando defensas******************************* for (int i = 0; i < 3; i++) { for (int ifila = 0; ifila < defensasLevel[i].cantidadTotal; ifila++) { pantallaJuego.AgregarElemento(defensasLevel[i].posicionDefensas[ifila], defensasLevel[i].spriteDefensas_1[ifila]); } } //****************************jugador********************************** if (jugador.heroMuerto) { // vidaJugador--; if (vidaJugador <= 0) { definicion = false; // Console.WriteLine("perdisteeeee"); JuegoActivo = false; } else { //heroe muerto//respawn tiempo c += 1; // Console.WriteLine("TIEMPO " + c); // Console.WriteLine("muerto " + heroeMuerto); if (c > tiempoRespawn_heroe) { jugador = new Player(posicionSalidaHeroe); jugador.SetLimitsJugador(50, 50); c = 0; jugador.heroMuerto = false; } } } else { jugador = InputHeroe(jugador, velocidadHeroe); //movimiento heroe for (int ip = 0; ip < jugador.posicionJugador.Length; ip++) { pantallaJuego.AgregarElemento(jugador.posicionJugador[ip], jugador.spriteHeroe[ip]);//agregamos pantalla } ////**************************disparos jugador**************************** for (int i = 0; i < jugador.listaDisparoHeroe.Count; i++) { bool contactoBalaHeroeEnemigo_activo = ContactoBalasHeroeEnemigos(jugador.listaDisparoHeroe[i], listaEnemigos); //contacto con enemigo bool ladrilloFuera_heroeDisparo = ContactoBalasDefensas(jugador.listaDisparoHeroe[i], defensasLevel, 3); //contacto con defensa bool balaFueraEscenario_activo = LimiteBalasHeroeEscenario(jugador); //fuera del escenario bool contactoBalaHeroeCangrejoEspecial_activo = false; if (copiaCangrejoEspecial.spriteCangrejoEspecial != "") { contactoBalaHeroeCangrejoEspecial_activo = ContactoBalasHeroeCangrejoEspecial(copiaCangrejoEspecial, jugador.listaDisparoHeroe[i]); } if (ladrilloFuera_heroeDisparo) {//contacto defensa jugador.listaDisparoHeroe.Remove(jugador.listaDisparoHeroe[i]); ladrilloFuera_heroeDisparo = false; // jugador.listaDisparoHeroe.Remove(jugador.listaDisparoHeroe[i]); } else if (contactoBalaHeroeEnemigo_activo) {//contacto enemigo jugador.listaDisparoHeroe.Remove(jugador.listaDisparoHeroe[i]); contadorEnemigos--; score += scoreCangrejo; if (contadorEnemigos <= 0) { definicion = true; JuegoActivo = false; } contactoBalaHeroeEnemigo_activo = false; } else if (contactoBalaHeroeCangrejoEspecial_activo) { jugador.listaDisparoHeroe.Remove(jugador.listaDisparoHeroe[i]); copiaCangrejoEspecial.scoreAcumuladoCangrejo += copiaCangrejoEspecial.scoreCangrejoEspecial; copiaCangrejoEspecial.spriteCangrejoEspecial = ""; contactoBalaHeroeCangrejoEspecial_activo = false; } else if (balaFueraEscenario_activo) {//fuera del escenario jugador.listaDisparoHeroe.Remove(jugador.listaDisparoHeroe[i]); balaFueraEscenario_activo = false; } else { //moves disparo jugador.listaDisparoHeroe[i].MoverDisparoAbajoArriba(); pantallaJuego.AgregarElemento(jugador.listaDisparoHeroe[i].posicionDisparo, jugador.listaDisparoHeroe[i].sprite); } } } scoreFinal = score + copiaCangrejoEspecial.scoreAcumuladoCangrejo; pantallaJuego.EscrituraMatriz(); } //pantallaJuego.Clear_Matriz(); //pantallaJuego.EscrituraMatriz(); //Posicion posicionDefinicion; //posicionDefinicion.y = pantallaJuego.altoPantalla / 2; // int numEleccion; // Posicion posicionDefinicionPregunta; // string nombreUsuario; if (definicion) { string textodef = "<WIN>"; Console.WriteLine(textodef); DefinicionFinal(); } else { string textodef = "<GAME OVER>"; Console.WriteLine(textodef); DefinicionFinal(); } Console.Clear(); Console.ReadLine(); }