GUIA DE EDUKE
 • ¿Qué es Eduke?
 • Estructura del puerto
LAS VARIABLES
 • Fundamentos
 • Comandos generales
 • Operaciones Lógicas
 • Variables actualizadas
 • Variables predefinidas
ESTRUCTURAS
 • Introducción
 • Sector
 • Wall
 • Sprite
 • El jugador
 • Userdef
 • Comandos alternativos
NUEVOS ELEMENTOS
 • Switch
 • Eventloadactor
 • Bucles
OTROS COMANDOS
 • Display
 • Proyectiles
 • Otros comandos
EVENTOS
 • Introducción
 • Listado de eventos
MAS INFORMACION
 • Eduke32 Wiki
 • Eduke 2.0 - Oficial
 • Eduke 2.1.1
 • RTCM - Eduke FAQ
 • RTCM - Eduke Guide

Comandos generales de Variables


Comandos generales


Primeras operaciones con variables

Con variables se pueden hacer varios tipos de operaciones, empezando por las más básicas (suma, resta, multiplicación, división, raíces cuadradas...), hasta ampliar al calculo trigonométrico. Estas operaciones te permitirán desarrollar un método geométrico en tus códigos llegando así a efectos bastantes curiosos, todo depende de tu habilidad delante del teclado. Primero abordaremos el tema desde las operaciones más simple.

¿Cómo configurar variables con un valor determinado?

Para configurar variables con un valor determinado simplemente tenemos que escribir los siguientes comandos:

 setvar < variable1 > < constante >


 setvarvar < variable1 > < variable2 >


El primer comando sirve para configurar la variable1 con el valor de la constante (variable1=constante), en cambio el segundo configura el valor de la variable1 con el valor de la variable2 (variable1=variable2).


Operaciones aritméticas básicas.

También podemos operar con variables para sumar, restar, multiplicar y dividir.

Los comandos aceptados por Eduke son:

 addvar < variable1 > < constante >


 addvarvar < variable1 > < variable2 >


 subvar < variable1 > < constante >


 subvarvar < variable1 > < variable2 >


 mulvar < variable1 > < constante >


 mulvarvar < variable1 > < variable2 >


 divvar < variable1 > < constante >


 divvarvar < variable1 > < variable2 >


• Los comandos con prefijo " add " son los que sirven para sumar.
• Los comandos con prefijo " sub " sirven para restar.
• Los comandos con prefijo " mul " sirven para multiplicar.
• Los comandos con prefijo " div " sirven para dividir.

El método de uso es igual que con los comandos setvar/setvarvar (esto referido a lo de constante y variables, lo cual ya esta comentado).

Pero en ocasiones nos interesan obtener otro tipo de operaciones. Por ejemplo ¿cómo obtener el resto de una división? ¿Cómo podemos elevar una variable?. Algunos de estos casos ya han sido resueltos con algunos comandos que enriquecen más el lenguaje con.

 sqrt < invar > < outvar >


 modvar < variable1 > < constante >


 modvarvar < variable1 > < variable2 >


El comando " sqrt " ejecuta una raíz cuadrada, siendo < invar > la variable que queremos que haga la raíz cuadrada y < outvar > el resultado de la raíz cuadrada. Los comandos de prefijo " mod " realizan la división de variable1 entre la constante ( o variable1 entre variable2 ) y devuelve el resto de la división en la variable1 (en ambos casos).

Por ultimo en este apartado vamos a tratar el tema de cómo hallar números aleatorios en variables. Exisen dos posibles comandos

 randvar < variable1 > < constante >


 randvarvar < variable1 > < variable2 >


El comando " randvar " se ocupa de crear un numero aleatorio que esta en el intervalo [0,constante] dejando el resultado en la variable1, es decir el numero esta entre los valores " 0 " y " constante ". El comando " randvarvar " a diferencia del anterior lo hace desde " 0 " hasta " variable2 " y lo devuelve en " variable1 ".


Cálculos trigonométrico

Otro de los puntos a la hora de operar con variables consiste en el cálculo trigonométrico. En principio Matt Saettler habilitó el calculo de un seno de un ángulo según la medida en Duke Nukem 3D de los ángulos.

Pequeña noción de ángulos en Duke Nukem


Lo primero que tienes que tener en cuenta a la hora de operar con trigonometría es como funcionan los ángulos en Duke Nukem 3D.

Los ángulos en matemáticas se suelen expresar en grados, aunque en el sistema internacional se utiliza el radián ( 1 radián = 360º ). En Duke Nukem 3D funciona de distinta forma. El valor de los ángulos van de "0" a "2047", siendo "0" la dirección del sprite (recordar como se cambia la dirección del ángulo en build) horizontal y hacia la derecha. Los ángulos se cuentan en la misma dirección que las agujas del reloj. El ángulo "0" / "2048" en Duke Nukem equivale a "0º" / "360º" (ó "0" radianes / "2*pi" radianes). Así mismo el ángulo "90º" equivale a "1536" en Duke Nukem 3D.

La fórmula de conversión ángulos en Duke Nukem 3D a radianes es:

ángulo en Duke Nukem 3D * ( pi / 1024 )


De forma parecida hacemos la conversión inversa (simplemente tenemos que invertir la fracción "pi / 1024" quedando "1024 / pi").

ángulo en radianes * (1024 / pi )


Quedandonos con la ultima fórmula la conversión de angulos en radianes a ángulos de Duke Nukem 3D .

Ahora nos disponemos a tratar los comandos con los que se pueden hacer los cálculos trigonométricos. Después de esta conversión tendras que sumar (o restar) 1024 según el caso ( si el angulo es mayor a 1024 lógicamente tendrás que restarlo, en cambio si es mayor, tendrás que sumarlo.

NOTA : Esta es una aproximación del numero pi, también hay que recordar que el numero pi es un numero irracional.
pi = 3.141592654

Los comandos que Eduke32 acepta son:

 sin < variable1 > < variable2 >


 cos < variable1 > < variable2 >


 getangle < variable1 > < variable2 > < variable3 >


A continuación la descripción de los comandos:

sin devuelve el seno del ángulo especificado en < variable1 > y pone el resultado en < variable2 >
cos devuelve el coseno del ángulo especificado en < variable1 > y pone el resultado en < variable2 >
getangle obtiene el ángulo formado por y que son las componentes " X " ( variable2 ) e " Y " ( variable3 ) de un ángulo. El resultado obtenido se pondrá en variable1.


Cálculos geometricos

 dist < variable1 > < variable2 > < variable3 >


 ldist < variable1 > < variable2 > < variable3 >


 txdist < variable1 > < variable2 > < variable3 >




dist y txdist devuelven una distancia 3D en la variable "variable1" pero la diferencia que hay, es que en txdist influye el miembro de la estrucuta de los sprites "yrepeat" para la obtención del vector z. ldist devuelve la distancia 2D + 1. Las variables "variable2" y "variable3" son las ID's de los sprites correspondientes.

 findnearactor < actor > < distance > < gamevar >


 findnearactor3d < actor > < distance > < gamevar >


Estos dos comandos de findnearactor son prácticamente idénticos. La diferencia es que el primero obtiene una distancia en el plano y el segundo en el espacio. Para usarlos hay que poner una constante en "< actor >" que indique el actor (es el numero de picnum, el numero que usa en los gráficos) y es una constante, la distancia ("< distance >") es otra constante y "< gamevar >" es una variable. Esta ultima variable es el resultado, que devuelve la ID del actor en caso de encontrar el actor "< actor >" a la distancia "< distance >" o menor (imaginaros un circulo de radio "< distance >" como radio de búsqueda). En caso de no encontrar nada el resultado será "-1 ".

Esa ID del actor puede ser usada posteriormente, por ejemplo, para las estructuras que serán explicadas posteriormente.

 findnearactor3dvar < actor > < distance > < gamevar >


 findnearactorvar < actor > < distance > < gamevar >


Estos comandos son idénticos a los anteriores pero con la diferencia de que la distancia aquí es una variable en vez de una constante.

 findplayer < variable1 >


 findotherplayer < variable1 >


Estos comandos sirven para encontrar al jugador. No ha sido explicado pero suponemos que en variable1 es lo que devuelve la función que es la ID del jugador.


Operaciones con bits

 shiftvarl < var1 > < num >


Cambia el valor de < var1 > < num > bits hacia la izquierda. (Operación de bits).

 shiftvarr < gamevar > < number >


Cambia el valor de < var1 > < num > bits hacia la derecha. (Operación de bits).


Sonidos

 soundoncevar < variable1 >


 soundvar < variable1 >


 stopsoundvar < variable1 >


 globalsoundvar < variable1 >


 stopallsounds



Estos comandos son idénticos a los comandos de Duke Nukem de las versiones 1.3d y 1.5 pero cambiando la constante por una variable. El comando stopallsounds detiene todos los sonidos que se estén reproducciendo para el jugador actual.


Otros

 mulscale < variable1 > < variable2 > < variable3 > < variable4 >


El resultado es "variable1" y los datos que hay que introducirle son "variable2", "variable3" y "variable4". No se ha explicado su uso, aunque es un PRAGMA programado por Ken Silverman al que llamo mulscale.

Política de privacidad
© Copyright - 2003 - 2013 Dukespana.com
Todos los derechos reservados.