Hoy te traemos una aplicación de consola en Java para jugar al tres en raya.
Consta de varias funciones:
-filas()
-columnas()
-diagonal()
-diagonalInversa()
Estas funciones estan destinadas a comprobar si hay 3 en raya.
Luego esta la función pintar() que comprueba si se puede escribir en la posicion que indica el usuario(comprueba si esta ya escrita, entonces sería movimiento incorrecto o si se sale de la pista) en estos dos casos el usuario tendría que volver a introducir fila y columna donde quiere escribir su jugada.
Tambien está la función mostrar() que escribe por pantalla la matriz de tres en raya como estaría despues de cada jugada.
package aplicacion1; import java.util.Scanner; /** * * @author Javi */ public class TresEnRaya { /** * @param args the command line arguments */ public static boolean diagonalInversa(char mat[][],char jugador){ boolean diagonalInvers=false; int k=0; for(int i=2, j=0;j<mat.length;i--,j++){ if(mat[i][j]==jugador){ k++; } if(k==3){ diagonalInvers=true; } } return diagonalInvers; } public static boolean diagonal(char mat[][],char jugador){ boolean diagonal=false; int k=0; for(int i=0, j=0;i<mat.length;i++,j++){ if(mat[i][j]==jugador){ k++; } if(k==3){ diagonal=true; } } return diagonal; } public static boolean columnas(char mat[][],char jugador){ boolean columna=false; for (int j=0;j<mat[0].length;j++){ int k=0; for(int i=0;i<mat.length;i++){ if(mat[i][j]==jugador){ k++; } if(k==3){ columna= true; } } } return columna; } public static boolean pintar(int fila,int columna,char mat[][],char jugador){ try{ if(mat[fila][columna]=='-'){ mat[fila][columna]=jugador; return true; }else{ System.out.println("Movimiento incorrecto"); return false; } }catch(Exception e){ System.out.println("Te has salido de la pista"); return false; } } public static void mostrar(char mat[][]){ for (int i=0;i<mat.length;i++){ for(int j=0;j<mat[i].length;j++){ System.out.print(mat[i][j]+" "); } System.out.println(" "); } } public static boolean filas(char mat[][],char jugador){ boolean linea=false; for (int i=0;i<mat.length;i++){ int k=0; for(int j=0;j<mat[i].length;j++){ if(mat[i][j]==jugador){ k++; } if(k==3){ linea= true; } } } return linea; } public static void main(String[] args) { // TODO code application logic here char mat[][]= new char[3][3]; Scanner miteclado = new Scanner(System.in); for (int i=0;i<mat.length;i++){ for(int j=0;j<mat[i].length;j++){ mat[i][j]='-'; } } char player='x'; char ultimo='x'; while(!filas(mat,ultimo)&&!columnas(mat, ultimo)&&!diagonal(mat, ultimo)&&!diagonalInversa(mat, ultimo)){ int fila,columna; do{ System.out.println("Jugador "+player+"\n Donde quieres poner la "+player+"?\n Indica la fila"); fila=miteclado.nextInt(); System.out.println(" Indica la columna"); columna=miteclado.nextInt(); }while(!pintar(fila, columna, mat, player)); mostrar(mat); filas(mat,player); columnas(mat,player); diagonal(mat,player); diagonalInversa(mat,player); if (filas(mat,player)||columnas(mat, player)||diagonal(mat, player)||diagonalInversa(mat, player)) System.out.println("Ha ganado "+player); ultimo=player; switch(player){ case 'x':{ player='o'; break; } case 'o':{ player='x'; break; } } } } }
Espero que te guste ♥