Abril 15, 2010, 06:56:44 PM Ultima modificación: Abril 16, 2010, 08:24:48 PM por kaliman777
Hola amigos:

Una vez ped? ayuda sobre este tema pero las respuestas no me ayudaron lo suficiente. Sigo insistiendo a ver si alguien me ayuda a desarrollar el c?digo correcto, yo s? que casi todos dominan esto de las ID.

Ok. Tengo una ROOM con 48 instancias de objetos n?meros en una 8 l?neas horizontales de 6 n?meros cada una entre 0 y 9 que pueden repetirse, cada instancia es un n?mero diferente y ocupa una cuadr?cula aparte, (Por ejemplo 3,6,8,5,3,0).

Luego con un objeto controlador, genero otros seis al azar, c?rculos uno debajo de cada otro de los anteriores. As? al final debo comprobar una bola contra 8 n?meros en su mismo eje X,  y verificar cu?ntos aciertos seg?n el dibujo anexo.

Debo programar los pagos as?: ACIERTOS en orden de izquierda a derecha 1=$1; 2=$10; 3=$60; 4=$250; 5=$1000 y todos los 6=$5000.

Si caen en cualquier orden: 2=$4; 3=$10; 4=$40; 5=$500.

Debo comparar cada uno con el que est? encima (en el mismo eje X). Si coinciden le sube algo al SCORE.

No hallo c?mo lograr que se comparen estos n?meros. Prep?renme un c?digo, trozo de c?digo y d?ganme d?nde los pongo y qu? variables declaro. Usando ID de las bolas y de los n?meros, si puedo usar un sprite con subimag?nes o sprites diferentes.
Espero alg?n ejemplo, Gracias

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

En realidad te recomendar?a hacerlo con listas, es mucho m?s f?cil.

Simplemente crea 6 listas que tengan cada una los 8 enteros que hay que comparar, luego crea una lista que contenga los 6 n?meros que saca el jugador. Busca si el numero en la posici?n 1 de la lista del jugador se encuentra en la lista 1 de enteros, el n?mero en la posici?n dos en la lista dos, el n?mero 3 en la lista 3, etc.

Luego solo es cuesti?n de determinar cuantas coincidencias hubo y seleccionar el premio.

Te dejo un ejemplo, usa control para sacar los n?meros del jugador y shift para reiniciar el puntaje.

#2 Abril 15, 2010, 11:50:40 PM Ultima modificación: Abril 16, 2010, 12:13:05 AM por kaliman777
Gracias Killer, tu engine es de un MASTER, gracias de veras, con la variante de que en mi idea original los n?meros generados al azar aparecen solo en una linea central, no dispersos, como en tu caso.

Hay dos preguntas que te quiero hacer: ?Podr?a yo usar mis propios sprites para los n?meros? y ?Es posible que los n?meros (entre c?rculos) sean generados en la fila del medio, es decir en la No. 5 y no dispersos por toda la escena?

Espero me aclares un poquito esto. Mil gracias de nuevo.

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

Ahora veo, la idea es que cada linea de n?meros pueda dar un premio diferente, pense que se trataba de un premio general. Una duda, ?las filas deben dar todos los premios posibles o solo el mayor premio posible? Me refiero a si, por ejemplo, una fila saca 5 n?meros no consecutivos gana premio por 2 consecutivo, 3 consecutivo y 5 no consecutivo o solo por 5 no consecutivo.

En todo caso, el ejemplo anterior puede ser facilmente cambiado para dibujar sprites en lugar de texto. Simplemente haz que el sprite tenga las subimagenes en orden de 0 a 9 y a la hora de dibujar haz que la subimagen sea el correspondiente n?mero de la lista.

Las posiciones de las lineas tambien pueden cambiarse sin mucha dificultad, es cuestion de cambiar las coordenadas de dibujo.

Cita de: Killer en Abril 16, 2010, 10:03:26 AM
Ahora veo, la idea es que cada linea de n?meros pueda dar un premio diferente, pense que se trataba de un premio general. Una duda, ?las filas deben dar todos los premios posibles o solo el mayor premio posible? Me refiero a si, por ejemplo, una fila saca 5 n?meros no consecutivos gana premio por 2 consecutivo, 3 consecutivo y 5 no consecutivo o solo por 5 no consecutivo.

En todo caso, el ejemplo anterior puede ser facilmente cambiado para dibujar sprites en lugar de texto. Simplemente haz que el sprite tenga las subimagenes en orden de 0 a 9 y a la hora de dibujar haz que la subimagen sea el correspondiente n?mero de la lista.

Las posiciones de las lineas tambien pueden cambiarse sin mucha dificultad, es cuestion de cambiar las coordenadas de dibujo.

Exacto Killer: cada una de las 8 l?neas es un boleto o ticket de loter?a individual. Y puede pagar varios premios (dos al inicio, 4 en total, etc y los suma).

Me gustar?a que me ilustrases un poco m?s c?mo cambio a que la linea de abajo q pusiste me quede en el centro y hacer q cada linea se aindividual, no premio general.

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

creo haberte pasado un ejemplo similar a lo q pides en un post anterior XD XD XD
Un foro donde hay de todo: http://fileceru.foroactivo.net (se necesitan moderadores para el foro)

#6 Abril 16, 2010, 06:41:53 PM Ultima modificación: Abril 16, 2010, 08:27:57 PM por kaliman777
Cita de: soccer2008 en Abril 16, 2010, 03:09:27 PM
creo haberte pasado un ejemplo similar a lo q pides en un post anterior XD XD XD

Tu ejemplo, Soccer, es muy bueno, algunas partes me han servido de mucho, pero en cuanto a los diferentes pagos del SCORE, no lo puedo aplicar a mi juego. Es decir trabajaste los aciertos de otra manera para la puntuaci?n. En el dibujo se puede ver la diferencia.

Ando bastante cerca, pero el c?digo de Killer es muy poderosos y me falta algo de entendimiento XD.

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

Ac? te dejo el ejemplo m?s parecido a lo que ocupas, puedes compararlo con el anterior para ver las diferencias.

Ahora en lugar de que las listas almacenen los n?meros en columnas lo hacen en filas, de manera que en lugar de buscar si el n?mero existe en la columna checa si el n?mero en la posici?n correspondiente a la fila es el mismo que saco el jugador.


Cita de: Killer en Abril 17, 2010, 12:15:16 AM
Ac? te dejo el ejemplo m?s parecido a lo que ocupas, puedes compararlo con el anterior para ver las diferencias.

Ahora en lugar de que las listas almacenen los n?meros en columnas lo hacen en filas, de manera que en lugar de buscar si el n?mero existe en la columna checa si el n?mero en la posici?n correspondiente a la fila es el mismo que saco el jugador.



EXCELENTE hermano!!!

Mis respetos para t?, nunca hab?a podido a?n con m?ltiples ayudas.

Mereces un aplauso a tu cuenta.



Quisiera que me des una pista para algo: cuando hay algunos pagos, quiero programarle ciertos sonidos y algunas animaciones. Por ejemplo, cuando salen tres aciertos de primero, una voz dice: "TRES PRIMEROS y una fanfarria", d?nde (evento) y c?mo (usando IF?) lo hago. Dame una idea.


Un mill?n de gracias. Te dar? los cr?ditos merecidos.
La verdad es como la luz de una vela, que ni la oscuridad inmensa, puede opacarla.

Puedes agregar eso en esta parte del c?digo:

  //Da puntajes
switch(Aciertos){
  case(1) : if ds_list_find_value(Lista[i],0)=ds_list_find_value(Numeros,0) score+=1; break;
  case(2) : if Seguido score+=10; else score+=4; break;
  case(3) : if Seguido score+=60; else score+=10; break;
  case(4) : if Seguido score+=250; else score+=40; break;
  case(5) : if Seguido score+=1000; else score+=500; break;
  case(6) : score+=5000; break;
}


Por ejemplo, si quieres activar un sonido cuando lo primero que sale son tres aciertos cambias la linea en case(3) por

  case(3) : if i=0 sound_play(Sonido); if Seguido score+=60; else score+=10; break;

Donde if i=0 significa si se esta checando la primera linea. Con eso conseguirias que solo el premio en el primer tiquete active el sonido, pero si no hay premio en la primera linea entonces no tendrias ning?n sonido sin importar que salga en las dem?s. En ese caso quizas seria mejor agregar una variable que guarde cual fue el premio mayor para luego activar su respectivo sonido, pero eso ya es decision tuya.

En el caso de animaciones te recomendaria que lo hicieras con otro objeto, donde tienes lista la animaci?n y que se destruye al finalizarla, inclusive podrias agregar el sonido en el create de ese objeto. En ese caso en lugar de sound_play usas instance_create:

  case(3) : if i=0 instance_create(x,y,Objeto); if Seguido score+=60; else score+=10; break;

La forma que sea preferible de utilizar dependera de que tienes en mente con las animaciones y sonidos.

Gracias Killer, una vez m?s, tratar? estas sugerencias y si tengo dificultades te las har? saber.

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