dilluns, 7 de desembre del 2015

Sopa de lletres Android

PRÀCTICA ANDROID M08UF1
1. Una primera versió del joc tindrà una activitat inicial on mostra una pantalla de benvinguda, i es mostren les puntuacions en la llista, i amb un botó per jugar.
En aquesta versió, es mostra la sopa de lletres i l'usuari ha d'internar resoldre'l. Les lletres estan emmagatzemades en una matriu bidimensional. En cap cas es tracta d'implementar un algorisme de resolució de sopa de lletres ni de generació de les mateixes.
Consisteix doncs en una matriu o col·lecció de caràcters definides com a constants. Visualment s'indica les lletres seleccionades i les paraules trobades. El temps no intervé i no hi ha cap algorisme de puntuació. (4 punts)

Pantalla inicial:

En un fitxer xml esta declarat el disseny, al codi només trobem el codi del que ha de fer quan es selecciona al boto, o a opcions… Enmig es poden veure les puntuacions que estan en una base de dades, en aquest exercici però, no sortiria cap degut  que no hem implementat cap algoritme per a la resolució amb puntuacions.
Aquí podem observar la creació en el codi:
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);
              }
          }
  );
}







JOC

Screenshot_2015-11-29-16-29-46.png


L’algorisme que afecta a la puntuació esta implementat, però si igualem els punts a 0 es com si no estigues, això esta fet per a que sigui mes senzill demostrar que funciona sense puntuació.
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()
Tenim vDefinexArrayList que afegeix a la llista Paraules les paraules que volem, d’aquesta manera podem continuar amb la següent funció:

public void vFicaParaules(ArrayList<String>)
La funció vFicaParaules requereix d’un ArrayList, aquesta funció fica les paraules que s’han d’introduïr en una matriu, en aquest cas serà l’ArrayList de Paraules.

public void vCrear(TextView[][])
Finalment copiem les paraules ficades en el textView que trobem al grid, d’aquesta manera si no hem posat cap lletra en un punt posem una al atzar.
Els punts els igualem a 0, en el codi ja es troba implementat d’una activitat posterior per tant desprès serà explicat el funcionament, igualant a 0 no funcionarà.

2. Es millora el joc externalitzant les paraules de la sopa de lletres en un descriptor de cadenes XML.
D'aquesta manera es poden modificar les paraules amb més facilitat. (1 punts)
Afegim al OnCreate eliminant vDefineixArrayList():
String [] items = getResources().getStringArray(R.array.items);
for(String paraula : items){
  Paraules.add(paraula);
}

Screenshot_2015-11-29-16-31-48.png
Paraules 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>

3. S'incorpora una lògica de puntuació i es desa en la base de dades SQLite. Aquesta versió desa les puntuacions. En començar el joc apareix una pantalla (Activity) mostrant totes les puntuacions, i la data en la qual s'ha obtingut. (2 punts)

vGuardarEnDB()
Aquesta funció fa que es desi a la base de dades SQLite les puntuacions i la data.


4. En aquesta versió, el lloc obté els mots de l'agenda de contactes de l'usuari. (1,5 punts)

public ArrayList<String> ObtenirContactes()

Agafa l’arraylist de la llista de contactes.

Screenshot_2015-11-29-16-35-22.png

5. S'incorpora un botó Ajuda que explica el funcionament del joc. Aquesta ajuda està en fitxers HTML dins del mateix empaquetat i es mostra amb la classe WebView. Aquesta ajuda es troba en una barra d'acció i s'obre una nova pantalla amb l'ajuda (1,5 punt)

private void obrirWebView()

Obre el WebView en un dialog.

Screenshot_2015-11-29-16-44-50.png

Screenshot_2015-11-29-16-44-55.png




Cap comentari :

Publica un comentari a l'entrada