◈ CONFIGURACIÓN GLOBAL
PANTALLA <w> <h> [COLORES <n>]Resolución virtual. Default: 256×240.
PALETA retro | modernaPaleta de 16 colores. Default: retro.
AUDIO MODO 4 | 8Canales de audio. Default: 4.
TEMPO <BPM>Velocidad musical. Default: 120.
FPS <n>Fotogramas por segundo de sprites. Default: 60.
' comentarioLa comilla simple inicia un comentario.
◈ VARIABLES Y TIPOS
DECLARAR <nombre> COMO ENTERONúmero entero.
DECLARAR <nombre> COMO FLOTANTENúmero con decimales.
DECLARAR <nombre> COMO TEXTOCadena de caracteres entre comillas dobles.
DECLARAR <nombre> COMO BOOLEANOVERDADERO o FALSO.
DECLARAR <nombre>[<n>] COMO <tipo>Arreglo de n elementos (índice base 1).
<nombre> = <expresión>Asignación. Variables son globales y case-insensitive.
<nombre>[<i>] = <expresión>Asignación a elemento de arreglo.
VERDADERO  /  FALSOLiterales booleanos.
◈ OPERADORES
+  -  *  /Suma, resta, multiplicación, división.
^Potencia. Ejemplo: 2 ^ 8 = 256
\Raíz. Ejemplo: 2 \ 9 = 3
MODResto. 10 MOD 3 = 1
DIVDivisión entera. 10 DIV 3 = 3
=  <>  <  >  <=  >=Comparación. Devuelven VERDADERO/FALSO.
ANDConjunción lógica. Solo en MAYÚSCULAS.
ORDisyunción lógica. Solo en MAYÚSCULAS.
XORDisyunción exclusiva. Solo en MAYÚSCULAS.
NOTNegación lógica. Solo en MAYÚSCULAS.

Precedencia (de menor a mayor):

OPERADORESPRIORIDAD
OR, XORmás baja
AND
NOT (unario)
= <> < > <= >= COLISIONA
+ -
* / MOD DIV
^ \(asocia derecha)
- (negación unaria)más alta

Nota: and or not en minúsculas son identificadores válidos (variables).

◈ CONTROL DE FLUJO
SI <cond> ENTONCES … FIN SICondicional simple.
OTRO SI <cond> ENTONCESEncadenado en SI. Puede repetirse.
SI NOBloque else dentro de SI.
SEGUN <expr> … FIN SEGUNSelección múltiple.
CASO <valor>Rama de SEGUN.
CASO OTRORama por defecto de SEGUN.
MIENTRAS <cond> … FIN MIENTRASCiclo con condición al inicio.
REPETIR … HASTA <cond>Ciclo con condición al final. Ejecuta al menos una vez.
REPETIR … MIENTRAS <cond>Ciclo con condición al final.
REPETIR HASTA <cond> … FIN REPETIRCiclo con condición al inicio.
PARA <i> DE <a> A <b> [ENPASOSDE <n>]Ciclo contado. Paso opcional, default 1.
FIN PARACierra PARA.
ESCAPARRompe el ciclo actual.
ESPERAR <ms>Pausa en milisegundos. Cede al game loop.
PAUSARSuspende hasta REANUDAR o START.
REANUDARReanuda si estaba pausado.
FINALIZARTermina el programa.
DEFINIR <nombre> … FIN DEFINIRDefine subprograma. Opera sobre variables globales.
HACER <nombre>Invoca subprograma.
IMPRIMIR <expr> [<expr2> …]Escribe en consola del Player. Para debugging.
◈ COLOR Y DIBUJO
COLOR <color>Color de trazo y relleno.
COLOR TRAZO <c> RELLENO <c>Trazo y relleno distintos en una instrucción.
COLOR FONDO <color>Color de fondo de la pantalla.
TRAZO <px>Grosor del trazo en píxeles.
HSL(<h>, <s>, <l>)Color por matiz (0-360), saturación (0-100), luminosidad (0-100).
LIMPIARRellena con COLOR FONDO.
PUNTO <x> <y>Punto de 1×1 px.
LINEA <x1> <y1> … [CERRAR] [RELLENO]Líneas contiguas. CERRAR cierra la figura.
CIRCULO <x> <y> <r> [RELLENO]Círculo con centro y radio.
RECTANGULO <x> <y> <ancho> <alto> [RELLENO]Rectángulo. Orden: ancho antes que alto.
TRIANGULO <x1> <y1> <x2> <y2> <x3> <y3> [RELLENO]Triángulo por tres vértices.
TRIANGULO EQUILATERO <x> <y> <lado> [RELLENO]Triángulo equilátero.
TRIANGULO ISOSCELES <x> <y> <lado> <ángulo> [RELLENO]Con ángulo de apertura.
TRIANGULO ESCALENO <x> <y> <l1> <l2> <ángulo> [RELLENO]Dos lados y ángulo entre ellos.
POLIGONO <x> <y> <r> <lados> [RELLENO]Polígono regular con centro, radio y número de lados.
RELLENAR <x> <y>Flood fill desde el punto dado.
TEXTO <x> <y> <texto> [SOMBREADO]Dibuja texto. SOMBREADO pinta fondo con COLOR RELLENO.
TEXTO_MD <x> <y> <ancho> <texto> [<alto>]Texto con markdown extendido. alto limita altura de render.
ALTURA_MD(<ancho>, <texto>)Calcula la altura que ocuparía el texto (sin dibujar).

Colores retro: black · white · red · lime · blue · yellow · cyan · magenta · silver · gray · maroon · olive · green · purple · teal · navy

Colores modernos: negro · blanco · rojo · verde · azul · amarillo · cian · magenta · gris · naranja · violeta · marrón · rosa · lima · celeste · dorado

◈ MARKDOWN EXTENDIDO (en TEXTO_MD)
# texto #Blanco brillante (título inline heredado).
*texto*Rojo (alerta/peligro).
_texto_Verde (objetos/ítems).
**texto**Negrita.
//texto//Cursiva.
__texto__Subrayado.
~~texto~~Tachado.
^texto^Superíndice.
~texto~Subíndice.
[c=color]texto[/c]Color por nombre o hex.
# TítuloEncabezado h1 (centrado, blanco grande).
---Línea horizontal divisoria.
◈ SPRITES Y ANIMACIONES
CREAR SPRITE <nombre> [<imagen>]Define un tipo de sprite. Sin imagen: acepta animaciones.
MOSTRAR <sprite> <inst> [EN <x> <y>]Muestra o crea una instancia en las coordenadas.
OCULTAR <sprite> [<inst>]Oculta una o todas las instancias.
BORRAR <sprite>Destruye el sprite y todas sus instancias.
MOVER [HITBOX] <sprite> <inst> A <x> <y>Mueve la instancia. HITBOX: solo caja de colisión.
ROTAR [HITBOX] <sprite> <inst> A <grados>Rota la instancia.
ESCALAR [HITBOX] <sprite> <inst> A <factor>Escala la instancia.
VOLTEAR <sprite> <inst> HORIZONTAL | VERTICALEspeja la instancia.
CREAR ANIMACION <nom> DE <sprite> CON <imgs…>Define una animación con sus fotogramas.
REPRODUCIR <anim> DE <sprite> <inst> [BUCLE] [POR <n>]Reproduce la animación.
PAUSAR <anim> DE <sprite> <inst>Pausa en el fotograma actual.
DETENER <anim> DE <sprite> <inst>Detiene y vuelve al fotograma 1.
◈ AUDIO

Archivos externos:

CREAR SONIDO <nombre> <archivo>Define un efecto de sonido (SFX).
CREAR MUSICA <nombre> <archivo>Define música de fondo (BGM).
REPRODUCIR <n> [BUCLE] [VOLUMEN <v>] [PANEO <p>]Reproduce SFX o BGM.
DETENER <n> [FADE <ms>]Detiene con fundido opcional.
VOLUMEN <n> <0-100>silencio=0 bajo=25 medio=50 alto=75 maximo=100
PANEO <n> <-50 a 50>izquierda=-50 centro=0 derecha=50

Síntesis por pistas:

CREAR PISTA <nombre>Inicia definición de pista.
NOTA <nota>:<figura>Do4:ne Re#3:co Lab5:bl …
TONO <hz>:<figura>440:ne 880:co …
SILENCIO <figura>Pausa musical.
DINAMICA pp | p | mp | mf | f | ffVolumen relativo de las notas.
FIN PISTACierra la definición.
REPRODUCIR <pista> [EN CANAL <n>] [BUCLE]Reproduce la pista en síntesis.

Figuras: cu (cuadrada) · re (redonda) · bl (blanca) · ne (negra) · co (corchea) · sc (semicorchea) · fu (fusa) · sf (semifusa) · punto = ×1.5

◈ CAPAS Y SCROLL
FONDO <capa> <imagen> <factor>Capa 0-2: parallax. Capa 3: principal. Capa 4: frontal. Capa 5: HUD.
SCROLL <dirección> <velocidad>izquierda · derecha · arriba · abajo.
RUTA <nombre> DESDE <x> <y> EN <figura>Scroll por ruta geométrica compleja.
◈ MOTOR DE TILES
CREAR TILESET <nombre> <archivo> <tw> <th>Divide la imagen en celdas tw×th px. IDs base 1.
CREAR TILEMAP <nombre> <cols> <filas> [EN CAPA <n>]Grilla en la capa indicada. Default: capa 3.
PONER TILE <tilemap> <col> <fila> <id> [RIGIDO]Coloca tile. RIGIDO activa hitbox automática.
BORRAR TILE <tilemap> <col> <fila>Elimina el tile de esa celda.
MOSTRAR TILEMAP <nombre>Hace visible el tilemap.
OCULTAR TILEMAP <nombre>Oculta sin destruir.
BORRAR TILEMAP <nombre>Destruye y libera recursos.
COLISIONA_TILE(<sprite> <inst>)VERDADERO si el sprite colisiona con un tile RIGIDO.
◈ FÍSICA
FISICA GRAVEDAD <valor>Aceleración gravitacional en px/s². Default: 500.
FISICA SPRITE <sprite> <inst> ACTIVA | INACTIVAActiva o desactiva física sobre la instancia.
VELOCIDAD <sprite> <inst> A <vx> <vy>Velocidad en px/s. Negativos: usar paréntesis.
IMPULSO <sprite> <inst> A <fx> <fy>Impulso instantáneo. Útil para saltos.
EN_SUELO(<sprite> <inst>)VERDADERO si está apoyado sobre tile rígido.
VEL_X(<sprite> <inst>)Velocidad horizontal actual en px/s.
VEL_Y(<sprite> <inst>)Velocidad vertical actual en px/s.

Nota: Velocidades negativas requieren paréntesis: VELOCIDAD p 1 A 100 (-200)

◈ ARCHIVOS Y DATOS
ABRIR <ruta> COMO <nombre> LECTURA | ESCRITURA | ANEXARAbre archivo. LECTURA: fetch del servidor. ESCRITURA: localStorage.
LEER <archivo> <variable>Lee la siguiente línea en la variable.
ESCRIBIR <archivo> <texto>Escribe una línea.
CERRAR <archivo>Cierra y persiste.
FIN_ARCHIVO(<archivo>)VERDADERO si no hay más líneas por leer.
CARGAR DATOS <ruta> COMO <nombre>Carga y parsea un archivo .qdat.
LEER_DATO(<datos> <sección> <clave>)Retorna el valor de la clave en la sección.
◈ DETECCIÓN DE EVENTOS
TECLADO(<tecla>)VERDADERO mientras la tecla está presionada.
TECLADO(<tecla1> + <tecla2>)Combinación simultánea AND.
<spriteA> COLISIONA <spriteB>VERDADERO si las hitboxes se solapan. Infijo.
COLISIONA(<sprite>)VERDADERO si colisiona con cualquier otro sprite.
BOTON_MOUSE(<acción>)"click izquierdo" · "mantiene derecho" · "suelta central"…
RUEDA_MOUSE(arriba | abajo)Giro de rueda de mouse.
MOUSE_ENCIMA(<sprite>)VERDADERO si el cursor está sobre el sprite.
POSICION_MOUSE(x | y)Coordenada del cursor en espacio virtual.

Teclas especiales: FLECHA_ARRIBA · FLECHA_ABAJO · FLECHA_IZQUIERDA · FLECHA_DERECHA · BARRA_ESPACIADORA · TECLA_ESCAPE · TECLA_ENTER · TECLA_TAB · BLOQ_MAYUS · SHIFT_IZQUIERDO · CTRL_IZQUIERDO · ALT_IZQUIERDO · TECLA_F1…F12 · TECLA_INICIO · TECLA_FIN · BACKSPACE · TECLA_INSERTAR · TECLA_SUPRIMIR · NUM_0…NUM_9

Letras y números: TECLADO("W") · TECLADO("5") — usar el carácter entre comillas, no TECLA_W.

◈ FUNCIONES INTEGRADAS

Matemáticas:

ABS(<n>)Valor absoluto.
RAIZ(<n>)Raíz cuadrada.
POTENCIA(<b>, <e>)Potencia.
SEN(<ángulo>)Seno (en grados).
COS(<ángulo>)Coseno (en grados).
TAN(<ángulo>)Tangente (en grados).
LOG(<n>)Logaritmo natural.
LOG10(<n>)  /  LOG2(<n>)Logaritmos base 10 y base 2.
RND()Número aleatorio entre 0 y 1.
TRUNCAR(<n>)Elimina decimales sin redondear.
REDONDEAR(<n>)Redondea al entero más cercano.

Texto y conversión:

TEXTO(<número>)Convierte número a texto.
NUMERO(<texto>)Convierte texto a número.
LARGO(<texto>)Cantidad de caracteres.
RECORTAR(<texto>)Elimina espacios al inicio y final.
MAYUSCULA(<texto>)  /  MINUSCULA(<texto>)Conversión de case.
BUSCAR(<texto>, <aguja> [, <desde>])Posición base-1 de la primera ocurrencia.
EXTRAER(<texto>, <desde> [, <largo>])Subcadena base-1.
CORTAR_IZQ(<texto>, <n>)Primeros n caracteres.
CORTAR_DER(<texto>, <n>)Últimos n caracteres.
REEMPLAZAR(<texto>, <viejo>, <nuevo>)Reemplaza todas las ocurrencias.
REPETIR(<texto>, <n>)Repite el texto n veces.
CARACTER(<n>)Carácter por código Unicode (como CHR$).
CODIGO(<texto>)Código Unicode del primer carácter (como ASC).