Advertisement
Fhernd

Principal.cs

Jul 25th, 2014
2,607
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 9.66 KB | None | 0 0
  1. // ===++===
  2. //
  3. //    OrtizOL
  4. //
  5. // ===--===
  6. /*============================================================
  7. //
  8. // Clase: Principal.cs
  9. //
  10. // Original en: http://goo.gl/MpVxzE
  11. //
  12. // Propósito: Representa la ventana principal de la
  13. // aplicación de triqui.
  14. //
  15. ============================================================*/
  16.  
  17. using System;
  18. using System.ComponentModel;
  19. using System.Drawing;
  20. using System.Windows.Forms;
  21. using Triqui.Modelo;
  22.  
  23. namespace Triqui.GUI
  24. {
  25.     public partial class Principal : Form
  26.     {
  27.         #region Campos
  28.         /// <summary>
  29.         /// Juego de triqui a jugar.
  30.         /// </summary>
  31.         private Triqui.Modelo.Triqui juegoTrigui;
  32.         /// <summary>
  33.         /// Representa una instancia de jugador PC.
  34.         /// </summary>
  35.         private JugadorPC jugadorPC;
  36.         #endregion
  37.  
  38.         #region Componentes
  39.         /// <summary>
  40.         /// Control con los botones de creación de juego.
  41.         /// </summary>
  42.         private ControlBotones controlBotones;
  43.         /// <summary>
  44.         /// Control para los mensajes de estado del juego.
  45.         /// </summary>
  46.         private ControlMensajes controlMensajes;
  47.         /// <summary>
  48.         /// Control para las nueve casillas del tablero.
  49.         /// </summary>
  50.         private ControlTriqui controlTriqui;
  51.         #endregion
  52.  
  53.         #region Constantes
  54.         /// <summary>
  55.         /// Marca para el jugador humano.
  56.         /// </summary>
  57.         private const char MARCA_JUGADOR = 'X';
  58.         /// <summary>
  59.         /// Marca para el jugador máquina.
  60.         /// </summary>
  61.         private const char MARCA_PC = 'O';
  62.         #endregion
  63.  
  64.         #region Constructores
  65.         /// <summary>
  66.         /// Crea una instancia de la ventana principal.
  67.         /// </summary>
  68.         public Principal()
  69.         {
  70.             InitializeComponent();
  71.             ConfiguracionComponentes();
  72.  
  73.             // Icono de la aplicación:
  74.             this.Icon = Properties.Resources.triqui;
  75.  
  76.             // Creación de instancia de la clase Triqui:
  77.             juegoTrigui = new Modelo.Triqui();
  78.  
  79.             // Crea el jugador PC:
  80.             jugadorPC = new JugadorPC(juegoTrigui, MARCA_PC);
  81.         }
  82.         #endregion
  83.  
  84.         #region Métodos
  85.         /// <summary>
  86.         /// Actualiza el estado de las nueve casillas del tablero.
  87.         /// </summary>
  88.         public void ActualizarTablero()
  89.         {
  90.             for (int i = 1; i <= 9; ++i)
  91.             {
  92.                 switch (i)
  93.                 {
  94.                     case 1:
  95.                         if (!juegoTrigui.CasillaVacia(PosicionCasilla.SuperiorIzquierda))
  96.                         {
  97.                             controlTriqui.btnPosicionSuperiorIzquierda.Enabled = false;
  98.                             controlTriqui.btnPosicionSuperiorIzquierda.Text =
  99.                                 String.Format("{0}", juegoTrigui.ObtenerMarcaCasilla(PosicionCasilla.SuperiorIzquierda));
  100.                         }
  101.                         break;
  102.                     case 2:
  103.                         if (!juegoTrigui.CasillaVacia(PosicionCasilla.SuperiorCentro))
  104.                         {
  105.                             controlTriqui.btnPosicionSuperiorCentro.Enabled = false;
  106.                             controlTriqui.btnPosicionSuperiorCentro.Text =
  107.                                 String.Format("{0}", juegoTrigui.ObtenerMarcaCasilla(PosicionCasilla.SuperiorCentro));
  108.                         }
  109.                         break;
  110.                     case 3:
  111.                         if (!juegoTrigui.CasillaVacia(PosicionCasilla.SuperiorDerecha))
  112.                         {
  113.                             controlTriqui.btnPosicionSuperiorDerecha.Enabled = false;
  114.                             controlTriqui.btnPosicionSuperiorDerecha.Text =
  115.                                 String.Format("{0}", juegoTrigui.ObtenerMarcaCasilla(PosicionCasilla.SuperiorDerecha));
  116.                         }
  117.                         break;
  118.                     case 4:
  119.                         if (!juegoTrigui.CasillaVacia(PosicionCasilla.MedioIzquierda))
  120.                         {
  121.                             controlTriqui.btnPosicionMedioIzquierda.Enabled = false;
  122.                             controlTriqui.btnPosicionMedioIzquierda.Text =
  123.                                 String.Format("{0}", juegoTrigui.ObtenerMarcaCasilla(PosicionCasilla.MedioIzquierda));
  124.                         }
  125.                         break;
  126.                     case 5:
  127.                         if (!juegoTrigui.CasillaVacia(PosicionCasilla.MedioCentro))
  128.                         {
  129.                             controlTriqui.btnPosicionMedioCentro.Enabled = false;
  130.                             controlTriqui.btnPosicionMedioCentro.Text =
  131.                                 String.Format("{0}", juegoTrigui.ObtenerMarcaCasilla(PosicionCasilla.MedioCentro));
  132.                         }
  133.                         break;
  134.                     case 6:
  135.                         if (!juegoTrigui.CasillaVacia(PosicionCasilla.MedioDerecha))
  136.                         {
  137.                             controlTriqui.btnPosicionMedioDerecha.Enabled = false;
  138.                             controlTriqui.btnPosicionMedioDerecha.Text =
  139.                                 String.Format("{0}", juegoTrigui.ObtenerMarcaCasilla(PosicionCasilla.MedioDerecha));
  140.                         }
  141.                         break;
  142.                     case 7:
  143.                         if (!juegoTrigui.CasillaVacia(PosicionCasilla.InferiorIzquierda))
  144.                         {
  145.                             controlTriqui.btnPosicionInferiorIzquierda.Enabled = false;
  146.                             controlTriqui.btnPosicionInferiorIzquierda.Text =
  147.                                 String.Format("{0}", juegoTrigui.ObtenerMarcaCasilla(PosicionCasilla.InferiorIzquierda));
  148.                         }
  149.                         break;
  150.                     case 8:
  151.                         if (!juegoTrigui.CasillaVacia(PosicionCasilla.InferiorCentro))
  152.                         {
  153.                             controlTriqui.btnPosicionInferiorCentro.Enabled = false;
  154.                             controlTriqui.btnPosicionInferiorCentro.Text =
  155.                                 String.Format("{0}", juegoTrigui.ObtenerMarcaCasilla(PosicionCasilla.InferiorCentro));
  156.                         }
  157.                         break;
  158.                     case 9:
  159.                         if (!juegoTrigui.CasillaVacia(PosicionCasilla.InferiorDerecha))
  160.                         {
  161.                             controlTriqui.btnPosicionInferiorDerecha.Enabled = false;
  162.                             controlTriqui.btnPosicionInferiorDerecha.Text =
  163.                                 String.Format("{0}", juegoTrigui.ObtenerMarcaCasilla(PosicionCasilla.InferiorDerecha));
  164.                         }
  165.                         break;
  166.                 }
  167.             }
  168.         }
  169.         /// <summary>
  170.         /// Configura los componentes integrales de la ventana principal.
  171.         /// </summary>
  172.         private void ConfiguracionComponentes()
  173.         {
  174.             controlMensajes = new ControlMensajes();
  175.             controlTriqui = new ControlTriqui(this);
  176.             controlTriqui.Location = new Point(0, 34);
  177.            
  178.             controlBotones = new ControlBotones(this);
  179.             controlBotones.Location = new Point(0, 234);
  180.  
  181.             this.Controls.Add(controlMensajes);
  182.             this.Controls.Add(controlTriqui);
  183.             this.Controls.Add(controlBotones);
  184.         }
  185.         /// <summary>
  186.         /// Crea un nuevo juego.
  187.         /// </summary>
  188.         public void NuevoJuego()
  189.         {
  190.             // Limpia el tablero de triqui:
  191.             juegoTrigui.LimpiarTablero();
  192.  
  193.             controlTriqui.ReiniciarBotonesCasillas();
  194.         }
  195.         /// <summary>
  196.         /// Procesa una jugada hecha por el jugador humano.
  197.         /// </summary>
  198.         /// <param name="casillaJugada">Posición de la casilla marcar.</param>
  199.         public void ProcesarJugada(PosicionCasilla casillaJugada)
  200.         {
  201.             juegoTrigui.MarcarCasilla(casillaJugada, MARCA_JUGADOR);
  202.  
  203.             // Verifica si el jugador humano ha ganado el juego:
  204.             if (juegoTrigui.GanoJuego(MARCA_JUGADOR))
  205.             {
  206.                 controlMensajes.MostrarMensaje("¡Ganaste!");
  207.  
  208.                 controlTriqui.SuspenderTablero();
  209.             }
  210.             else
  211.             {
  212.                 if (jugadorPC.Jugar())
  213.                 {
  214.                    
  215.                     if (juegoTrigui.GanoJuego(MARCA_PC))
  216.                     {
  217.                         controlMensajes.MostrarMensaje("¡Gané!");
  218.  
  219.                         controlTriqui.SuspenderTablero();
  220.                     }
  221.                     else
  222.                     {
  223.                         controlMensajes.MostrarMensaje("Tu Turno");
  224.                     }
  225.                    
  226.                 }
  227.                 else
  228.                 {
  229.                     controlMensajes.MostrarMensaje("Se acabó el juego.");
  230.                 }
  231.             }
  232.             ActualizarTablero();
  233.         }
  234.         #endregion
  235.  
  236.         #region Puntos de Extensión
  237.         /// <summary>
  238.         /// Punto de extensión no. 1.
  239.         /// </summary>
  240.         public void PuntoExtension1()
  241.         {
  242.             MessageBox.Show(this, juegoTrigui.Metodo1(), "Respuesta", MessageBoxButtons.OK, MessageBoxIcon.Information);
  243.         }
  244.         /// <summary>
  245.         /// Punto de extensión no. 2.
  246.         /// </summary>
  247.         public void PuntoExtension2()
  248.         {
  249.             MessageBox.Show(this, juegoTrigui.Metodo2(), "Respuesta", MessageBoxButtons.OK, MessageBoxIcon.Information);
  250.         }
  251.         #endregion
  252.     }
  253. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement