Ayuda con matrices en Java

Quisiera ver si es posible que me ayudaras con una practica que me han dejado en la universidad. La practica consiste en el desarrollo del Juego Sudoku en java, yo ya tengo creado el tablero de JTextFields, pero no tengo idea de como hacerle para comparar las filas y columnas del tablero para que cumpla con las reglas del sudoku.

2 respuestas

Respuesta
1
http://www.psicofxp.com/forums/programacion.313/403929-sudoku-en-java.html
Gracias por responder. Efectivamente yo encontré por allí esa página y descargue el .rar, pero es solamente una aplicación ya realizada, en la que de cualquier forma me quedan las mismas dudas porque ya esta resuelto.
Gracias
http://www.ivansoftware.com/sudoku/
Abajo se encuentran los fuentes puedes descargarlos y revisarlos
Excelente!
Gracias por tu tiempo, es una página excelente al igual que tu ayuda.
Si tengo algún problemita (aunque no creo), te molesto nuevamente.
Gracias
Respuesta
1
No he jugado mucho sudoku, así que exactamente no me se muy bien las reglas, pero en cualquier caso las reglas es digamos la lógica y en cierta forma es independiente de la vista.
Lo que te recomiendo es que tengas un arreglo bidimensional que refleje el tablero de sudoku, el tablero visual o sea tus jtextfields deberán de mostrar el contenido de este arreglo, al igual si cambias algo en los textfields esto deberá reflejarse en tu arreglo.
La lógica del juego o sea las reglas las harás sobre el arreglo, es más fácil recorrer un arreglo que recorrer unos textfields. Hasta donde recuerdo no puede haber números repetidos en la misma fila, ¿en la misma columna y en un cuadro cierto?, con un arreglo puedes recorrer filas y columnas de forma fácil para buscar duplicados.
Gracias por responder!
Acá le muestro la matriz que tengo dentro de mi ventana:
int i;
  int j;
  int fila;
  int columna;
  tablero = new JTextField[9][9];
  for (i=0; i<tablero.length; i++)
   for (j=0; j<tablero.length; j++)
    {
     tablero[j] = new JTextField();
     tablero[j].setSize(40,40);
     tablero[j].setVisible(true);
     fila = i +1;
     columna = j +1;
     tablero[j].setText("fila" + String.valueOf(fila) + "  col" + String.valueOf(columna));
     Border borde = LineBorder.createBlackLineBorder();
     tablero[j].setBorder(borde);
      tablero[j].setEnabled(true);
     this.add(tablero[j]);
Y efectivamente las reglas son así como las mencionaste!
De que forma podría hacer las comparaciones con las filas, ¿columnas y bloques?
Me podrías dar alguna idea.
He aquí una forma, quizás no la más optima o más bonita pero si una forma rápida.
Puedes separar tu lógica en 3 partes, la primera parte seria checar por fila, después por columna y al ultimo el subcuadro.
Las dos primeras fila y columna son simples for que iteran sobre todas las filas y columnas conforme llegues a una celda guarda ese valor que contiene la celda en un hashmap, cuando pases a la siguiente celda comparas si ese valor ya esta en el hashmap con lo cual ahí habría un error y peudes parar todo.
Para los subcuadros seria algo muy parecido, solo tendrías que definir cuantas filas y columnas tiene un subcuadro y así podrías irte moviendo entre todo el cuadro principal

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas