¿Vector de distancia random con valores random?

Started by Tuxmmer, January 11, 2012, 01:37:11 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Tuxmmer

Quote from: SplinterGU on January 11, 2012, 07:51:27 PM
bien, me alegro!

Aunque ahora me resultó otro lio, ¿cómo podría mostrar en vez de esos números (75,77,80...) imágenes?
Por ejemplo; un gallo para _SPACE, un cerdito para _LEFT, etcétera.
jeje sonará raro, pero busco hacer un juego de animales de granja, por eso lo de las imágenes.

Gracias una vez más por su ayuda.

SplinterGU

simple...


    int keys_names[]= _A,_B,_C,_D,_E,_SPACE,_UP,_DOWN,_LEFT,_RIGHT;
    string keys_names_str[]= "A", "B", "C", "D", "E", "SPACE", "UP", "DOWN", "LEFT", "RIGHT";


y tomas de uno u otro vector segun necesites.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Tuxmmer

Espero no te esté fastidiando mucho con mis problemas por el foro  :P No me gustaría se piense me gustan las cosas fáciles, pero en ahora que me he aventado algo más complejo no sé por dónde resolverlo. Gracias por su ayuda.

Busco hacer que después te tener el vector aleatorio, espere un segundo para teclear algo; si se presiona una tecla, verificar que esa tecla sea la primera del vector aleatorio, si coincide, entonces elimina ese valor (el primero) del vector aleatorio y recorre los otros datos dando el 2° ahora como el 1° ([0])  y así con los demás valores recorriéndolos hacia la izquierda.Si no coicide la tecla mostrada con la presionada aparecerá un nuevo vector aleatorio, vaciar el vector aleatorio y publicar otro nuevo.
Después dar igualmente otro segundo para presionar lo que ahora sería  el primer valor y así con todos.

Esto daría el efecto de que aparezcan teclas por pantalla, espera un segundo al principio y entre cada tecla para ser presionada, si se presiona bien se elimina y se recorren las teclas a la derecha, sino se presiona bien una tecla de la secuencia del array aleatorio entonces elimina los valores del vector y muestra unos nuevos.


Yo me hice algo así para el bucle de todo el juego, sólo para arriba y abajo, faltarían las otras teclas:
Quotewhile(timer[9]<=100)
        if( key(_UP) )
            timer[9] = 0;
            if( coincidence(_UP) )
                signal( id,s_kill );
                movekey();
            else
                signal( type key_in_window, s_killl );
                new_array();
            end
            if( coincidence(_DOWN) )
                signal( id,s_kill );
                movekey();
            else
                signal( type key_in_window,s_killl );
                new_array();
            end
        end
    end
Y para comprobar hice este código:
Quotefunction int coincidence ( int value_btn ) //Recibe valor de la tecla
begin
    if(array_rand[0]==value_btn) //Si es el primero del vector devuelve True
        say("True");
        for(n=0;n<tx-1;++n) //Recorre los valores del vector random hacia la izquierda
            array_rand[n]=array_rand[n+1];
        end
        return(1);
    else
        return(0); //Si no se encuentra devuelve False
    end
end

Pero no me funciona bien; y ese es el probelma. No sé cómo hacer el ridmo del juego como lo explicaba.
Ahora si no sé por dónde agarrarle, llevo tres semanas con esto y no he dado en una. Por eso expongo todo mi problema y disculpen si los lio mucho. Gracias por su ayuda :)

SplinterGU

luego lo miro tranquilo, ahora tengo que salir al medico y no entendi mucho tu problema.

si pones un codigo completo con el error siempre es mejor para diagnosticar tu problema.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Tuxmmer

Vale. Aquí pongo un código que he echo con su ayuda.
http://www.mediafire.com/file/am2emqcndbp8i0p/test.zip
En él se hace una comparación de las cadenas aleatorias con la cadenas que se escriban, dando tiempo a que pulse.
Lo que yo no consigo hacer es que se elimine la imagen de la tecla en la mira si se presionó bien y se recorran los otros elementos, y en caso de que se pulse una tecla de la secuencia mal; se borre esa lista de teclas y aparezca una nueva secuencia.


Gracias por su ayuda, les estoy muy agradecido y espero pronto pueda sacar esto que ya me tiene mucho tiempo pensando.
Deseando de lo mejor en tu visita al médico :)

SplinterGU

tu codigo funciona bien, mira que la linea de arriba de los writes es la de la cola, y la de abajo es la de array_teclas.

una cosa que debes tener en cuenta es, no poner writes dentro de un loop, sin hacer un delete_text de los write previos... los write no son necesarios actualizarlos, se actualizan solos, si apuntan a variables o a punteros.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Tuxmmer

#22
Sí, sí funciona bien, el lio está en que no he podido idearme para hacer que aparezcan teclas por pantalla, espera un segundo al principio y entre cada tecla para ser presionada, si se presiona bien se elimina y se recorren las teclas a la izquierda, sino se presiona bien una tecla de la secuencia del array aleatorio entonces elimina los valores del vector y muestra unos nuevos dando de nuevo un tiempo para presionar el priumer elemento.

El código que armé no espera al principio la respuesta del teclado, no elimina la tecla que se presionó y la recorre, y tampoco crea un nuevo array_teclas si se presionó mal una tecla. Eso es lo que busco, pero no sé por dónde andará la cosa. Espero solucionarle pronto, lo que busco ahora son ideas jeje.

Ojalá me puedan dar soporte para guiarme al solucionar esto, gracias. :)

SplinterGU

ya se que se limpian luego de X tiempo (que no pulsas o tardas en pulsar o pulsas teclas que no son validas), y que las va rotando... por eso digo que funciona...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2