Diagonales

Started by Futu-block, March 28, 2011, 02:43:47 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

SplinterGU

no, el problema que dice wind de las teclas simultaneas es de hard, y no son esas teclas y esa cantidad de teclas las que dan problemas.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Yawin

#16
Mi recomendación:


mi_dir=0;
if (key(_up))
    mi_dir+=1;
end
if (key(_down))
    mi_dir+=3;
end
if (key(_left))
   mi_dir+=7;
end
if (key(_right))
   mi_dir+=11;
end


Logo tienes los casos:
Arriba=1;
Arriba-derecha=12;
Derecha=11;
Derecha-abajo=14;
abajo=3;
Abajo-izquierda=10;
Izquierda=7;
Arriba-izquierda=8;

Parece complicado, pero es como los permisos de linux: El número que tome "mi_dir" sólo puede aparecer por una combinación determinada. Logo, sólo tienes que hacer un switch.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

SplinterGU

si nos vamos a poner en optimus prime, entonces...


direction=(key(_up)?1h:0)|(key(_down)?2h:0)|(key(_left)?4h:0)|(key(_right)?8h:0);


donde direccion es igual a:
sin pulsacion = 0h
arriba = 1h
abajo = 2h
izquierda = 4h
derecha = 8h
arriba+izquierda = 5h
arriba+derecha = 9h
abajo+izquierda = 6h
abajo+derecha = 10h

y podriamos seguir combinando, hasta obtener las 15 combinaciones posibles.

esta es la mas optima de todas, pero la idea es hacerlo simple para que futu lo entienda.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Rein (K´)ah Al-Ghul

Quote from: Windgate on March 29, 2011, 03:24:33 AM
Quotejajaja... hablando de soluciones faciles...

vos pensas que si no entiende porque no le funcionan las diagonales va a entender el codigo que acabas de poner...

lo fantastico de este foro es que cada dia que pasa hay es una sorpresa...

Pues esa solución me ha dado la idea de tener una matriz 3x3 y mover una celda dentro de la matriz según qué tecla se pulsa, la posición final de la celda indicaría la dirección resultante. Lo veo elegante y más gráfico que usar un valor numérico, pero para programar eso ya se nos puede hacer caquita encima el Futu xD

Si alguien sube algún ejemplo funcionar con su método se puede valorar cuál es el mejor...
Eso no es mala idea, tambien serviria para probars joys :P

Quote from: SplinterGU on March 29, 2011, 01:37:12 PM
si nos vamos a poner en optimus prime, entonces...


direction=(key(_up)?1h:0)|(key(_down)?2h:0)|(key(_left)?4h:0)|(key(_right)?8h:0);


donde direccion es igual a:
sin pulsacion = 0h
arriba = 1h
abajo = 2h
izquierda = 4h
derecha = 8h
arriba+izquierda = 5h
arriba+derecha = 9h
abajo+izquierda = 6h
abajo+derecha = 10h

y podriamos seguir combinando, hasta obtener las 15 combinaciones posibles.

esta es la mas optima de todas, pero la idea es hacerlo simple para que futu lo entienda.
Aun tengo pendiente el trabajo con variables a nivel bit...
es muy buena solucion y ocupa poca memoria, ( con un byte tendriamos dos controles...)

Rein (K´)ah Al-Ghul
Infected with the Krieger strain of the Human-MetaHuman Vampiric Virus.

en vez de darme Karma positivo, denme (K´)arma negativ

Futu-block

Quote from: SplinterGU on March 29, 2011, 01:37:12 PM
si nos vamos a poner en optimus prime, entonces...


direction=(key(_up)?1h:0)|(key(_down)?2h:0)|(key(_left)?4h:0)|(key(_right)?8h:0);


donde direccion es igual a:
sin pulsacion = 0h
arriba = 1h
abajo = 2h
izquierda = 4h
derecha = 8h
arriba+izquierda = 5h
arriba+derecha = 9h
abajo+izquierda = 6h
abajo+derecha = 10h

y podriamos seguir combinando, hasta obtener las 15 combinaciones posibles.

esta es la mas optima de todas, pero la idea es hacerlo simple para que futu lo entienda.

gracias venerable maestro astilla ¬¬  pero...
como puedo entender lo que son las interrogaciones?? ^^U
¿y el simbolo '' | '' como se pone? que lo he copiado y pegado...

SplinterGU

el simbolo "|", lo has puesto en el post... es el pipe... esta junto a la tecla 1, que ademas tiene el simbolo !, el otro simbolo, la barra dividida es el pipe.

con respecto al signo de pregunta es...

(si condicion)?<valor true>:<valor false>

no se permiten instrucciones (que no devuelvan valor) es solo para expresiones.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Prg

mmmmm!!

y por qué sólo las diagonales?

si es para disparar mejor mete ángulos y yá
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

Futu-block

#22
Quote from: SplinterGU on March 29, 2011, 10:55:26 PM
el simbolo "|", lo has puesto en el post... es el pipe... esta junto a la tecla 1, que ademas tiene el simbolo !, el otro simbolo, la barra dividida es el pipe.

con respecto al signo de pregunta es...

(si condicion)?<valor true>:<valor false>

no se permiten instrucciones (que no devuelvan valor) es solo para expresiones.

buf...
voy a copiar-pegar y probar...

como odio usar codigo ajeno y no lo digo por esto :(



Edito:
¿y como guardo la ultima pulsacion? osea como hago que respete la ultima vez que pulse....


espera; vi en algun codigo eso de ''variable_provisional''...