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)); } } }
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)); } }