Noticias

¡Ayuda a la Comunidad GM, haz una donación!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Usando ds_list. Cómo verificar ciertas variables según la subimagen elegida  (Leído 490 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado kaliman777

Buenas makeros:

Estoy programando un juego de poker. Quiero mejorar los códigos que uso para repartir las cartas, barajar el mazo y descartar las que no me sirven.
NOTA: Uso un solo objeto con 52 subimagenees con los naipes.
Para crear las 5 cartas uso este código en Event Create:
Código: [Seleccionar]
naipe=ds_list_create()
for(i=1;i<51;i+=1)
{
ds_list_add(naipe,i)
}
ds_list_shuffle(naipe)
y en el Evento Draw uso para dibujar las 5 cartas, sin que se repita ninguna, el siguiente:
Código: [Seleccionar]
draw_sprite(s_cartas,ds_list_find_value(naipe,0),50,50);
draw_sprite(s_cartas,ds_list_find_value(naipe,1),200,50);
draw_sprite(s_cartas,ds_list_find_value(naipe,2),350,50);
draw_sprite(s_cartas,ds_list_find_value(naipe,3),500,50);
draw_sprite(s_cartas,ds_list_find_value(naipe,4),650,50);

Mi duda es la siguiente: cómo programo que si salen 5 consecutivas, la variable global.escalera=1; si 4 iguales, global.poker=1

Ayuda por favor!!!!

La verdad es como la luz de una vela, que ni la oscuridad inmensa, puede opacarla.
 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Black_Cat

Y bueno, ya que tenés la lista, usala para ver los valores
tomas la primer carta de la mano, y verificas si las otras 4 van en escalera, osea, va aumentando el valor en 1:
var carta;
carta = ds_list_find_value(mazo, 0)//la primer carta de la mano
if (ds_list_find_value(mazo,1) == carta+1) && (ds_list_find_value(mazo,2) == carta+2)
&& (ds_list_find_value(mazo,3) == carta+3) && (ds_list_find_value(mazo,4) == carta+4)
    global.poker = true
Notese la redundancia en el codigo, hasta se puede colocar dentro de un for. Pero bue, claridad, antes.

Y para verificar si es poker, tendrias que recorrer los primeros 5 elementos con un ciclo for, y una variable centinela, que indique que si 4 cartas son iguales, sea poker.
El codigo no lo escribo porque ya me voy a dormir XD pero no creo que sea muy dificil.


 
Los siguientes usuarios dieron las gracias a este tema: kaliman777


Desconectado kaliman777

Gracias Black_Cat.
He posteado una demo del jueguito. Agradecería si tú o alguien más se anima y me ayuda a ingresar un par de códigos adicionales de cara a verificar premios.

Tres iguales; global.triple=1;
si dos cartas iguales: global.par=1;
si las 5 son del mismo palo: global.flush=1

gracias

La verdad es como la luz de una vela, que ni la oscuridad inmensa, puede opacarla.
 


Desconectado Black_Cat

._.

 hacer el de 2, 3, 5, n cartas es lo mismo que hacer el de 4, el de poker. Solo tenes que extrapolarlo o como se diga.
En un principio, unicamente hacés un recorrido de la primer carta hasta la quinta y adicionalmente ponés un contador que cuente las repeticiones de una carta en concreto, si el contador es 2, 3 5, bueno, ya determinarás que clase de premio es.

Pero así como lo decís casi que, estas pidiendo que te hagamos el juego, no sé.