Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        /// <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();
        }