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 Ultima revisió Ambdós costats nova versio | ||
android_sudoku [2022/10/16 23:05] enrique_mieza_sanchez [MVC Sudoku: creant el model] |
android_sudoku [2022/10/17 18:48] enrique_mieza_sanchez [Sudoku en Android] |
||
---|---|---|---|
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 110: | Línia 110: | ||
</ | </ | ||
+ | ==== Millora de la implementació del model com a llibreria ==== | ||
<WRAP info> | <WRAP info> | ||
- | ==== Millora de la implementació del model com a llibreria ==== | ||
- | |||
Pot ser interessant implementar el model en un //Java package// independent, | Pot ser interessant implementar el model en un //Java package// independent, | ||
Línia 124: | 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 153: | Línia 154: | ||
===== Final de partida ===== | ===== Final de 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 '' | + | És important acabar el joc! |
+ | |||
+ | <WRAP todo> | ||
+ | Quan totes les cel·les estiguin plenes i alhora compleixin les regles del Sudoku, donarem per finalitzada la partida i traurem un '' | ||
+ | </ | ||
\\ | \\ | ||
Línia 159: | Línia 164: | ||
===== 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' | ||
+ | </ | ||