/// <summary> /// Guarda en el array la posicion recibida. /// </summary> /// <param name="fila">Posición de la fila del boton pulsado por el jugador</param> /// <param name="col">Posición de la columna del boton pulsado por el jugador</param> /// <param name="devolf">Copia de la estructura de la clase form</param> public void PosiX(string fila, string col, Devolucion devolf) { _devol = devolf; _devol.Fila = Convert.ToInt32(fila); _devol.Columna = Convert.ToInt32(col); _casilla[_devol.Fila, _devol.Columna] = "X"; }
/// <summary> /// Gestiona los pasos que debe hacer la maquina /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Click_Maquina(object sender, EventArgs e) { // Se llama al movimiento de la maquina en la clase juego y devuelve la estructura con la posicion de la jugada _devolf = _enraya.Movimientomaquina(_devolf); // Escribe el texto en la posicion generada por el metodo anterior _boton[_devolf.Fila, _devolf.Columna].Text = "O"; _boton[_devolf.Fila, _devolf.Columna].Enabled = false; _devolf = _enraya.Comprobar(false); Ganador(sender, e); //devolf.turno = true; }
/// <summary> /// Gestiona los moviemientos del jugador y llama al moviento de la maquina /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Movimiento(object sender, EventArgs e) { // Se crea una variable de tipo boton para generalizar el objeto y se pueda usar con todos los botones de form Button click = (Button)sender; // Llama a un metodo para guardar la posicion del boton, que se le pasa a partir del nombre, posicion "1" para fila y posicion "2" para columna _enraya.PosiX(click.Name[1].ToString(), click.Name[2].ToString(), _devolf); // A partir de la posicion extraida del metodo anterior se llama al movimiento que devuelve la estructura como esa posicion _devolf = _enraya.Movimientojugador(); click.Text = "X"; // Escribe el texto en el boton pulsado recogido con sender // Llama al metodo que comprueba si se ha ganado enviando el turno y devolviendo en el campo ganador de la estruc. un "1" si gana jugador o "2" para la maquina _devolf = _enraya.Comprobar(true); click.Enabled = false; // Deshanilita el boton para que no pueda volver a clicar en el Ganador(sender, e); // En caso de que se haya ganado o empatado mostrara el mensaje correspondiente //devolf.turno = false; // Invierte el turno para que juegue la maquina if (_devolf.Ganador != 1 && _devolf.Ganador != 3) // En caso de no resultar ganador el jugador, se llama a la maquina { Click_Maquina(sender, e); } }
/// <summary> /// Genera un moviento acorde a cada jugada, intentando ganar, cubrir, poner una esquina o movimiento aleatorio si no hay otra opción. /// </summary> /// <returns>Devuelve la estructura devol con la posicion del movimiento</returns> public Devolucion Movimientomaquina(Devolucion devolf) { // Copia de valores de la estructura de form1. _devol = devolf; // Reinicio de la variable para que pueda elegir la jugada. _seguir = true; // Condición que indica que si el centro no está ocupado, se escribirá ahí. if (_casilla[1, 1] == "-") { _casilla[1, 1] = "O"; _devol.Fila = 1; _devol.Columna = 1; _seguir = false; _segturno = true; return(_devol); } Ganar(); NoPerder(); Esquina(); Aleatorio(); return(_devol); }