PDA

Ver la Versión Completa : [ CONSULTA ] Desarrollo Juego Memorice


marellanor
08/08/14, 18:55:59
Hola!. Soy egresado de Ing. Informática de la Universidad Santo Tomas, Chile. Soy nuevo en lo que es con el desarrollo de APP en Android. Actualmente estoy desarrollando una mini app para niños con juegos didácticos. Me gustaría desarrollar un juego de tipo 'Memorice', pero no tengo muchos conocimientos sobre metodos en el desarrollo Android. Me gustaría saber si alguien acá ha desarrollado algun juego parecido, como para que me de una ayudita. Que metodos usar, si alguien tiene algun tutorial para aprender, etc. (Estoy desarrollando con Eclipse.)

Actualmente tengo este codigo. Una Gridvview que es llenada con un arraylist de imagenes(animaleslist).Necesito generar el random del arraylist de imagenes , para que salgan desordenadas pero en parejas.

Saludos y Gracias de Ante mano.

Juego3libre.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/GridView1"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<ImageView
android:id="@+id/logo"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:src="@drawable/juegayaprendelogo" />

<GridView
android:id="@+id/GridView"
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="44dp"
android:numColumns="4"
tools:context=".GridImageActivity" >
</GridView>

</RelativeLayout>

Juego3Libre.Java
package com.paquete.juegayaprendeapp;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ListAdapter;


public class Juego3Libre extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.juego3libre);
//Acá seteo el nombre del layout
this.setTitle("JUEGO MEMORICE");

GridView gridview = (GridView) findViewById(R.id.GridView);
gridview.setAdapter(new GridViewImageAdapter(this));

}
}

GridViewImnageAdapter.java
package com.paquete.juegayaprendeapp;

import java.util.ArrayList;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;

public class GridViewImageAdapter extends BaseAdapter{

private Context mContext;
private ArrayList<Integer> animaleslist = new ArrayList<Integer>();

/** Constructor de clase */
public GridViewImageAdapter(Context c){
mContext = c;
//se cargan las miniaturas
animaleslist.add(R.drawable.caballo);
animaleslist.add(R.drawable.cerdo);
animaleslist.add(R.drawable.leon);
animaleslist.add(R.drawable.rana);
animaleslist.add(R.drawable.gato);
animaleslist.add(R.drawable.gallo);
animaleslist.add(R.drawable.foca);
animaleslist.add(R.drawable.mono);

animaleslist.add(R.drawable.caballo);
animaleslist.add(R.drawable.cerdo);
animaleslist.add(R.drawable.leon);
animaleslist.add(R.drawable.rana);
animaleslist.add(R.drawable.gato);
animaleslist.add(R.drawable.gallo);
animaleslist.add(R.drawable.foca);
animaleslist.add(R.drawable.mono);
}


@Override
public int getCount() {
return animaleslist.size();
}

@Override
public Object getItem(int position) {
return animaleslist.get(position);
}

@Override
public long getItemId(int position) {
return 0;
}

@Override
public View getView(int position, View view, ViewGroup viewgroup) {

ImageView imageView = new ImageView(mContext);
imageView.setLayoutParams( new GridView.LayoutParams(85, 85) );
imageView.setScaleType( ImageView.ScaleType.CENTER_CROP );
imageView.setPadding(5, 5, 5, 5);
imageView.setImageResource( animaleslist.get(position) );


return imageView;

}


}

mocelet
08/08/14, 22:09:45
Collections.shuffle(animaleslist) y ya la tienes ordenada al azar.

Saber si dos elementos son pareja es trivial comparando el valor de los dos elementos.

marellanor
09/08/14, 00:22:18
"probé con 'Collections.Shuffle(animaleslist);' y me manda error de sintaxis.

¿Qué podrá ser?."

Perdón Edit!, estaba utilizándolo mal ese método. Me funciona de maravilla el random con Collections.Shuffle.

Muchas Gracias!.

marellanor
14/08/14, 01:17:39
Como se puede ver en los post de arriba. Tengo creada una gridview. Me gustaría saber como saber que imagen se esta tocando de la gridview y esconder dicha imagen.


Saludos

manolazo
14/08/14, 15:12:03
Buenas.

Tendras que crear otra imagen por ejemplo un interrogante o lo que quieras, aparte de:
private ArrayList<Integer> animaleslist = new ArrayList<Integer>();, es decir otro ImageView.

Asignar un evento onClickListener a cada elemento del gridwiew a cada imagen y cambiar
imageView.setVisibility(View.Invisible) o View.Gone, y devolver o bien el interrogante o la imagen del arraylist . Aunque yo no lo plantearia asi

Lo que haria es crear un gridlayout y cada elemento con dos imageview uno visible y otro gone,
recorreria con un bucle for a cada elemento del grid y asignaria un onclicklistener y ahi implementaria la lógica.

SUpongo que habra muchas formas de hacerlo

marellanor
15/08/14, 18:35:50
Quizas me puedan ayudar con este codigo.

@Override
public void onItemClick(AdapterView<?> partent, View v, int position, long id) {
// TODO Auto-generated method stub
Dialog d = new Dialog(this);
//d.setTitle("Imagen " + (position + 1) + " seleccionada");
//d.show();

ImageView imageview = new ImageView(this);
//Obetengo la imagen en la posicion tocada
imageview.setImageResource(animaleslist.get(positi on));
d.setContentView(imageview);
d.show();
}

Acá tengo el metodo onClick. Actualmente logro obtener la imagen del arraylist (animaleslist) cuando se toca en la gridview(la estoy mostrando con el d.show() para confirmar que me traiga la imagen). Pero no sé como setear esa imagen en la gridview. Cómo puedo setearla?

Saludos y gracias!!

marellanor
15/08/14, 23:00:52
Me respondo solo jaja. Logre setear la imagen de un arraylist (animaleslist) segun la imagen que se ha clickeado en la gridview. Ahora tengo otra interrogativa. Alguien sabe como guardar una imagen de un arraylist en una variable para poder hacer las comparaciones si ambas imagenes son iguales?

@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
// TODO Auto-generated method stub

ImageView imageview =(ImageView) v;
//Obetengo la imagen en la posicion tocada y seteo la imagen
imageview.setImageResource(animaleslist.get(positi on));

}



Saludos y gracias.