Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
android_sudoku [2022/10/16 23:00] enrique_mieza_sanchez [Final de partida] |
android_sudoku [2022/10/24 13:19] (actual) enrique_mieza_sanchez [Final de partida] |
||
---|---|---|---|
Línia 1: | Línia 1: | ||
====== Sudoku en Android ====== | ====== Sudoku en Android ====== | ||
- | Guia per fer un joc de Sudoku en Android. | + | Guia per desenvolupar |
+ | |||
+ | {{ https:// | ||
Els principals objectius son: | Els principals objectius son: | ||
- | * Conèixer la creació d' | + | * Conèixer la creació d' |
- | * Manipular els elements gràfics. | + | |
* Conèixer l' | * Conèixer l' | ||
+ | * Manipular els elements gràfics. | ||
+ | * Aplicar el patró MVC (Model-Vista-Controlador) | ||
+ | * Conèixer l' | ||
Línia 46: | Línia 51: | ||
===== Connectant les callback dels Spinner ===== | ===== Connectant les callback dels Spinner ===== | ||
- | Per poder respondre a les accions de l' | ||
- | Tindrem 2 estratègies bàsiques per a implementar les //callback// d'un '' | + | Llegeix bé l' |
- | - Crear un objecte tipus '' | + | |
- | - Heretar la interfície '' | + | |
- | Ens resultarà un codi més llegible si fem servir la opció 2, al menys en aquest cas. | + | Al final caldrà que d'una manera o altra, connectis els spinner |
- | + | ||
- | Segueix la [[https:// | + | |
* '' | * '' | ||
* '' | * '' | ||
Línia 108: | Línia 108: | ||
<WRAP todo> | <WRAP todo> | ||
Implementa el model per al Sudoku com s'ha descrit. | Implementa el model per al Sudoku com s'ha descrit. | ||
+ | </ | ||
+ | ==== Millora de la implementació del model com a llibreria ==== | ||
+ | <WRAP info> | ||
Pot ser interessant implementar el model en un //Java package// independent, | Pot ser interessant implementar el model en un //Java package// independent, | ||
+ | |||
+ | Seguint en aquesta línia, **pots treballar el model de Sudoku en un altre IDE com Eclipse o IntelliJ**, i quan tinguis el //package// funcionant, l' | ||
</ | </ | ||
Línia 118: | Línia 123: | ||
* '' | * '' | ||
+ | |||
+ | En aquesta funció caldrà agafar totes les dades del Model i refrescar la Vista (els Spinners). Per tant, ara necessitarem tenir tots els '' | ||
<WRAP todo> | <WRAP todo> | ||
Línia 146: | Línia 153: | ||
- | ===== Final de partida ===== | + | ===== Jugar la partida |
- | És important acabar el joc. Quan totes les cel·les estiguin plenes i alhora compleixin les regles del Sudoku, donarem per finalitzada la partida i traurem un '' | + | Per poder oferir una partida al jugador caldrà que omplim algunes cel·les i les fem fixes. Això vol dir que en aquelles cel·les fixes no haurem de poder entrar valors al '' |
+ | |||
+ | És important acabar el joc, of course. | ||
+ | |||
+ | <WRAP todo> | ||
+ | Implementa els canvis necessaris (atributs i mètodes) al '' | ||
+ | |||
+ | Quan totes les cel·les estiguin plenes i alhora compleixin les regles del Sudoku, donarem per finalitzada la partida i traurem un '' | ||
+ | </ | ||
\\ | \\ | ||
Línia 153: | Línia 168: | ||
===== Solver de Sudoku amb algorisme de backtracking ===== | ===== Solver de Sudoku amb algorisme de backtracking ===== | ||
- | Si has resolt fins aquí i ets dels més agosarats, voldràs provar de trobar solució a la partida que has generat de forma automàtica. Això es pot fer amb un clàssic algorisme de // | + | <WRAP important> |
+ | Secció només per a les més agosarades! | ||
+ | </WRAP> | ||
- | [[https:// | + | {{ https:// |
+ | |||
+ | Si has resolt fins aquí i ets dels més agosarats, voldràs provar de trobar solució a la partida que has generat de forma automàtica. Això es pot fer amb un clàssic algorisme de // | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | {{ https:// | ||
+ | |||
+ | <WRAP info> | ||
+ | Hi ha moltes tècniques de resolució de sudokus com joc (X-wing, Y-wing, etc). Aquestes són " | ||
+ | |||
+ | En canvi, el // | ||
+ | |||
+ | Una optimització senzilla del // | ||
+ | </ | ||
+ | |||
+ | <WRAP todo> | ||
+ | - Implementar el // | ||
+ | - Posar un botó " | ||
+ | </ | ||
\\ | \\ | ||
+ | |||
+ | ===== Check partida resoluble ===== | ||
+ | |||
+ | Quan inicialitzem una partida aleatòriament, | ||
+ | |||
+ | Per assegurar-nos de que una partida és resoluble, quan la creem i abans de passar-la a l' | ||
+ | |||
+ | A més, les regles del Sudoku inclouen un altre requisit: que la partida no tingui vàries solucions, sinó només una de sola. Per tant, haurem de modificar el nostre solver perquè també ens determini si té més d'una solució. Si ens dona una 2a solució, tornarem a descartar la partida. | ||
+ | |||
+ | <WRAP todo> | ||
+ | Crea una partida i, abans de passar-la a l' | ||
+ | </ | ||