Operadores
Puedes usar los siguientes operadores en expresiones
+ (suma)
- (resta)
[*] (multiplicación)
/ (división)
% (modulo,resto después de la división)
^ (elevado a la potencia, ej. 5 ^ 2 = 25)
& (construir cadenas, ej. "Tu record es: " & record)
También hay operadores de comparación =, <>, <, <=, >, >= para comparar valores. Estos comparadores devuelven 1 si la comparación es verdadera o 0 si es falsa.
& también sirve para la lógica AND, y | es el operador lógico OR. Estos son muy útiles combinados con los operadores de comparación,
ej. puntos < 0 | salud < 0,
que también devuelven 1 si es verdadero y 0 si es falso.
?: es un operador condicional , que permite probar condiciones en expresiones. Esto es especialmente útil cuando se combina con los operadores de comparación y lógicos.
Toman la forma: condición ? resultado_es_verdadero : devolver_es_falso
ej. salud < 0 | puntos < 0 ? "Game over!" : "Sigue Adelante!".
La condición cuenta como verdadera si es diferente de cero, y como falsa si es cero.
Strings (texto)
En la programación el texto es también conocido como strings (cadenas), y Construct 2 algunas veces también usa esta convención de nombres. En las expresiones el texto debe ser escrito entre comillas dobles, ej. "Hola"
Las dobles comillas no están incluidas como parte del texto, por lo que al setear un objeto para que muestre la expresión "Hola" va a mostrar Hola, sin las dobles comillas. para incluir doble comillas en una cadena, se deben usar dos doble comillas juntas (""),
ej. "El me dijo ""hola"" a mi" va a devolver El me dijo "hola" a mi.
Se puede usar & para construir cadenas mezclando texto y números, ej. "Tu puntaje es: " & puntos
Expresiones matemáticas estándares
La lista completa de expresiones pueda ser encontrada dentro de Construct 2: para ello hay que hacer doble click en el objeto System en el panel de expresiones flotante cuando se esta tipeando una expresión. Sin embargo aquí esta una lista de las expresiones mas comunes.
sin (seno de un angulo en grados)
cos (coseno de un angulo en grados)
tan (tangente de un angulo en grados)
asin (seno inverso, devuelve grados)
acos (coseno inverso, devuelve grados)
atan (tangente inversa, devuelve grados)
sqrt (raíz cuadrada)
abs (valor absoluto)
exp (exponente, e^x)
ln (logaritmo de base e)
log10 (logaritmo de base 10)
Vale la pena recordar que Construct 2 siempre usa grados, nunca radianes. Si se necesita ingresar un ángulo en cualquier parte de Construct 2, va a ser en grados.
Conversión de expresiones
int(x) - convierte x en un entero
float(x) - convierte x en un flotante
str(x) - convierte x a string (cadena)
No hay que olvidar que se puede usar & para construir strings (cadenas),
ej. "Tu puntaje es: " & puntos devuelve "Tu puntaje es: 10" como una cadena si el puntaje es 10.
Otras expresiones
Angle(x1, y1, x2, y2) - Devuelve el angulo. en grados, entre los puntos (x1, y1) y (x2, y2), usando atan2(y2 - y1, x2 - x1).
Ceil(number) - Redondea un nuemero hacia arriba (ej. ceil(6.1) devuelve 7).
Distance(x1, y1, x2, y2) - Devuelve la distancia entre los puntos (x1, y1) y (x2, y2).
dt - Delta-time. Ver Delta-time and framerate independence.
Floor(number) - Redondea un numero hacia abajo (ej. floor(6.7) devuelve 6).
fps - Framerate (Frecuencia de imagen) actual en cuadros por segundo.
len(x) - Devuelve la longitud de la cadena (string) x.
Lerp(a, b, x) - Interpolacion lineal: Calcula a + x(b - a), o interpola linealmente "a" a "b" por x%. Ej. lerp(a, b, 0.25) devuelve el 25% del valor del camino o distancia entre "a" y "b".
LoopIndex - Indice de loop (ciclo) actual (top-level).
LoopIndex("name") - Indice del ciclo (loop) para un nombre de ciclo dado.
ObjectCount - Numero total de instancias de objetos en el juego.
Max(a, b [,c,...]) - Recupera el máximo de los valores dados. Se le puede pasar cualquier número de valores.
Min(a, b [,c,...]) - Recupera el mínimo de los valores dados. Se le puede pasar cualquier número de valores.
Newline - Cadena de texto que contiene un carácter de salto de línea, ej. "Hola" & newline & "Mundo"
Random(N) - Devuelve un número aleatorio entre 0 y N, no incluyendo N. El resultado incluye fracciones, por lo tanto random(3) puede devolver 2.5. Se usa floor(random(N)) para generar un numero entero aleatorio hasta pero no incluyendo N, ej. floor(random(3))* va a retornar 0, 1 or 2. Random(A, B) también puede ser usado para generar un número aleatorio entre A y B.
Round(value) - Redondea el valor a su número entero más próximo, eg. Round(6.8) devuelve 7
Scrollx, Scrolly - Posición de desplazamiento actual
Timescale - La escala de tiempo actual. Ver Delta-time and framerate independence.
Time - Tiempo en segundos desde el inicio del juego.
TickCount - Número de ticks transcurridos desde que comenzó el juego.
No te olvides de revisar el panel de las expresiones de Construct 2 para la lista completa.
Expresiones útiles en otros objetos
Tanto el objeto Mouse como los objetos táctiles (Touch) permiten pasar un parámetro de capa (layer) para las expresiones X e Y. Esto es muy útil si se cambia la escala o se giran las capas.
ej. Mouse.X("Layer 1") devuelve la posición del mouse en X en la capa 1 (Layer 1), tomando en cuenta su parallax, la escala y el ángulo. Si solo se usa Mouse.X, no toma en cuenta su parallax, la escala y el ángulo, por lo que el resultado puede ser incorrecto.
Indexación de objetos en expresiones
Se puede añadir un índice de objeto basado en 0 para obtener expresiones de diferentes instancias de objetos.
e.g. Sprite(0).X obtiene la posición X de la primera instancia de Sprite, y Sprite(1).X obtiene la segunda instancia de la posicion en X. También puede pasar una expresión para el índice. Los números negativos empiezan desde el extremo opuesto, por lo tanto Sprite(-1).X obtiene la posición X del último Sprite.
Esto se puede aplicar a cualquier expresión de objetos, no sólo a Sprites.