#PROJECT

Primeramente lo que hicimos fue investigar y ver como se resolvía un Sudoku, lo más importantes del Sudoku es que no se repitan los números tanto en filas, columnas y dentro del mismo cuadrante, los números permitidos son del 1 al 9 solamente y el usuario gana cuando haya acomodado estos números dentro de TODOS los cuadrantes con la condición de que no se repitan de ninguna manera en filas, columnas y cuadrantes.

Primero lo que hicimos fue identificar como checar que no se repita el número que ingresas de forma horizontal (fila) y para esto utilizamos una función INT donde usamos un FOR para que cheque los valores en Y, dentro de este FOR utilizamos condicionales para que primero cheque si hay un número o no, si no lo hay pues no checa nada, si hay algún numero empieza a checar que ese número no se repita con otros que ya estén, si es así y se repite, entonces el juego no nos dejará ganar. Usamos esos números o posiciones para checar que si ninguno se repite, entonces guarda este resultado para después usarlo en la función que nos hará ganar.

Después hicimos lo mismo básicamente pero cambiando los parámetros de nuestro sudoku para que en lugar de checar horizontal, cheque los números de forma vertical; es básicamente lo mismo porque de igual manera solo puede estar el número “1” una sola vez, y así para los otros 8 números restantes, de igual manera cuando la condición de que no se repitan los números se cumpla, se registrará que no se repiten y de esta manera el programa nos dejará ganar.

Para checar que en cada cuadrante no se repita ningún número del 1 al 9, usamos de la misma manera una función tipo INT con 4 parámetros para que cheque que ningún número de los ingresados se repita. Usamos un doble FOR para que este cheque cuadrantes, los cuales en el INT MAIN cambiamos parámetros para que cheque por ejemplo el primer cuadrante, después con el cambio de esos parámetro checar el segundo cuadrante y así sucesivamente. Esto es de lo que más nos costó trabajo desarrollar en forma de código porque es difícil idear como el programa tiene que correr para que cheque todos y cada uno de los cuadrantes. Una vez que sabes y tienes en mente como desarrollarlo con FOR, ya lo demás es fácil y simplemente trata de escribir el código.

Para que el usuario al iniciar el juego, vea y conozca las reglas, usamos una función VOID para que no nos regrese nada pero imprima lo que pongamos en el COUT y ahí mismo el usuario solamente va a leer lo que aparezca en la pantalla.

También usamos una función INT que nos checa la celda en la que queremos introducir un número para ver que haya espacio, si ya existe algún número en ese espacio, el programa a la hora de querer ingresar X número, nos dirá que ese espacio no es válido, que intentemos de nuevo. Para esto simplemente usamos un condicional que checa que si hay una X en ese espacio, nos va a dejar sustituirlo por un número, si no, nos dirá que intentemos con otra celda.

Por último utilizamos una función INT llamada borrar, que lo que hace es checar nuestro plano, nuestro Sudoku y checa que haya algún número (de igual forma con un condicional IF), si hay un número lo que va a hacer es darle un valor de 0 para que el programa después nos lo imprima como X, si no hay un número nos dirá que intentemos de nuevo, y de igual forma, si queremos borrar un número base que ya ESTA ESTABLECIDO, nos dirá el programa que ese número no puede ser modificado.

Por último hicimos el INT MAIN que básicamente corre y toma todas las funciones anteriormente realizadas, y declaramos variables tipo CHAR, INT y STRINGS; por otra parte utilizamos un archivo base en el que ya hay número establecidos y fijos los cuales no se pueden modificar, y para esto debemos tomar un archivo y leerlo, después en nuestra función que imprime el Sudoku, cambiar los valores que tiene como 0 por X’s y para que nuestro código en C++ pueda leer el código, tuvimos que incluir al principio de nuestro código, la librería de igual manera utilizamos una librería especial que encontramos en internet, la cual nos permite imprimir valores, letras, números o caracteres en algún color que definimos de igual manera al principio del código, esta librería se llama . Lo que más raro y chistoso se nos hizo fue que no se nos ocurría como hacer una función que reiniciara el juego, pero después de quebrarnos tanto la cabeza, entendimos y se nos ocurrió dentro del INT MAIN que si el usuario pide “Reiniciar el juego” solo llamaríamos a la función INT MAIN para que vuelva a correr todo lo que ésta dentro de esta función. Dentro del INT MAIN fue donde cambiamos los parámetros para la función que checa los cuadrantes y finalmente si se cumplen las condiciones que están dentro de cada función que checa, el juego habrá terminado y el jugador habrá ganado el juego.

De igual manera dentro del INT MAIN es donde están cada una de las opciones que queremos para que el usuario pida para realizar una acción, al final si el usuario pide “Salir” lo que nuestro programa hará es terminar todas las otras funciones que estaba  haciendo y simplemente usamos un RETURN 0 para que ya no aparezca nada, simplemente dará las gracias por jugar y se saldrá de nuestro código.

Lo que más se nos hizo difícil fue encontrar las librerías para definir colores, además de pensar cómo hacer las funciones CHECAR y lo extenso del código para hacer un Sudoku es de lo que más se nos hizo difícil. Para solucionar todo esto recurrimos a Internet, amigos, pero principalmente en el libro dan muchas ideas y tipos de variables, funciones que nos permiten hacer que nuestro Sudoku corra de manera correcta y no nos marque errores (los cuales hubo muchísimos pero se solucionaron).

 

Es un proyecto muy padre porque engloba todo lo que ves en el semestre básicamente y lo principal es que es muy divertido y es muy interesante saber cómo por medio de código en un lenguaje determinado, la computadora lo interpreta y da como resultado algo que nosotros nos proponemos. Muy buen proyecto.

Aquí está el link con nuestro código en Github:

https://github.com/kenwbauer/LuisAngelFernando/blob/master/Sudoku%20Final

Y por ultimo aquí esta una imagen de nuestro Sudoku corriendo en una computadora.

 

CC BY 4.0 #PROJECT by Fernando Aguirre is licensed under a Creative Commons Attribution 4.0 International License.

Comments are closed.