Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mensajes - jmbs19

91
Preguntas y respuestas / Re:Colocar objetos aleatoriamente
Diciembre 21, 2015, 07:11:57 PM
Cita de: kostra en Diciembre 21, 2015, 01:05:11 PM
pues va ser que no me sale xD

Es decir, bien, crea la cuadricula bien, se posicionan bien pero... en ocasiones, las cartas se repiten (cosa que no quiero, cada carta es única y ha de aparecer una sola vez, por eso tantos objetos), además, en ocasiones, hay lugares que quedan vacíos, no sé si porque se pondrá una tarjeta encima de otra o que no se pone ahi directamente :/

https://gyazo.com/5b48a59fbc3b00402b4b512872143ed9

este es el código que quedó al yo editarlo como pienso que se edita... muy probable que haya hecho un fail xD
[gml]///place cards
lista = ds_list_create();

for( i=0; i<20; i+=1 )
{
    repeat(20)
    ds_list_add( lista, i );
}

ds_list_shuffle( lista );//con nuestra lista ya creada y revuelta procedemos a crear las cartas

k = 0;
for( j=1; j<=4; j+=1 )
for( i=1; i<=5; i+=1 )
{
    carta=ds_list_find_value(lista, k)//donde carta es el valor que tendra esa carta
    switch (carta)
    {
     case 1:
     instance_create( i*284,j*284, oqparrotA);
     show_message("placed");
     break;
     case 2:
     instance_create( i*284,j*284, oqparrotB);
     break;
     case 3:
     instance_create( i*284,j*284, oqpenguinA);
     break;
     case 4:
     instance_create( i*284,j*284, oqpenguinB);
     break;
     case 5:
     instance_create( i*284,j*284, oqpigA);
     break;
     case 6:
     instance_create( i*284,j*284, oqpigB);
     break;
     case 7:
     instance_create( i*284,j*284, oqrabbitA);
     break;
     case 8:
     instance_create( i*284,j*284, oqrabbitB);
     break;
     case 9:
     instance_create( i*284,j*284, oqsnakeA);
     break;
     case 10:
     instance_create( i*284,j*284, oqsnakeB);
     break;
     case 11:
     instance_create( i*284,j*284, oqelephantA);
     break;
     case 12:
     instance_create( i*284,j*284, oqelephantB);
     break;
     case 13:
     instance_create( i*284,j*284, oqgiraffeA);
     break;
     case 14:
     instance_create( i*284,j*284, oqgiraffeB);
     break;
     case 15:
     instance_create( i*284,j*284, oqhippoA);
     break;
     case 16:
     instance_create( i*284,j*284, oqhippoB);
     break;
     case 17:
     instance_create( i*284,j*284, oqmonkeyA);
     break;
     case 18:
     instance_create( i*284,j*284, oqmonkeyB);
     break;
     case 19:
     instance_create( i*284,j*284, oqpandaA);
     break;
     case 20:
     instance_create( i*284,j*284, oqpandaB);
     break;
    }
    k += 1;
}[/gml]


ese reapeat(20) dentro del for para que es? estas añadiendo 20 ceros, 20 unos....20 veintes, entonces estas creando una lista con 400 valores, de los cuales solo estas tomando 20, obviamente te saldran repetidos algunos y otros no saldran nunca.

ademas en tu case no estas evaluado el valor 0, por lo que de hay que tengas espacios vacios. que son los 20 ceros que añadiste en tu for anterior.

si quieres añadir 20 cartas random y no 400 no coloces ese repeat(20), clamud y yo te pusimos ese repeat porque dijiste que querias un memoria, en donde hay una pareja por carta, repeat(2).
92
san google casi siempre tiene la respuesta para las preguntas y en este caso es una que se a respondido bastante. de todas maneras te dejo la funcion que permite cambiar el objeto al que la view hace follow, la respuesta esta en el manual

[gml]
if instance_exists(obj_Player)
   {
   view_object[0] = obj_player;//esta setea el objeto que se seguira
   }
[/gml]

ejemplo tomado del manual

93
Preguntas y respuestas / Re:Colocar objetos aleatoriamente
Diciembre 19, 2015, 12:31:59 AM
kostra es exactamente lo que hace la segunda parte del codigo que te paso clamud.

[gml]
ds_list_shuffle( lista );//con nuestra lista ya creada y revuelta procedemos a crear las cartas

k = 0;
for( j=1; j<=2; j+=1 )
for( i=1; i<=2; i+=1 )
{
    with instance_create( i*4,j*4, obTarjeta )
    /*image_index = ds_list_find_value( lista, other.k );*/ //lo dejo por si te funciona
    carta=ds_list_find_value(lista, other.k )//donde carta es el valor que tendra esa carta
    k += 1;
}
[/gml]

el codigo de clamud es para crear instancias y agregarles una variable con que tipo de carta son,esta es la manera mas eficiente, un objeto al que se le asigna un valor y apartir de hay hace algo.

ahora bien si tienes un objeto por carta, que no es nada eficientes por temas de reescritura de codigo, tendrias que usar un switch, del largo de cantidad de objetos por cartas tengas (por eso digo que no es muy eficiente).

[gml]
ds_list_shuffle( lista );//con nuestra lista ya creada y revuelta procedemos a crear las cartas

k = 0;
for( j=1; j<=2; j+=1 )
for( i=1; i<=2; i+=1 )
{
    carta=ds_list_find_value(lista, k)//donde carta es el valor que tendra esa carta
    switch (carta)
    {
     case 1:
     instance_create( i*4,j*4, obTarjeta1);
     break;
     case 2:
     instance_create( i*4,j*4, obTarjeta2);
     break;
     .
     .
     .
     case n:
     instance_create( i*4,j*4, obTarjetan);//es tajeta a la n,  no tarjetan XD
     break;
    }
    k += 1;
}
[/gml]
y como ves arriba te acabo de mostrar porque un objeto por carta es lo mas ineficiente que puedes hacer, parece comodo al principio, pero luego pasa lo de arriba.
ps: los codigos que pase son los de clamud adaptados a tu ejemplo
94
yo voto por el el servidor propio, una cosa, niu te doy unos consejos cuando codifiques la pagina(no te digo que voy a ayudar mucho en este proyecto por falta de tiempo)

1)los articulos se obtienen por sql en una pagina base atravez de una consulta, esto para no tener 999999 .html o .php, sino un principal con el indice(tomado de base de dato) y uno que muestre la funcion(tambien desde base de dato)

2)usa includes, las cosas que se repitan en todas las paginas metelas en includes, esto para evitar tener que cambiar en 9999 paginas el banner, por ejemplo.

3)000webhost ofrece 1500 megas y 2 bases de datos, eso es mas que suficiente para todo el manual, despues de todo es solo texto y una que otra imagen.

4)se puede crear un php al que tenga acceso solo los admin por medio de clave y usuario donde puedan crear/editar datos y guardarlos en base de datos, esto para no tener que crear o editar html/php cada vez que se vaya a realizar php

5)como ultima cosa, para cualquier trabajo profecional es necesario que todo se pueda realizar desde la pagina/programa y que no tengas que modificar los datos de sql por phpmyadmin.
95
niu creo que no te entiendo entonces, ¿quieres hacer un manual pero que no sea igual o parecido al de yoyo? ???

entonces podrias explicarme que es lo que buscas con esa parte de la propuesta.

te lo digo por lo siguiente:
en este momento yo entiendo el ingles y le estoy sacando mucho probecho al manual en ingles de yoyo, pero cuando empese a programar en gm, hace como 4 años, no lo entendia mucho y lo que me ayudo fue precisamente el manual que estaba en cgm. puedo decirte que muchos usuarios nuevos agradecerian tener ese manual en español. porque yo lo hice en su momento.
96
el image_speed es literalmente cuanto se le sumara por step a image_index, tu codigo es

[gml]
if image_index = imagmax {image_index = imagmin}
[/gml]

y los valores son de 4 en 4, el 0.2 y el 0.4 son multiplos de 4, mientras que el 0.3 no lo es, si es 0.3 el image_speed, el image_index nunca sera igual a 4, sera 3.9 y luego saltara a 4.2.

la manera de solucionar esto seria en ves de usar un =, usar un < o >

[gml]
if image_index > imagmax {image_index = imagmin}
[/gml]
97
pienso que seria muy buena idea lo del curso, pero se deberia de establecer una cosa.

el curso seria una serie de temas que los usuarios pueden ir siguiendo en orden, esto lo digo porque seria ilogico que se reiniciara el curso cada vez que alguien nuevo entra al foro.

otra cosa que pienso que seria exelente es una seccion de ejercicios, donde se propongan los ejercicios y los usuarios los respondan, pero se necesitaria un incentivo, porque aunque no lo crean, no es mucho incentivo el "aprender"  XD para alguien nuevo.

otra cosa que pienso que seria muy bueno hacer es traducir el manual, no tanto hacer uno, porque ya esta hecho http://docs.yoyogames.com/source/dadiospice/index.html, sino traducirlo.

yo sinceramente no tengo mucho tiempo para hacer eso, en este momento estoy en unos proyectos grandes y ademas estoy en la universidad, pero continuare respondiendo dudas cada que pueda  :D.

ps: alguien sabe el bbcode para agregarle a una palabra una direccion, es decir, cual es el equivalente a <a ref="www.google.com">google</a> en bbcode
98
pues me parece que tendrias un mejor resultado haciendo algo como esto:
[gml]
//evento que crea arboles
num_arboles=100//numero de arboles
arboles_cre=0//arboles creados
while(arboles_cre<num_arboles)
{
x_a = random(room_width)
if !collision_rectangle(x_a-64,144,x_a+64,200,obj_arbol,false,true)
     {
      instance_create(x_a,144,obj_arbol)
      arboles_cre=arboles_cre+1
     }
}
[/gml]

el codigo de arriba es para crear exactamente 100 arboles, sin embargo tienes que tener cuidado de que haya suficiente espacio para ellos, en caso contrario este while colgara el programa.

si no te interesa tener exactamente 100 arboles puedes hacer esto:

[gml]
for(i=0;i<100;i=i+1)
{
x_a = random(room_width)
if !collision_rectangle(x_a-64,144,x_a+64,200,obj_arbol,false,true)
     {
      instance_create(x_a,144,obj_arbol)
     }
}
[/gml]

en los dos casos lo que se hace es comprobar si no hay colisiones en una caja de 128*64(x,y) y si no las hay crea el obj_arbol
99
Juegos completos / Re:Pato espacial
Diciembre 11, 2015, 03:04:36 PM
el control lo veo un poco contradictorio, y realmente eso fue lo que me dificulto avanzar mas en tu juego, no se si soy el unico pero me parece contradictorio que uses la flecha de arriba para ir para arriba y abajo, yo se que usas z o x para el cambio de gravedad, pero me parece incomodo.

yo recomendaria que para ir para arriba usaras la flecha de arriba y para ir para abajo usaras la flecha de abajo.

por lo demas tu juego me parecio muy bueno, la banda sonora va acorde al estilo del juego y te dire que me encato el cambio de cuarto con scanlines verticales.
100
hay otras mejores maneras, pero esta es la mas sencilla que hay hasta donde se.

[gml]
//esto puede ir dentro de step o en draw, tambien puedes usar directamente los eventos de key released y colocas solo la asignacion de sprite
if keyboard_check_released(vk_left)
sprite_index = spr_parado_izq
if keyboard_check_released(vk_right)
sprite_index = spr_parado_der
[/gml]

el evento check_released se ejecuta cuando dejas de pulsar una tecla.
101
Preguntas y respuestas / Re:CORRUPTO al importar gm8 a gms
Diciembre 10, 2015, 08:24:54 PM
quizas, y digo solo quizas sea el nombre del archivo
102
niu yo se que dices que no quieres usar nada web porque tu juego ya esta hasta el tope. pero dejame decirte que si combinas el proceso de penumbra con un reloj online(solo reloj, algo que te de la hora, mas nada) evitarias que, por ejemplo, cambiaran la hora del telefono y "tada" mejoras instantaneas.
103
Cita de: penumbra en Diciembre 09, 2015, 10:24:30 PM
solamente concatena las líneas. Al final, todo el texto quedaría guardado en una cadena larga.
[gml]
texto += file_text_read_real(file);
[/gml]
Creo que fue despiste de jmbs, porque al principio la variable está inicializada como una variable simple.
error mio ,penumbra, al declarar la variable. sin embargo si lo estoy guardando en un array, para que el:

[gml]until (texto[(i-1)]="")[/gml]

pueda comprobar con la misma variable, sin embargo si lo va a guardar como un string largo seria necesaria una variable temporal que comparar en esa parte.

pd: no conocia esa funcion penumbra, seria util en este tipo de casos, sin embargo se seguiria usando el do while pero comparando el resultado de esa funcion si es true o false
104
http://docs.yoyogames.com/source/dadiospice/002_reference/file%20handling/files/file_text_read_string.html

[gml]
i=0;
texto ="";//esto lo agregas para guardar el contenido del archivo
file = file_text_open_read(working_directory + "\archivo.txt");
do //en lugar de usar el while usamos el do while, do <statement> until(<expression>) para poder añadir un valor a texto antes de comprobar
   {
   texto = file_text_read_real(file);//leemos la linea y la guardamos en i
   file_text_readln(file);//saltamos la linea para la proxima lectura
   i=i+1//aumentamos el valor de i
}
until (texto[(i-1)]="")//repetira hasta que encuentre el final del archivo, aqui puedes meter un caracter especial o dejarlo asi.
file_text_close(file);
[/gml]

este es el ejemplo del link que te pase pero adaptado a tu pregunta, el comando file_text_read_real solo lee la una linea, y el comando file_text_readln salta la linea que se leera.

y como dijo penumbra arriba, deberias de buscar los ejemplos que salen en el manual para cada funcion y entenderlos.
105
niu y kostra los dos estan en lo correcto, pero para diferentes tipos de juegos.

niu tu estas hablando de un topdown y kostra de un plataformero.

la cuestion es: que tipo de perspectiva esta haciendo iron, iron eso es algo que debiste de colocar en tu pregunta. si haces una perspectiva que se ve desde arriba (top-down) es lo que te puso niu, si es un plataformero(supermario creo que seria la mas conocida referencia) es lo que te puso kostra.