Loader

Shoutbox

Usando ds_list. Cómo verificar ciertas variables según la subimagen elegida

Publicado por kaliman777, Diciembre 04, 2019, 03:19:46 AM

Tema anterior - Siguiente tema

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

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:
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:
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.

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:
[gml]
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[/gml]
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.



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.

._.

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é.



Powered by EzPortal