Пример #1
0
        public ActionResult Xtream(Tablero tablero)
        {
            if (tablero.juego == "Versus")
            {
                string usuario = tablero.usuario, usuario_opuesto = "";

                if (usuario == Globals.usuario_activo)
                {
                    usuario_opuesto = "Oponente";
                }
                else
                {
                    usuario_opuesto = Globals.usuario_activo;
                }


                string color = tablero.color;

                int index = Juego.Ficha_seleccionada(tablero);

                //APERTURA PERSONALIZADA
                if (tablero.apertura_personalizada == "true")
                {
                    if (tablero.Apertura(index))
                    {
                        Juego.Reemplazar(tablero, index, color);
                        tablero.XActualizar(usuario_opuesto, 0, 0);

                        if (Juego.Celdas_ocupadas(tablero).Count == 4)
                        {
                            ViewBag.MessageType            = "success-message";
                            ViewBag.Message                = "¡Apertura personalizada finalizada!";
                            tablero.apertura_personalizada = "false";
                        }
                        else
                        {
                            ViewBag.MessageType = "neutral-message";
                            ViewBag.Message     = "Apertura personalizada en progreso, faltan " + (4 - Juego.Celdas_ocupadas(tablero).Count) + " fichas para finalizar";
                        }

                        return(View(tablero));
                    }
                    else
                    {
                        ViewBag.MessageType = "error-message";
                        ViewBag.Message     = "¡Posición de apertura no válida!";
                        Juego.Reemplazar(tablero, index, "");

                        return(View(tablero));
                    }
                }

                List <int> lista = Juego.XFlanquear(tablero, index, color); //ARREGLAR

                if (lista.Count > 0)
                {
                    Juego.Reemplazar_lista(tablero, lista, color);

                    List <int> celdas_validas;

                    if (usuario == "Oponente")
                    {
                        tablero.XActualizar(Globals.usuario_activo, tablero.movimientos, tablero.movimientos_oponente + 1);
                        celdas_validas = Juego.XCeldas_validas(tablero);
                    }
                    else
                    {
                        tablero.XActualizar("Oponente", tablero.movimientos + 1, tablero.movimientos_oponente);
                        celdas_validas = Juego.XCeldas_validas(tablero);
                    }


                    if (celdas_validas.Count > 0)
                    {
                        return(View(tablero));
                    }
                    else
                    {
                        if (tablero.usuario == "Oponente")
                        {
                            tablero.XActualizar(Globals.usuario_activo, tablero.movimientos, tablero.movimientos_oponente);
                            celdas_validas = Juego.XCeldas_validas(tablero);
                        }
                        else
                        {
                            tablero.XActualizar("Oponente", tablero.movimientos, tablero.movimientos_oponente);
                            celdas_validas = Juego.XCeldas_validas(tablero);
                        }

                        if (celdas_validas.Count > 0)
                        {
                            ViewBag.Message     = usuario_opuesto + " no tiene movimientos válidos";
                            ViewBag.MessageType = "error-message";

                            return(View(tablero));
                        }
                        else
                        {
                            //JUEGO TERMINADO
                            ViewBag.MessageType = "success-message";
                            ViewBag.Message     = Juego.XJuego_terminado(tablero);
                            return(View(tablero));
                        }
                    }
                }
                else
                {
                    Juego.Reemplazar(tablero, index, "");
                    return(View(tablero));
                }
            }
            else //SOLO
            {
                string usuario = tablero.usuario, usuario_opuesto = "";

                if (usuario == Globals.usuario_activo)
                {
                    usuario_opuesto = "Oponente";
                }
                else
                {
                    usuario_opuesto = Globals.usuario_activo;
                }


                string color = tablero.color;


                int index = Juego.Ficha_seleccionada(tablero);

                //APERTURA PERSONALIZADA
                if (tablero.apertura_personalizada == "true")
                {
                    if (tablero.Apertura(index))
                    {
                        Juego.Reemplazar(tablero, index, color);
                        tablero.XActualizar(usuario_opuesto, tablero.movimientos + 1, tablero.movimientos_oponente);

                        if (Juego.Celdas_ocupadas(tablero).Count == 4)
                        {
                            ViewBag.MessageType            = "success-message";
                            ViewBag.Message                = "¡Apertura personalizada finalizada!";
                            tablero.apertura_personalizada = "false";
                        }
                        else
                        {
                            Juego.Movimiento_cpu_apertura(tablero, tablero.color);
                            tablero.XActualizar(usuario, tablero.movimientos, tablero.movimientos_oponente + 1);

                            if (Juego.Celdas_ocupadas(tablero).Count == 4)
                            {
                                ViewBag.MessageType            = "success-message";
                                ViewBag.Message                = "¡Apertura personalizada finalizada!";
                                tablero.apertura_personalizada = "false";
                            }
                            else
                            {
                                ViewBag.MessageType = "neutral-message";
                                ViewBag.Message     = "Apertura personalizada en progreso, faltan " + (4 - Juego.Celdas_ocupadas(tablero).Count) + " fichas para finalizar";
                            }
                        }

                        return(View(tablero));
                    }
                    else
                    {
                        ViewBag.MessageType = "error-message";
                        ViewBag.Message     = "¡Posición de apertura no válida!";
                        Juego.Reemplazar(tablero, index, "");

                        return(View(tablero));
                    }
                }

                List <int> lista = Juego.XFlanquear(tablero, index, color);

                if (lista.Count > 0)
                {
                    Juego.Reemplazar_lista(tablero, lista, color);

                    tablero.XActualizar(usuario_opuesto, tablero.movimientos + 1, tablero.movimientos_oponente);
                    List <int> celdas_validas = Juego.XCeldas_validas(tablero);

                    if (celdas_validas.Count > 0)
                    {
                        //EJECUTANDO CAMBIOS DEL CPU
                        Juego.XMovimiento_cpu(tablero);

                        tablero.XActualizar(usuario, tablero.movimientos, tablero.movimientos_oponente + 1);
                        celdas_validas = Juego.XCeldas_validas(tablero);

                        if (celdas_validas.Count > 0)
                        {
                            return(View(tablero));
                        }
                        else
                        {
                            tablero.XActualizar(usuario_opuesto, tablero.movimientos, tablero.movimientos_oponente);

                            bool salir = false;
                            while (salir == false)
                            {
                                Juego.XMovimiento_cpu(tablero);
                                tablero.XActualizar(usuario_opuesto, tablero.movimientos, tablero.movimientos_oponente);
                                tablero.XActualizar(usuario_opuesto, tablero.movimientos, tablero.movimientos_oponente + 1);

                                celdas_validas = Juego.XCeldas_validas(tablero);

                                if (celdas_validas.Count > 0)
                                {
                                    salir = true;
                                }
                            }

                            return(View(tablero));
                        }
                    }
                    else
                    {
                        tablero.XActualizar(usuario, tablero.movimientos, tablero.movimientos_oponente);
                        celdas_validas = Juego.XCeldas_validas(tablero);

                        if (celdas_validas.Count > 0)
                        {
                            ViewBag.Message     = usuario_opuesto + " no tiene movimientos válidos";
                            ViewBag.MessageType = "error-message";

                            return(View(tablero));
                        }
                        else
                        {
                            //JUEGO TERMINADO
                            ViewBag.MessageType = "success-message";
                            ViewBag.Message     = Juego.XJuego_terminado(tablero);
                            return(View(tablero));
                        }
                    }
                }
                else
                {
                    Juego.Reemplazar(tablero, index, "");
                    return(View(tablero));
                }
            }
        }
Пример #2
0
        public ActionResult Versus(Tablero tablero)
        {
            string usuario = tablero.usuario, usuario_opuesto = "";

            if (usuario == Globals.usuario_activo)
            {
                usuario_opuesto = "Oponente";
            }
            else
            {
                usuario_opuesto = Globals.usuario_activo;
            }


            string color = tablero.color, color_opuesto = "";

            if (color == "blanco")
            {
                color_opuesto = "negro";
            }
            else
            {
                color_opuesto = "blanco";
            }


            int index = Juego.Ficha_seleccionada(tablero);

            //APERTURA PERSONALIZADA
            if (tablero.apertura_personalizada == "true")
            {
                if (tablero.Apertura(index))
                {
                    Juego.Reemplazar(tablero, index, color);
                    tablero.Actualizar(color_opuesto, usuario_opuesto, 0, 0);

                    if (Juego.Celdas_ocupadas(tablero).Count == 4)
                    {
                        ViewBag.MessageType            = "success-message";
                        ViewBag.Message                = "¡Apertura personalizada finalizada!";
                        tablero.apertura_personalizada = "false";
                    }
                    else
                    {
                        ViewBag.MessageType = "neutral-message";
                        ViewBag.Message     = "Apertura personalizada en progreso, faltan " + (4 - Juego.Celdas_ocupadas(tablero).Count) + " fichas para finalizar";
                    }

                    return(View(tablero));
                }
                else
                {
                    ViewBag.MessageType = "error-message";
                    ViewBag.Message     = "¡Posición de apertura no válida!";
                    Juego.Reemplazar(tablero, index, "");

                    return(View(tablero));
                }
            }

            List <int> lista = Juego.Flanquear(tablero, index, color, color_opuesto);

            if (lista.Count > 0)
            {
                Juego.Reemplazar_lista(tablero, lista, color);

                List <int> celdas_validas = Juego.Celdas_validas(tablero, color_opuesto, color);

                if (celdas_validas.Count > 0)
                {
                    if (usuario == "Oponente")
                    {
                        tablero.Actualizar(color_opuesto, Globals.usuario_activo, tablero.movimientos, tablero.movimientos_oponente + 1);
                    }
                    else
                    {
                        tablero.Actualizar(color_opuesto, "Oponente", tablero.movimientos + 1, tablero.movimientos_oponente);
                    }

                    return(View(tablero));
                }
                else
                {
                    celdas_validas = Juego.Celdas_validas(tablero, color, color_opuesto);

                    if (celdas_validas.Count > 0)
                    {
                        ViewBag.Message     = usuario_opuesto + " no tiene movimientos válidos";
                        ViewBag.MessageType = "error-message";

                        return(View(tablero));
                    }
                    else
                    {
                        //JUEGO TERMINADO
                        ViewBag.MessageType = "success-message";
                        ViewBag.Message     = Juego.Juego_terminado(tablero, color_opuesto);
                        return(View(tablero));
                    }
                }
            }
            else
            {
                Juego.Reemplazar(tablero, index, "");
                return(View(tablero));
            }
        }