Пример #1
0
        internal Juego(Form1 form1, bool anfitrion)
        {
            int formHandle;

            // Asigna variables del juego
            this.form1     = form1;
            this.anfitrion = anfitrion;

            // Setea lo esencial del juego
            formHandle            = form1.Handle.ToInt32();
            ladoLocal             = anfitrion ? ConstructorTablero.LadoTablero.izquierda : ConstructorTablero.LadoTablero.derecha;
            EstadoGeneralDelJuego = anfitrion ? EstadoDelJuego.EsperandoAccionLocal : EstadoDelJuego.EsperandoAccionRed; // Para saber quien inicia la partida

            // Setea el motor multimedia del juego
            audio   = new Audio();                                    //instancia el sistema de audio
            grafico = new Grafico(formHandle, 800, 500, form1, this); //instancia el sistema grafico
            mouse   = new Mouse(formHandle);

            // Desencadena el resto del juego
            tablero           = form1.ConstructorTablero.obtenerTablero(form1.NombreTablero, grafico);//crear el arreglo que representa el tablero
            Personaje.Tablero = tablero;

            form1.cambiarTurno(anfitrion);

            setPersonajes(form1.PersonajesLocales, true);
            setPersonajes(form1.PersonajesRemotos, false);

            audio.musicaDeFondoIniciar();     // Reproduce la musica de fondo
            grafico.iniciarGraficas(tablero); // Inicia el renderizado
            grafico.crearTableroEnPantalla(); // Representar el arreglo que representa el tablero en pantalla
        }
Пример #2
0
    void Start()
    {
        estadoDelJuego = EstadoDelJuego.Libre;

        CalcularTiempoHastaProximoEncuentro();

        juego = Juego.instancia;
        juego.SetMision(this);

        jugador = FindObjectOfType <Jugador>();
    }
Пример #3
0
 internal void formDoubleClick()
 {
     switch (EstadoGeneralDelJuego)
     {
     case EstadoDelJuego.PersonajeSeleccionadoMoverLocal:
     case EstadoDelJuego.PersonajeSeleccionadoAtacarLocal:
         deseleccionarPersonaje();
         grafico.ocultarRango();
         EstadoGeneralDelJuego = EstadoDelJuego.EsperandoAccionLocal;
         form1.Conexion.enviarDatos("6");
         break;
     }
 }
Пример #4
0
        internal void cambiarTurno()
        {
            yaAtaco = yaMovio = false;

            switch (EstadoGeneralDelJuego)
            {
            case EstadoDelJuego.EsperandoAccionLocal:
                EstadoGeneralDelJuego = EstadoDelJuego.EsperandoAccionRed;
                form1.cambiarTurno(false);
                break;

            case EstadoDelJuego.EsperandoAccionRed:
                EstadoGeneralDelJuego = EstadoDelJuego.EsperandoAccionLocal;
                form1.cambiarTurno(true);
                break;
            }
        }
Пример #5
0
        internal void matarPersonaje(Personaje futuroDifunto)
        {
            Coordenada coordenadaEnTablero = localizarPersonaje(futuroDifunto);

            tablero[coordenadaEnTablero.X, coordenadaEnTablero.Y].Personaje = null;

            for (int i = 0; i < 5; i++)
            {
                if (personajesLocales[i] != null && personajesLocales[i].Equals(futuroDifunto))
                {
                    personajesLocales[i] = null;
                    contadorLocales++;
                }
                else if (personajesRemotos[i] != null && personajesRemotos[i].Equals(futuroDifunto))
                {
                    personajesRemotos[i] = null;
                    contadorRemotos++;
                }
            }

            // ----Declara un ganador
            if (contadorRemotos == 5)
            {
                MessageBox.Show("Gano");
                EstadoGeneralDelJuego = EstadoDelJuego.PersonajeGano;
                grafico.declaracion(true);
            }
            else if (contadorLocales == 5)
            {
                MessageBox.Show("Perdio");
                EstadoGeneralDelJuego = EstadoDelJuego.PersonajePerdio;
                grafico.declaracion(false);
            }
            // ---- | -----

            if (form1.timerModoBatallaCompleto.Enabled)
            {
                victimaSeleccionadaMBC = null;
                personajeSeleccionadoDerecho();
                form1.timerModoBatallaCompleto.Enabled = false;
            }
            else
            {
                deseleccionarPersonaje();
            }
        }
Пример #6
0
        private void EstablecerEstadoDelJuego()
        {
            if (jugadasDelJugador.Count > 0 && jugadasDelJugador.Count == jugadasDeLaCompu.Count)
            {
                var jugadorAdivinó = jugadasDelJugador.Last().Bien == 4;
                var compuAdivinó   = jugadasDeLaCompu.Last().Bien == 4;

                if (jugadorAdivinó)
                {
                    Estado = compuAdivinó ? EstadoDelJuego.Empate : EstadoDelJuego.GanoElJugador;
                }
                else if (compuAdivinó)
                {
                    Estado = EstadoDelJuego.GanoLaCompu;
                }
            }
        }
Пример #7
0
        internal void modoBatallaCompletoRemoto(Coordenada coor)
        {
            ConstructorTablero.LadoTablero lado;
            lado = ladoLocal == ConstructorTablero.LadoTablero.derecha ? ConstructorTablero.LadoTablero.izquierda : ConstructorTablero.LadoTablero.derecha;

            grafico.ocultarRango();

            victimaSeleccionadaMBC = tablero[coor.X, coor.Y].Personaje;

            personajeSeleccionadoDerecho();

            form1.timerModoBatallaCompleto.Enabled = true;
            teclaMBC_huir = true;

            grafico.ataqueCompleto(personajeSeleccionado, victimaSeleccionadaMBC, lado);

            EstadoGeneralDelJuego = EstadoDelJuego.EsperandoAccionRed;
        }
Пример #8
0
        internal void formClickRemoto(Coordenada coor, string boton)
        {
            ConstructorTablero.LadoTablero lado;
            lado = ladoLocal == ConstructorTablero.LadoTablero.derecha ? ConstructorTablero.LadoTablero.izquierda : ConstructorTablero.LadoTablero.derecha;

            switch (EstadoGeneralDelJuego)
            {
            case EstadoDelJuego.EsperandoAccionRed:
                switch (boton)
                {
                case "izquierdo":
                    grafico.mostrarRango(personajeSeleccionado.rangoMovimiento(coor), grafico.idImagen_interfaz_CuadroRangoMover);

                    EstadoGeneralDelJuego = EstadoDelJuego.PersonajeSeleccionadoMoverRed;
                    break;

                case "derecho":
                    grafico.mostrarRango(personajeSeleccionado.rangoAtaque(coor), grafico.idImagen_interfaz_CuadroRangoAtacar);

                    EstadoGeneralDelJuego = EstadoDelJuego.PersonajeSeleccionadoAtacarRed;
                    break;
                }
                break;

            case EstadoDelJuego.PersonajeSeleccionadoMoverRed:
                grafico.ocultarRango();
                moverPersonaje(personajeSeleccionadoCoor, coor);
                seleccionarPersonaje(coor);

                EstadoGeneralDelJuego = EstadoDelJuego.EsperandoAccionRed;
                break;

            case EstadoDelJuego.PersonajeSeleccionadoAtacarRed:
                grafico.ocultarRango();

                grafico.ataqueSimple(personajeSeleccionado, tablero[coor.X, coor.Y].Personaje, lado);

                seleccionarPersonaje(coor);

                EstadoGeneralDelJuego = EstadoDelJuego.EsperandoAccionRed;
                break;
            }
        }
Пример #9
0
        /// <summary>
        /// Método que se llama cada vez que hay que refrescar la pantalla.
        /// Escribir aquí todo el código referido al renderizado.
        /// Borrar todo lo que no haga falta
        /// </summary>
        /// <param name="elapsedTime">Tiempo en segundos transcurridos desde el último frame</param>
        public override void render(float elapsedTime)
        {
            //Device de DirectX para renderizar
            Device d3dDevice = GuiController.Instance.D3dDevice;

            TgcD3dInput input = GuiController.Instance.D3dInput;

            if (input.keyPressed(Microsoft.DirectX.DirectInput.Key.I))
            {
                estado = EstadoDelJuego.Instrucciones;
            }



            if (EjemploAlumno.Instance.estado == EstadoDelJuego.SinEmpezar)
            {
                menu.renderSinEmpezar(this);
            }

            if (EjemploAlumno.Instance.estado == EstadoDelJuego.Instrucciones)
            {
                menu.renderInstrucciones(this);
            }

            if (EjemploAlumno.Instance.estado == EstadoDelJuego.Ganado)
            {
                menu.renderGanado(this);
            }

            if (EjemploAlumno.Instance.estado == EstadoDelJuego.Perdido)
            {
                menu.renderPerdido(this);
            }

            if (EjemploAlumno.Instance.estado == EstadoDelJuego.Jugando)
            {
                renderJuego(elapsedTime, d3dDevice);
            }
        }
Пример #10
0
 // permite cargar nuevamente el nivel por haberlo perdido
 private void ReiniciarNivel()
 {
     this.vidas--;
     if (this.vidas == 0)
         this.estado = EstadoDelJuego.perdido;
     else
     {
         this.dibujables = new List<IDibujable>();
         this.actuables = new List<IActuable>();
         this.nivelActual.Cargar();
     }
 }
Пример #11
0
 // permite pasar de nivel
 private void PasarDeNivel()
 {
     this.nivelActual = this.niveles[nivelActual.Numero];
     this.dibujables = new List<IDibujable>();
     this.actuables = new List<IActuable>();
     this.nivelActual.Cargar();
     this.estado = EstadoDelJuego.jugando;
 }
Пример #12
0
        // actualiza el menu principal segun el estado del juego
        private void ActualizarMenuPrincipal(KeyboardState teclado)
        {
            this.menuPrincipal.ActualizarControlDelUsuario(teclado);

            if (teclado.IsKeyDown(Keys.Enter))
            {
                if (this.menuPrincipal.ItemActivado() == 0)
                {
                    this.estado = EstadoDelJuego.jugando;
                    this.menuPrincipal.AgregarItem("Continuar", 0);
                }

                if (this.menuPrincipal.ItemActivado() == 1)
                {
                    try
                    {
                        CargarJuego();
                    }
                    catch (FileNotFoundException)
                    { }
                    estado = EstadoDelJuego.jugando;
                }

                if (this.menuPrincipal.ItemActivado() == 2)
                {
                    GuardarJuego();
                    this.Exit();
                }

                if (this.menuPrincipal.ItemActivado() == 3)
                    this.Exit();
            }
        }
Пример #13
0
 // controla el estado del juego
 private void ActualizarEstadoDelJuego()
 {
     if (estado == EstadoDelJuego.jugando)
     {
         this.nivelActual.Actualizar();
         if (this.nivelActual.Perdido())
             this.ReiniciarNivel();
         if (this.nivelActual.Ganado())
         {
             if (nivelActual.Numero == niveles.Count())
                 this.estado = EstadoDelJuego.ganado;
             else
                 this.estado = EstadoDelJuego.pausado;
         }
     }
 }
Пример #14
0
        // metodo encargado de las acciones que el usuario solicita por teclado
        private void ActualizarControlDelUsuario(KeyboardState teclado)
        {
            Bombita bombita = nivelActual.Bombita;
            if ((this.contadorDeCiclos >= (CICLOS_PARA_ACTUALIZAR_CONTROL_DEL_USUARIO - bombita.Velocidad())) &&
                ((this.contadorDeCiclos % (CICLOS_PARA_ACTUALIZAR_CONTROL_DEL_USUARIO - bombita.Velocidad())) == 0))
            {

                if (this.estado == EstadoDelJuego.pausado || this.estado == EstadoDelJuego.iniciando)
                {
                    if (this.nivelActual.Ganado())
                    {
                        if (teclado.IsKeyDown(Keys.Enter))
                            this.PasarDeNivel();
                    }
                    else
                        this.ActualizarMenuPrincipal(teclado);
                }
                if (this.estado == EstadoDelJuego.jugando)
                {
                    if (teclado.IsKeyDown(Keys.Right))
                        bombita.MoverAlEste();

                    if (teclado.IsKeyDown(Keys.Left))
                        bombita.MoverAlOeste();

                    if (teclado.IsKeyDown(Keys.Up))
                        bombita.MoverAlNorte();

                    if (teclado.IsKeyDown(Keys.Down))
                        bombita.MoverAlSur();

                    if (teclado.IsKeyDown(Keys.Space))
                        bombita.LanzarExplosivo();

                    if (teclado.IsKeyDown(Keys.P))
                        this.estado = EstadoDelJuego.pausado;
                }

                if (this.estado == EstadoDelJuego.ganado || this.estado == EstadoDelJuego.perdido)
                {
                    if (teclado.IsKeyDown(Keys.Enter))
                        this.Initialize();
                }
            }
            contadorDeCiclos++;
        }
Пример #15
0
        private void EstablecerEstadoDelJuego()
        {
            if (jugadasDelJugador.Count > 0 && jugadasDelJugador.Count == jugadasDeLaCompu.Count)
            {
                var jugadorAdivinó = jugadasDelJugador.Last().Bien == 4;
                var compuAdivinó = jugadasDeLaCompu.Last().Bien == 4;

                if (jugadorAdivinó)
                    Estado = compuAdivinó ? EstadoDelJuego.Empate : EstadoDelJuego.GanoElJugador;
                else if (compuAdivinó)
                    Estado = EstadoDelJuego.GanoLaCompu;
            }
        }
Пример #16
0
 internal void formDoubleClickRemoto()
 {
     deseleccionarPersonaje();
     grafico.ocultarRango();
     EstadoGeneralDelJuego = EstadoDelJuego.EsperandoAccionRed;
 }
Пример #17
0
 public Juego()
 {
     Estado            = EstadoDelJuego.Jugando;
     jugadasDelJugador = new List <NumeroAdivinado>();
     jugadasDeLaCompu  = new List <NumeroAdivinado>();
 }
Пример #18
0
        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            // TODO: Add your initialization logic here
            this.dibujables = new List<IDibujable>();
            this.actuables = new List<IActuable>();
            this.contadorDeCiclos = 0;
            this.vidas = VIDAS_POSIBLES;

            Window.Title = "Boomberman- 2012";
            this.estado = EstadoDelJuego.iniciando;

            this.menuPrincipal = new Menu(4, Color.Red, Color.Yellow, ANCHO, ALTO, Content.Load<SpriteFont>("SpriteFont2"));
            this.menuPrincipal.AgregarItem("Nuevo Juego", 0);
            this.menuPrincipal.AgregarItem("Cargar", 1);
            this.menuPrincipal.AgregarItem("Guardar", 2);
            this.menuPrincipal.AgregarItem("Salir", 3);

            base.Initialize();
        }
Пример #19
0
 public Juego()
 {
     Estado = EstadoDelJuego.Jugando;
     jugadasDelJugador = new List<NumeroAdivinado>();
     jugadasDeLaCompu = new List<NumeroAdivinado>();
 }
Пример #20
0
        internal void formClick()                                                                     // Este metodo se recibe cuando el usuario da click en el formulario
        {
            Coordenada coor = grafico.bloqueDelTableroSeleccionado(mouse.MousePosX, mouse.MousePosY); // Obtiene el bloque que se selecciono con el mouse

            if (coor == null)
            {
                return;
            }

            switch (EstadoGeneralDelJuego)
            {
            case EstadoDelJuego.EsperandoAccionLocal:
                if (seleccionarPersonaje(coor))    // Se marca como personaje seleccionado al que se le dio click
                {
                    form1.Conexion.enviarDatos("8;" + coor.X + "," + coor.Y);
                }
                else
                {
                    break;
                }

                if (tablero[coor.X, coor.Y].Personaje.EsLocal)
                {
                    Mouse.MouseClick clic = mouse.mouseClick();     // Obtiene cual de los tres botones del mouse fue presionado

                    switch (clic)
                    {
                    case Mouse.MouseClick.izquierdo:
                        if (!yaMovio)
                        {
                            grafico.mostrarRango(personajeSeleccionado.rangoMovimiento(coor), grafico.idImagen_interfaz_CuadroRangoMover);

                            EstadoGeneralDelJuego = EstadoDelJuego.PersonajeSeleccionadoMoverLocal;         //cambia el estado del juego

                            form1.Conexion.enviarDatos("2;" + coor.X + "," + coor.Y + "," + clic.ToString());
                        }
                        break;

                    case Mouse.MouseClick.derecho:
                        if (!yaAtaco)
                        {
                            grafico.mostrarRango(personajeSeleccionado.rangoAtaque(coor), grafico.idImagen_interfaz_CuadroRangoAtacar);

                            EstadoGeneralDelJuego = EstadoDelJuego.PersonajeSeleccionadoAtacarLocal;         //cambia el estado del juego a... personaje seleccionado para mover

                            form1.Conexion.enviarDatos("2;" + coor.X + "," + coor.Y + "," + clic.ToString());
                        }
                        break;
                    }
                }
                break;

            case EstadoDelJuego.PersonajeSeleccionadoMoverLocal:
                if (comprobarRango(coor, personajeSeleccionado.rangoMovimiento(personajeSeleccionadoCoor)))     // Comprueba si el cuadro al que se le dio click esta dentro del rango de movimiento del personaje seleccionado
                {
                    grafico.ocultarRango();
                    moverPersonaje(personajeSeleccionadoCoor, coor);     // Mover personaje
                    seleccionarPersonaje(coor);

                    yaMovio = !yaMovio;
                    EstadoGeneralDelJuego = EstadoDelJuego.EsperandoAccionLocal;     // Cambiando estado a esperando accion

                    form1.Conexion.enviarDatos("3;" + coor.X + "," + coor.Y);

                    if (yaAtaco)
                    {
                        cambiarTurno();
                        form1.Conexion.enviarDatos("7");
                    }
                }
                break;

            case EstadoDelJuego.PersonajeSeleccionadoAtacarLocal:
                if (tablero[coor.X, coor.Y].Personaje != null && !tablero[coor.X, coor.Y].Personaje.EsLocal)    // Verifica si hay un personaje en las coordenadas en las que se va a atacar
                {
                    if (comprobarRango(coor, personajeSeleccionado.rangoAtaque(personajeSeleccionadoCoor)))     // Verifica si las coordenadas que se seleccionaron estan dentro del rango
                    {
                        int codigo;

                        grafico.ocultarRango();

                        if (siEntraModoBatallaCompleta(personajeSeleccionadoCoor, coor) && System.Windows.Forms.MessageBox.Show("Desea entrar en modo batalla completo?", "Mensaje", System.Windows.Forms.MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
                        {
                            codigo = 5;
                            victimaSeleccionadaMBC = tablero[coor.X, coor.Y].Personaje;

                            personajeSeleccionadoDerecho();

                            form1.timerModoBatallaCompleto.Enabled = true;
                            teclaMBC_huir = true;

                            grafico.ataqueCompleto(personajeSeleccionado, victimaSeleccionadaMBC, ladoLocal);
                        }
                        else
                        {
                            codigo = 4;

                            grafico.ataqueSimple(personajeSeleccionado, tablero[coor.X, coor.Y].Personaje, ladoLocal);

                            seleccionarPersonaje(coor);
                        }

                        yaAtaco = !yaAtaco;
                        EstadoGeneralDelJuego = EstadoDelJuego.EsperandoAccionLocal;     //Cambiando estado a esperando accion

                        form1.Conexion.enviarDatos(codigo + ";" + coor.X + "," + coor.Y);

                        if (yaMovio)
                        {
                            cambiarTurno();
                            form1.Conexion.enviarDatos("7");
                        }
                    }
                }
                break;
            }
        }