Hola!
Estoy haciendo un juego de parejas, pero no se como adjuntar a cada carta un identificador aleatorio en cada partida.
La idea es tener una lista con las parejas de cartas
carta1
carta1
carta2
carta2
carta3
carta3
Usar el aleatorio para mezclar esta lista y asignarle este valor a cada instancia de carta que tenga en el room
¿Como puedo hacer esto? Había pensado en el sprite, pero como la carta tiene que estar tapada (sprite de carta al reves) no me sirve...
A las malas podría montar una lista con los aleatorios guardados y consultarla con cada click en una carta, pero no me termina de convencer...
Un saludo!
No entiendo por qué quieres asignarle un identificador aleatorio a cada carta. Significa que por ejemplo, si hay una carta perro, ¿una vez su identificador puede ser 100 y otra vez puede ser 80? Creo que lo mejor sería que cada carta tuviera su identificador único, pero constante...
No sería aletorio (disculpa si no me expliqué bien)
El tema es que desde una sola room, quiero crear partidas diferentes cada vez que entre el jugador, es decir, que la foto del cerdo no esté siempre en la carta 1, sino que pueda estar en cualquiera de ellas.
Cada carta tendrá su identificador único que será el nombre de la instancia, pero dentro de cada instancia quiero guardar el valor "foto del cerdo", "foto de la cabra", etc.
Yo creo que las mismas cartas tendrían que tener el mismo identificador y lo que tendrías que hacer es una función para barajarlas y así cada vez aparecerán en distinto orden o posición.
Cartas = [1,1,2,2,3,3]
Tendrías un total de 3 parejas siendo 6 cartas en total. Tu función lo que haría es devolverte otro Array con los mismo elementos pero cambiados de orden, por ejemplo:
barajados = [1,3,2,1,2,3] (por poner un ejemplo).
No me hagas demasiado caso, es por donde yo empezaría y lo mismo estoy equivocado.
Saludos
Nota: Por cierto, buscando he encontrado este link (http://www.comunidadgm.org/preguntas-y-respuestas/manipular-sprites-en-arrays/) que lo mismo puede darte una idea para hacer lo que te he comentado antes.
Hola!
Gracias por la info, pero sigo un poco perdido...
He hecho un aleatorio con las 2 listas, el problema es que me he quedado pillado a la hora de probarlo porque no encuentro como invocar a la instancia en la que hago click para que ella sola se de la vuelta.
Igualmente, no tengo claro que el aleatorio funcione...
Os pongo el codigo por si veis algo mal:
La lista de cartas tiene... carta1, carta2, carta3, etc
La lista de sprites tiene... imagen1, imagen1, imagen2, imagen2, etc
listaCartas = global.listaCartas;
listaSprites = global.listaSprites;
cartasRestantes = 0;
spritesRestantes = 0;
idSpriteElegido = 0;
spriteElegido = "";
//Montamos la nueva lista con los sprites mezclados
for (i=0; i < ds_list_size(listaCartas); i+=1){
//Actualizamos las cartas y sprites restantes
cartasRestantes = ds_list_size(listaCartas);
spritesRestantes = ds_list_size(listaSprites);
//Seleccionamos un sprite para la siguiente carta
idSpriteElegido = irandom(spritesRestantes);
//Asignamos el sprite elegido
spriteElegido = ds_list_find_value(listaSprites, spriteElegido);
ds_list_add(listaSpritesBarajados,spriteElegido);
//Eliminamos el sprite y la carta para que no vuelvan a asignarse
ds_list_delete(listaSprites,spriteElegido);
ds_list_delete(listaCartas,i);
}
En cualquier caso, si he llamado a mis instancias del objeto objCarta: carta1, carta2, carta3.... como hago referencia al pulsado??
Un saludo!
¿A qué te refieres con llamar a las instancias del objeto objCarta? ¿Llamarlas de dónde o para qué?
¿Qué quiere decir "hacer referencia al pulsado"?
instance_position(mouse_x, mouse_y, obj_carta) en un evento mouse left button Devolvería el ID de la instancia carta, y eso serviría para seleccionarla, voltearla, etc.
El código de las ds_lists me parece que está bien
Queria llamarlas desde codigo gml al pulsar click, pero al final creo que me convence más lo de crear objetos independientes porque he leido que el id se pierde al recargar la pantalla o algo así (lo siento pero no me acabo de enterar bien de como funcionan las instancias en el game maker)
Al hacer objetos, puedo meterles un script a ejecutar en el leftButton que me cambia la carta por la imágen de la lista
Parece que funciona, espero poder pulirlo