PRÁCTICA ANDROID M08UF1
- Una primera versión del juego tendrá una actividad inicial donde muestra una pantalla de bienvenida, y se muestran las puntuaciones en la lista, y con un botón para jugar.
En esta versión, se muestra la sopa de letras y el usuario tiene que intentar resolverla. Las letras están almacenadas en una matriz bidimensional. En ningún caso se trata de implementar un algoritmo de resolución de sopa de letras ni de generación de las mismas.
Consiste pues en una matriz o colección de caracteres definidas como constantes. Visualmente se indican las letras seleccionadas y las palabras encontradas. El tiempo no interviene y no hay ningún algoritmo de puntuación. (4 puntos)
Pantalla inicial:

En un archivo XML está declarado el diseño, en el código solo encontramos el código de lo que tiene que hacer cuando se selecciona el botón, o en opciones… En medio se pueden ver las puntuaciones que están en una base de datos, pero en este ejercicio no saldría ninguna debido a que no hemos implementado ningún algoritmo para la resolución con puntuaciones.
Aquí podemos observar la creación en el código:
|
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_inici);
Button Juga= (Button) findViewById(R.id.bJuga);
listPuntuacions = (ListView) findViewById(R.id.listPuntuacions);
Juga.setOnClickListener(
new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(inici.this, Sopa_Lletres.class);
startActivity(intent);
}
}
);
}
|
JUEGO

El algoritmo que afecta a la puntuación está implementado, pero si igualamos los puntos a 0 es como si no estuviera, esto está hecho para que sea más sencillo demostrar que funciona sin puntuación.
ONCREATE
chronometer = (Chronometer) findViewById(R.id.chronometer);
chronometer.setBase(SystemClock.elapsedRealtime());
chronometer.stop();
grid = (GridLayout) findViewById(R.id.layout);
grid.setColumnCount(columna);
grid.setRowCount(fila);
paraulesTrobades=(GridLayout) findViewById(R.id.ParaulesTrobades);
vDefineixArrayList();
vFicaParaules(Paraules);
vCrear(texts);
Puntuacion = (TextView) findViewById(R.id.Puntuacio);
//eliminar bd
PuntsH=0;
PuntsV=0;
PuntsR=0;
public void vDefineixArrayList()
Tenemos vDefineixArrayList que añade a la lista Paraules las palabras que queremos, de esta manera podemos continuar con la siguiente función:
public void vFicaParaules(ArrayList<String>)
La función vFicaParaules requiere de un ArrayList, esta función mete las palabras que se tienen que introducir en una matriz, en este caso será el ArrayList de Paraules.
public void vCrear(TextView[][])
Finalmente copiamos las palabras puestas en el TextView que encontramos en el grid, de esta manera si no hemos puesto ninguna letra en un punto ponemos una al azar.
Los puntos los igualamos a 0, en el código ya se encuentra implementado de una actividad posterior, por lo tanto después será explicado el funcionamiento, igualando a 0 no funcionará.
- Se mejora el juego externalizando las palabras de la sopa de letras en un descriptor de cadenas XML.
De esta manera se pueden modificar las palabras con más facilidad. (1 punto)
Añadimos al onCreate eliminando vDefineixArrayList():
String [] items = getResources().getStringArray(R.array.items);
for(String paraula : items){
Paraules.add(paraula);
}

Palabras XML:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="items">
<item>Francisco</item>
<item>Marc</item>
<item>Jenny</item>
<item>Calomarde</item>
<item>Montuliu</item>
<item>Sergi</item>
<item>Laura</item>
<item>Collados</item>
</string-array>
</resources>
- Se incorpora una lógica de puntuación y se guarda en la base de datos SQLite. Esta versión guarda las puntuaciones. Al comenzar el juego aparece una pantalla (Activity) mostrando todas las puntuaciones, y la fecha en la que se ha obtenido. (2 puntos)
vGuardarEnDB()
Esta función hace que se guarde en la base de datos SQLite las puntuaciones y la fecha.

- En esta versión, el juego obtiene las palabras de la agenda de contactos del usuario. (1,5 puntos)
public ArrayList<String> ObtenirContactes()
Coge el ArrayList de la lista de contactos.

- Se incorpora un botón Ayuda que explica el funcionamiento del juego. Esta ayuda está en archivos HTML dentro del propio empaquetado y se muestra con la clase WebView. Esta ayuda se encuentra en una barra de acción y se abre una nueva pantalla con la ayuda (1,5 puntos)
private void obrirWebView()
Abre el WebView en un dialog.

