Se empleará sólo la clase tablero en lugar de definir tablero y una clase partida...
package unidad3ejercicio29;
import java.util.Scanner;
/**
*
* @author juan
*/
public class Unidad3Ejercicio29 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
int fil=3,col=3,x1,x2,y1,y2;
Tablero partida = new Tablero(fil,col);
Scanner leo = new Scanner(System.in);
partida.dibujarDescubierta();
do
{
System.out.println("Introduzca los valores de x1,y1,x2,y2");
x1=leo.nextInt();
y1=leo.nextInt();
x2=leo.nextInt();
y2=leo.nextInt();
//partida.dibujarTablero();
partida.comprueba(y1,x1, y2,x2);
// partida.dibujarDescubierta();
} while (partida.getAciertos()<(fil*col/2));
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package unidad3ejercicio29;
import java.util.Random;
/**
*
* @author juan
*/
public class Tablero {
private int filas;
private int columnas;
private int [][]matriz;
private int [][]descubierta;
private int intentos;
private int aciertos;
public Tablero(int filas, int columnas) {
if(filas>0 && columnas>0)
{
this.filas = filas;
this.columnas = columnas;
}
else {
this.filas=4;
this.columnas=4;
}
intentos=0;
aciertos=0;
matriz= new int[this.filas][this.columnas];
descubierta= new int[this.filas][this.columnas];
this.generaTabla();
}
public boolean comprueba(int x1,int y1, int x2, int y2){
if ((x1>=0 && x1<columnas) && (x2>=0 && x2<columnas) &&(y1>=0 && y1<filas) &&(y2>=0 && y2<filas))
{
++intentos;
this.muestraDos(x1, y1, y2, x2);
if (matriz[x1][y1]==matriz[x2][y2])
{
descubierta[x1][y1]=matriz[x1][y1];
descubierta[x2][y2]=matriz[x2][y2];
++aciertos;
}
this.dibujarDescubierta();
return (matriz[x1][y1]==matriz[x2][y2]);
}
else return false;
}
public void muestraDos(int x1,int y1, int x2, int y2){
System.out.println("");
System.out.print(" X:");
for (int i = 0; i < columnas; i++) {
System.out.printf("\t %d ",i);
}
System.out.println();
System.out.print("Y ");
System.out.println();
for (int i = 0; i < filas; i++) {
System.out.printf("%d",i);
System.out.printf("| ");
for (int j = 0; j < columnas; j++) {
if ((x1==j && y1==i)||(x2==j && y2==i)) System.out.printf("\t %d",matriz[i][j]);
else System.out.printf("\t ");
}
System.out.println();
}
}
public int getAciertos() {
return aciertos;
}
private void generaTabla(){
Random aleatorio = new Random();
int num=1;
int fil,col;
int total=filas*columnas;
while (num<=total/2)
{
do
{
fil=aleatorio.nextInt(filas);
col=aleatorio.nextInt(columnas);
}
while(matriz[fil][col]!=0);
matriz[fil][col]=num;
do
{
fil=aleatorio.nextInt(filas);
col=aleatorio.nextInt(columnas);
}
while(matriz[fil][col]!=0);
matriz[fil][col]=num;
++num;
}
}
public void dibujarTablero(){
for (int i = 0; i < filas; i++) {
for (int j = 0; j < columnas; j++) {
System.out.printf("\t %d",matriz[i][j]);
}
System.out.println();
}
}
public void dibujarDescubierta(){
System.out.println("");
System.out.print(" X:");
for (int i = 0; i < columnas; i++) {
System.out.printf("\t %d ",i);
}
System.out.println();
System.out.print("Y ");
for (int i = 0; i < columnas; i++) {
System.out.print("========");
}
System.out.println();
for (int i = 0; i < filas; i++) {
System.out.printf("%d",i);
System.out.printf("| ");
for (int j = 0; j < columnas; j++) {
System.out.printf("\t %d",descubierta[i][j]);
}
System.out.println();
}
System.out.println("");
System.out.println("ACIERTOS:"+aciertos);
System.out.println("INTENTOS:"+intentos);
}
}
No hay comentarios:
Publicar un comentario