- Matemáticos
- Manejo de strings
- Control del IAVC (Integrated Audio and Video Controller)
-
arrayPoke(addr, data, offset, count)clear()isButtonDown(buttons, mask)memCardLoad()memCardSave(data)note(nt)peek(addr)poke(addr, b)pokew(addr, w)putAt(tileIndex, x, y)putSpriteAt(spriteIndex, x, y)readCtrlOne()readCtrlTwo()setBackground(red, green, blue)setForeground(red, green, blue)setLargeSpriteImage(spriteIndex, imageIndex)setLargeSpritePixels(imageIndex, pixels)setScreenOffset(x, y)setSmallSpriteImage(spriteIndex, imageIndex)setSmallSpritePixels(imageIndex, pixels)setSmoothScroll(x, y)setSoundAttack(channel, time)setSoundDecay(channel, time)setSoundFrequency(channel, frequency)setSoundRelease(channel, time)setSoundSustain(channel, sustain)setSoundVolume(channel, volume)setSoundWave(channel, waveform)setSpriteColor(index, red, green, blue)setTileColor(index, red, green, blue)setTilePixels(index, pixels)showAt(msg, x, y)soundOff(channel)soundOn(channel)
- Archivos
- Arreglos
- Ambientes
- Tipos
- Estructuras de datos
- Con procedimientos como argumentos
- Otros
Aquí hay una breve descripción de cada uno de los
procedimientos predefinidos. Para cada uno de ellos se explica qué
hace, qué argumentos espera y, en caso de ser una función,
qué resultado devuelve. En el caso de procedimientos que esperen como
argumento un número entero es posible pasarles un flotante y el
procedimiento automáticamente toma únicamente la parte entera
de ese número. Para los procedimientos en donde se espera como
argumento un número flotante y se le pasa un entero el procedimiento
simplemente lo interpreta como el valor flotante correspondiente. En
cualquier otro caso es un error pasar un argumento de un tipo que no
corresponde al esperado por el procedimiento.
Los procedimientos matemáticos proporcionan las funciones
matemáticas básicas y la generación de números
aleatorios.
Función que devuelve el arco coseno de un ángulo, en
radianes, en el rango de 0.0 a PI.
Argumentos:
-
a- flotante: El valor del cual se quiere
obtener el arco coseno.
Devuelve:
| Un flotante con arco coseno del argumento. |
Función que devuelve el arco seno de un ángulo, en
radianes, en el rango de -PI/2 a PI/2.
Argumentos:
-
a- flotante: El valor del cual se quiere
obtener el arco seno.
Devuelve:
| Un flotante con el arco seno del argumento. |
Función que devuelve el arco tangente de un ángulo,
en radianes, en el rango de -PI/2 a PI/2.
Argumentos:
-
a- flotante: El valor del cual se quiere
obtener al arco tangente.
Devuelve:
| Un flotante con el arco tangente del argumento. |
Función que convierte de coordenadas rectangulares (x, y) a
polares (r, theta). Esta función calcula el ángulo theta
evaluando el arco tangente de y/x, en radianes, en el rango de -PI a
PI.
Argumentos:
-
y- flotante: Ordenada de las
coordenadas. -
x- flotante: Abscisa de las
coordenadas.
Devuelve:
| Un flotante con el componente theta del punto (r, theta) en coordenadas polares que corresponde al punto (x, y) en coordenadas polares. |
Función que devuelve el flotante más pequeño
(más cercano al infinito negativo) que no es menor que el
argumento y es igual a un entero matemático.
Argumentos:
-
a- flotante: Un valor.
Devuelve:
| El más pequeño flotante (más cercano al infinito negativo) que no es menor que el valor y es igual a un entero matemático. |
Función que devuelve el coseno de un ángulo.
Argumentos:
-
a- flotante: El ángulo en
radianes.
Devuelve:
| Un flotante con el coseno del ángulo. |
Función que devuelve e (el
número de Euler) elevado a una potencia.
Argumentos:
-
a- flotante: El exponente al que hay que
elevar e.
Devuelve:
| Un flotante con el valor de ea, donde e es la base de los logaritmos naturales. |
Función que devuelve el flotante más grande
(más cercano al infinito positivo) que no es mayor que el
argumento y es igual a un entero matemático.
Argumentos:
-
a- flotante: Un valor.
Devuelve:
| El más grande flotante (más cercano al infinito positivo) que no es mayor que el argumento y es igual a un entero matemático. |
Función que devuelve un número aleatorio con
distribución uniforme entre 0.0 y 1.0.
Devuelve:
| Un flotante aleatorio entre 0.0 y 1.0. |
Función que devuelve el logaritmo (base
e) de un valor.
Argumentos:
-
a- flotante: Un número mayor que
0.0.
Devuelve:
Un flotante con el logaritmo natural dea. |
Función que devuelve el valor del primer argumento elevado
a la potencia del segundo argumento.
Argumentos:
-
a- flotante: La base. -
b- flotante: El exponente.
Devuelve:
| Un flotante con el valor ab. |
Función que devuelve un número entero aleatorio, con
distribución uniforme, entre 0 y n-1.
Argumentos:
-
n- entero: Un número entero mayor
que 0.
Devuelve:
| Un entero aleatorio, con distribución uniforme, entre 0 y n-1. |
Función que devuelve el entero más cercano al
argumento. Se calcula sumándole 1/2 al argumento y obteniendo el
piso (floor) del resultado.
Argumentos:
-
a- flotante: El valor a
redondear.
Devuelve:
| El flotante con el valor del argumento redondeado al entero más cercano. |
Función que devuelve el seno de un ángulo.
Argumentos:
-
a- flotante: El ángulo en
radianes.
Devuelve:
| Un flotante con el seno del ángulo. |
Función que devuelve la raíz cuadrada positiva de un
valor.
Argumentos:
-
a- flotante: Un valor positivo.
Devuelve:
| Un flotante con la raíz cuadrada positiva del valor. |
Procedimientos y funciones para manipular strings.
Función que traduce la representación de un
número como un string en un valor flotante. Es un error si el
string no contiene la representación de un número
flotante.
Argumentos:
-
s- string: El string que representa un
número flotante.
Devuelve:
| El número flotante representado por el string. |
Función que traduce la representación de un
número como un string en un valor entero. Es un error si el
string no contiene la representación de un número
entero.
Argumentos:
-
s- string: El string que representa un
número entero.
Devuelve:
| El número entero representado por el string. |
Función que concatena un caracter unicode al final de un
string.
Argumentos:
-
s- string: Un string. -
n- entero: El valor Unicode del
caracter.
Devuelve:
| Un nuevo string que corresponde al string pasado como primer argumento con el caracter Unicode que corresponde al segundo argumento concatenado al final. |
Función que devuelve el código Unicode del caracter
que se encuentra en una posición de un string.
Argumentos:
-
s- string: El string del cual se desea
extraer un caracter. -
n- entero: La posición del
caracter dentro del string. Si el string es de longitud L entonces
debe ser un número entre 0 y L-1.
Devuelve:
| Un entero con el código Unicode del caracter en esa posición del string. |
El IAVC es el chip (simulado en software) que se encarga de manejar
el audio, video, controles y tarjeta de memoria en
simpleJ™. Estos son los procedimientos que
permiten controlar el IAVC.
Los programas controlan el IAVC por medio de 32768 direcciones de
memoria de 8 bits (un byte) cada una. Algunas de estas direcciones
corresponden a las memorias en donde el IAVC almacena la imágenes
de los tiles, los sprites, los tiles de la pantalla y las formas de onda
para los canales de audio. Las otras direcciones son para accesar los
registros de control del IAVC. Los procedimientos
poke, pokew,
arrayPoke y la función
peek son los que permiten accesar directamente
estas direcciones de memoria. Los demás procedimientos y funciones
ofrecen una manera más sencilla de manipular el IAVC, sin que sea
necesario conocer todos los detalles de estas direcciones de
memoria.
Procedimiento que copia información de un arreglo de
enteros a grupo de direcciones consecutivas de memoria del IAVC.
Argumentos:
-
addr- entero: La dirección
inicial de memoria a donde se deben copiar los datos. -
data- arreglo de enteros: De donde se
deben copiar los datos. Debe contener números entre 0 y
255, para números fuera de este rango únicamente se
toma el byte menos significativo y se descarta el resto. -
offset- entero: El subíndice del
arreglo donde se encuentra el primer dato que se debe copiar al
IAVC. -
count- entero: Cuántos elementos
del arreglo se deben copiar al IAVC.
Procedimiento que borra la pantalla. En realidad rellena los 24
renglones de 32 tiles cada uno que se encuentran en la parte superior
izquierda del área de memoria de video del IAVC con el tile
número 32 (cuya imagen, si no se ha redefinido, es un espacio en
blanco). Para mayor información, ver la documentación del
procedimiento setScreenOffset.
Función que permite detectar si un botón se
encuentra presionado aún cuando el jugador presione varios
botones del control simultáneamente.
Ejemplo de uso:
final BOTON_ARRIBA 1
var botones = readCtrlOne();
if (isButtonDown(botones, BOTON_ARRIBA)) {
Argumentos:
-
buttons- entero: Un número con un
bit prendido por cada botón que se encuentre apoyado en el
control. Típicamente es el resultado de llamar la
funciónreadCtrlOneo la
funciónreadCtrlTwo. -
mask- entero: La máscara que
indica cuáles botones se desean checar.
Devuelve:
true si el botón (o alguno delos botones) indicado se encuentra presionado, de lo contrario devuelve false. |
Función que devuelve los 512 bytes almacenados en la
tarjeta de memoria para este programa.
Devuelve:
| Un arreglo de 512 enteros. Cada uno de estos enteros está dentro del rango de 0 a 255. Si no hay información almacenada para este programa en la tarjeta de memoria entonces devuelve un arreglo con puros ceros. |
Procedimiento que almacena datos en el área de la tarjeta
de memoria asignada a este programa.
Argumentos:
-
data- arreglo de enteros: Un
arreglo con 512 enteros. Debe contener números entre 0 y
255, para números fuera de este rango únicamente se
toma el byte menos significativo y se descarta el resto.
Procedimiento que genera un sonido correspondiente a una nota de
música. Emplea el canal cero de audio para generar este sonido.
Se puede modificar el timbre de este sonido empleando los procedimientos
setSoundAttack,
setSoundDecay. Se puede modificar su volumen
con el procedimiento setSoundVolume.
También es posible emplear los procedimientos
setSoundSustain y
setSoundRelease para modificar su timbre, pero
en este caso es necesario emplear el procedimiento
soundOff para terminar la generación de
la nota.
Argumentos:
-
note- string: La nota de música
que se debe generar.El string debe contener una letra (mayúscula) y un
número. La letra le indica cuál es la nota y el
número le indica cuál es la octava. Entre más
pequeño sea el número, más baja es la octava
(sonido más grave); entre más grande, más
alta es la octava (sonido más agudo). La octava debe ser un
número entero entre 1 y 6. La siguiente tabla indica la
correspondencia entre las letras y las notas musicales:Se puede emplear un "
#" o
una "b" entre la letra de la nota
y el número de la octava para indicar
sostenido o bemol
respectivamente. Es decir que
"C#4" representa un do
sostenido y "Eb4" es
un mi bemol.La nota más grave es la
"A1" y la más aguda es la
"G#6".
Función para leer una de las direcciones de memoria del
IAVC.
Argumentos:
-
addr - entero: La dirección de memoria que se debe
accesar, es un número entre 0 y 32767. Si se encuentra
fuera de este rango, entonces únicamente se emplean los 15
bits menos significativos y se descarta el resto.
Devuelve:
| Un número entero entre 0 y 255 que corresponde al dato devuelvedo por el IAVC al accesar esa dirección de memoria. |
Procedimiento que almacena un byte (8 bits) en una de las
direcciones de memoria del IAVC.
Argumentos:
-
addr- entero: La dirección de
memoria en la cual se debe almacenar el byte, es un número
entre 0 y 32767. Si se encuentra fuera de este rango, entonces
únicamente se emplean los 15 bits menos significativos y se
descarta el resto. -
b- entero: Un número entre 0 y
255 que se debe almacenar en la dirección de memoria del
IAVC indicada poraddr.
Procedimiento que almacena un valor de 2 bytes (16 bits) en dos
direcciones consecutivas de la memoria del IAVC.
Argumentos:
-
addr- entero: La dirección de
memoria en la cual se debe almacenar el byte más
significativo dew, el byte menos significativo
se almacena en la dirección siguiente (addr +), es un número entre 0 y 32767. Si se encuentra
1
fuera de este rango, entonces únicamente se emplean los 15
bits menos significativos y se descarta el resto. -
w- entero: Un número entre 0 y
65535. Dos bytes que se deben almacenar en las direcciones de
memoria del IAVCaddryaddr + 1.
Procedimiento que coloca un tile en el área de memoria de
video del IAVC. Esta área de memoria está organizada en 32
renglones de 64 tiles cada uno, de los cuales únicamente es
visible en la pantalla un área de 24 renglones de 32 tiles cada
uno. Los parámetros x y y de este procedimiento son
independientes del área que esté visible en ese momento en
la pantalla. Para mayor información, ver la documentación
del procedimiento setScreenOffset.
Argumentos:
-
tileIndex- entero: El tile que se debe
colocar. Es un número entre 0 y 255. -
x- entero: La posición horizontal
del tile. Es un número entre 0 y 63. -
y- entero: La posición vertical
del tile. Es un número entre 0 y 31.
Procedimiento que mueve la posición de un sprite en la
pantalla de manera que su esquina superior izquierda quede en la
posición (x, y).
Argumentos:
-
spriteIndex- entero: El sprite que se
debe mover, es un número entre 0 y 31. -
x- entero: La coordenada horizontal, en
pixeles, donde debe quedar la esquina superior izquierda del
sprite. Es un número entre -16 y 256. -
y- entero: La coordenada vertical, en
pixeles, donde debe quedar la esquina superior derecha del sprite.
Es un número entre -16 y 192.
Función que devuelve un entero entre 0 y 255 indicando los
botones que están presionados en ese instante en el control
número uno.
A cada bit (botón apoyado) corresponde un valor que es una
potencia de dos. Si dos o más botones están apoyados,
entonces el valor es la suma de los valores que corresponden a cada
botón.
Table 2. Números para cada botón
| Valor | Botón |
|---|---|
| 1 | flecha arriba |
| 2 | flecha abajo |
| 4 | flecha izquierda |
| 8 | flecha derecha |
| 16 | enter (o return) |
| 32 | control |
| 64 | barra espaciadora |
| 128 | P |
Devuelve:
| Un entero entre 0 y 255. Este entero corresponde a un byte en donde cada uno de sus ocho bits está prendido si el botón correspondiente está presionado en ese instante. |
Función que devuelve un entero entre 0 y 255 indicando los
botones que están presionados en ese instante en el control
número dos.
A cada bit (botón apoyado) corresponde un valor que es una
potencia de dos. Si dos o más botones están apoyados,
entonces el valor es la suma de los valores que corresponden a cada
botón.
Devuelve:
| Un entero entre 0 y 255. Este entero corresponde a un byte en donde cada uno de sus ocho bits está prendido si el botón correspondiente está presionado en ese instante. |
Procedimiento para cambiar el color del fondo. En realidad cambia
el registro de color número cero para los tiles y, por lo tanto,
es equivalente a setTileColor(0, red, green, blue). Para
mayor información, ver la documentación del procedimiento
setTileColor.
Argumentos:
-
red- entero: El componente rojo del
color. Es un número entre 0 y 31. -
green- entero: El componente verde del
color. Es un número entre 0 y 31. -
blue- entero: El componente azul del
color. Es un número entre 0 y 31.
Procedimiento para cambiar el color de las letras. En realidad
cambiar el registro de color número uno para los tiles y, por lo
tanto, es equivalente a setTileColor(1, red, green, blue).
Para mayor información, ver la documentación del
procedimiento setTileColor.
Argumentos:
-
red- entero: El componente rojo del
color. Es un número entre 0 y 31. -
green- entero: El componente verde del
color. Es un número entre 0 y 31. -
blue- entero: El componente azul del
color. Es un número entre 0 y 31.
Procedimiento que asigna una de las 128 imágenes grandes
(de 16 por 16 pixeles) a un sprite.
Argumentos:
-
spriteIndex- entero: Número entre
0 y 31 para indicar a cuál sprite se le debe asignar la
imagen. -
imageIndex- entero: Número entre
0 y 127 para indicar cuál de las 128 imágenes
grandes se le debe asignar al sprite.
Procedimiento para modificar los pixeles de una imagen grande (16
por 16 pixeles) de sprite en la memoria del IAVC.
Argumentos:
-
imageIndex- entero: Número entre
0 y 127 para indicar a cuál de las 128 imágenes
grandes se le deben redefinir sus pixeles. -
pixels- arreglo de enteros: Arreglo con
256 enteros, cada uno debe ser un valor entre 0 y 15. Los valores
entre 0 y 14 se emplean para seleccionar el registro de color a
emplear para ese pixel. Un 15 indica un pixel transparente. Cada
grupo consecutivo de 16 valores corresponde a un renglón de
pixeles de la imagen, empezando por el renglón
superior.
Procedimiento para indicar el área de la memoria de video
que se debe mostrar en la pantalla. La memoria de video está
organizada en 32 renglones de 64 tiles cada uno, en la pantalla se
muestra una ventana que cubre sólo una parte de la memoria de
video. Esta área es de 24 renglones de 32 tiles cada uno. Con
este procedimiento se puede mover esta ventana para ir mostrando
diferentes partes de la memoria de video, un uso posible es para ir
moviendo el fondo cuando el personaje recorre un mundo más grande
que la pantalla.
Al emplear este procedimiento la imagen del fondo se puede
desplazar únicamente en incrementos de 8 pixeles. Para lograr
movimientos más continuos (de 1 en 1 pixel) es necesario combinar
este procedimiento con el procedimiento
setSmoothScroll.
Argumentos:
-
x- entero: Un número entre 0 y
32. Indica cuánto hay que desplazar horizontalmente la
ventana sobre el área de video. La unidad de desplazamiento
es un tile. -
y- entero: Un número entre 0 y 8.
Indica cuánto hay que desplazar verticalmente la ventana
sobre el área de video. La unidad de desplazamiento es un
tile.
Procedimiento que asigna una de las 128 imágenes
pequeñas (de 8 por 8 pixeles) a un sprite.
Argumentos:
-
spriteIndex- entero: Número entre
0 y 31 para indicar a cuál sprite se le debe asignar la
imagen. -
imageIndex- entero: Número entre
0 y 127 para indicar cuál de las 128 imágenes
pequeñas se le debe asignar al sprite.
Procedimiento para modificar los pixeles de una imagen
pequeña (8 por 8 pixeles) de sprite en la memoria del
IAVC.
Argumentos:
-
imageIndex- entero: Número entre
0 y 127 para indicar a cuál de las 128 imágenes
pequeñas se le deben redefinir sus pixeles. -
pixels- arreglo de enteros: Arreglo con
64 enteros, cada uno debe ser un valor entre 0 y 15. Los valores
entre 0 y 14 se emplean para seleccionar el registro de color a
emplear para ese pixel. Un 15 indica un pixel transparente. Cada
grupo consecutivo de 8 valores corresponde a un renglón de
pixeles de la imagen, empezando por el renglón
superior.
Procedimiento para desplazar la ventana sobre el área de
video en incrementos de un solo pixel. únicamente puede emplearse
para hacer desplazamientos hasta de 16 pixeles. Para lograr
desplazamientos más grandes hay que combinarlo con el
procedimiento setScreenOffset.
Argumentos:
-
x- entero: Un número entre 0 y
15. Indica cuánto hay que desplazar horizontalmente la
ventana sobre el área de video. La unidad de desplazamiento
es un pixel. -
y- entero: Un número entre 0 y 15.
Indica cuánto hay que desplazar verticalmente la ventana
sobre el área de video. La unidad de desplazamiento es un
pixel.
Procedimiento para fijar el tiempo de attack en un canal de audio.
El tiempo de attack es el tiempo que toma un sonido desde que se empieza
a generar hasta que llega a su volumen máximo.
Argumentos:
-
channel- entero: El canal de audio. Un
número entre 0 y 3. -
time- entero: El tiempo de attack en
milisegundos. Un número entre 0 y 65535.
Procedimiento para fijar el tiempo de decay en un canal de audio.
El tiempo de decay es el tiempo que toma un sonido desde que llega a su
volumen máximo hasta que baja a su volumen de sustain.
Argumentos:
-
channel- entero: El canal de audio. Un
número entre 0 y 3. -
time- entero: El tiempo de decay en
milisegundos. Un número entre 0 y 65535.
Procedimiento para fijar la frecuencia de un canal de
audio.
Argumentos:
-
channel- entero: El canal de audio. Un
número entre 0 y 3. -
frequency- entero: La frecuencia. Un
número entre 0 y 65535. Este número no está
en Hertz; para pasar de Hertz al valor que hay que pasar como
parámetro, hay que multiplicar la frecuencia en Hertz por
23.77723356 y redondear el resultado.
Procedimiento para fijar el tiempo de release de un canal de
audio. El tiempo de release es el tiempo que toma un sonido desde que se
ordena detener la generación del sonido por medio del
procedimiento soundOff hasta que su volumen
llega a cero.
Argumentos:
-
channel- entero: El canal de audio. Un
número entre 0 y 3. -
time- entero: El tiempo de release en
milisegundos. Un número entre 0 y 65535.
Procedimiento para fijar el volumen de sustain de un canal de
audio como un porcentaje de su volumen máximo.
Argumentos:
-
channel- entero: El canal de audio. Un
número entre 0 y 3. -
sustain- entero: El volumen de sustain
como un porcentaje del volumen máximo. Un número
entre 0 y 3 con el siguiente significado:0: 0% del volumen
máximo1: 33% del volumen
máximo2: 67% del volumen
máximo3: 100% del volumen
máximo
Procedimiento para fijar el volumen máximo de un canal de
audio.
Argumentos:
-
channel- entero: El canal de audio. Un
número entre 0 y 3. -
volume- entero: El volumen
máximo. Un número entre 0 y 15.
Procedimiento para redefinir la forma de onda para un canal de
audio. Al iniciar la ejecución de un programa, los cuatro canales
de audio tienen una onda cuadrada.
Argumentos:
-
channel- entero: El canal de audio. Un
número entre 0 y 3. -
waveform- arreglo de enteros: Un arreglo
de 256 enteros con valores -128 y 127.
Procedimiento para almacenar los componentes rojo, verde y azul en
uno de los 15 registros de color para sprites.
Argumentos:
-
index- entero: El registro de color. Es
un número entre 0 y 14. -
red- entero: El componente rojo del
color. Es un número entre 0 y 31. -
green- entero: El componente verde del
color. Es un número entre 0 y 31. -
blue- entero: El componente azul del
color. Es un número entre 0 y 31.
Procedimiento para almacenar los componentes rojo, verde y azul en
uno de los 16 registros de color para tiles.
Argumentos:
-
index- entero: El registro de color. Un
número entre 0 y 15. -
red- entero: El componente rojo del
color. Es un número entre 0 y 31. -
green- entero: El componente verde del
color. Es un número entre 0 y 31. -
blue- entero: El componente azul del
color. Es un número entre 0 y 31.
Procedimiento para modificar los pixeles de una imagen de tile en
la memoria del IAVC.
Argumentos:
-
imageIndex- entero: Número entre
0 y 255 para indicar a cuál de las 256 imágenes se
le deben redefinir sus pixeles. -
pixels- arreglo de enteros: Arreglo con
64 enteros, cada uno debe ser un valor entre 0 y 15. Estos valores
se emplean para seleccionar el registro de color a emplear para
ese pixel. Cada grupo consecutivo de 8 valores corresponde a un
renglón de pixeles de la imagen, empezando por el
renglón superior.
Procedimiento que coloca una secuencia de tiles en el área
de memoria de video del IAVC para desplegar un mensaje. Esta área
de memoria está organizada en 32 renglones de 64 tiles cada uno,
de los cuales únicamente es visible en la pantalla un área
de 24 renglones de 32 tiles cada uno. Los parámetros x y y de
este procedimiento son independientes del área que esté
visible en ese momento en la pantalla. Para mayor información ver
la documentación del procedimiento
setScreenOffset.
Argumentos:
-
msg- número o string: El mensaje
a desplegar -
x- entero: La posición horizontal
donde debe desplegarse el mensaje. Es un número entre 0 y
63. -
y- entero: La posición vertical
del tile. Es un número entre 0 y 31.
Procedimiento para terminar la generación de un sonido en
uno de los canales de audio. Al ejecutarlo se inicia el release.
Argumentos:
-
channel- entero: El canal de audio. Un
número entre 0 y 3.
Estos procedimientos permiten leer archivos de datos. También
hay aquí procedimientos para ejecutar instrucciones contenidas en
un archivo.
Función para leer los datos de un archivo.
Argumentos:
-
filename- string: El nombre del
archivo.
Devuelve:
| Un arreglo de enteros. La longitud del arreglo es igual al tamaño del archivo. Cada elemento del arreglo contiene un valor entre 0 y 255 que representa el byte correspondiente dentro del archivo. |
Función para leer los datos de un archivo creado con el
simpleJ sprites editor™.
Devuelve un ambiente con tres variables:
-
colors: Contiene una referencia a un
arreglo con 16 elementos, uno para cada uno de los 15 registros de
color más un color que se emplea en el sprites
editor™ para representar los pixeles transparentes
(ese último color normalmente no se emplea dentro de un
programa pero de todas maneras lo devuelve la función
readSpritesFileporque es parte del
archivo). Cada uno de estos 16 elementos contiene una referencia a
un ambiente; cada uno de estos ambientes contiene tres variables:
red,green, y
blue; estas variables contienen un
número entre 0 y 31 para indicar el valor de los
componentes rojo, verde y azul para ese registro de color. -
largePixels: Contiene una referencia a un
arreglo con 128 elementos, un elemento para cada una de las
imágenes de 16 por 16 pixeles. Cada uno de esos elementos,
es a su vez una referencia a un arreglo con 256 números que
indican el color a emplear para cada uno de los 16 por 16 pixeles
que tiene cada imagen grande para los sprites. -
smallPixels: Contiene una referencia a un
arreglo con 128 elementos, un elemento para cada una de las
imágenes de 8 por 8 pixeles. Cada uno de esos elementos, es
a su vez una referencia a un arreglo con 64 números que
indican el color a emplear para cada uno de los 8 por 8 pixeles
que tiene cada imagen pequeña para los sprites.
Función para leer los datos de un archivo creado con el
simpleJ tiles editor™.
Devuelve un ambiente con tres variables:
-
colors: Contiene una referencia a un
arreglo con 16 elementos, uno para cada registro de color. Cada
uno de estos 16 elementos contiene una referencia a un ambiente;
cada uno de estos ambientes contiene tres variables:
red,green, y
blue; estas variables contienen un
número entre 0 y 31 para indicar el valor de los
componentes rojo, verde y azul para ese registro de color. -
pixels: Contiene una referencia a un
arreglo con 256 elementos, un elemento para cada tile modificable.
Cada uno de esos elementos es a su vez una referencia a un arreglo
con 64 números que indican el color a emplear para cada uno
de los 8 por 8 pixeles que tiene la imagen de cada tile. -
rows: Contiene un arreglo con 24
elementos, uno por cada renglón de la pantalla, y cada uno
de esos elementos es a su vez un arreglo con 32 números,
uno por cada columna de la pantalla.
Procedimiento para leer, compilar y ejecutar las instrucciones
contenidas en un archivo. Las instrucciones se ejecutan dentro del
contexto del ambiente actual al ejecutar el llamado al procedimiento
source. Las variables y procedimientos que se
definan dentro de ese archivo quedan dentro del ambiente actual, en el
que fue llamado el procedimiento source.
Argumentos:
-
filename- string: El nombre del
archivo.
Procedimiento para leer, compilar y ejecutar las instrucciones
contenidas en un archivo. Las instrucciones se ejecutan dentro del
contexto del ambiente env. Las variables y
procedimientos que se definan dentro de ese archivo quedan dentro del
ambiente indicado por el argumento env.
Argumentos:
-
filename- string: El nombre del
archivo. -
env- ambiente: El ambiente donde deben
quedar los procedimientos y variables definidos dentro del
archivo.
Procedimientos y funciones para manipular arreglos.
Procedimiento para copiar elementos de un arreglo a otro. Copia
del arreglo src los elementos desde
srcOffset hasta srcOffset + count - 1 al
arreglo dst en las posiciones que van de
dstOffset hasta dstOffset + count - 1.
Argumentos:
-
src- arreglo: Arreglo de donde se van a
copiar unos elementos. -
srcOffset- entero: Subíndice
dentro del arreglo src a partir del cual se van a tomar los
elementos para copiarlos. -
dst- arreglo: Arreglo a donde se van a
copiar unos elementos. -
dstOffset- entero: Subíndice
dentro del arreglodsta partir del cual se van
a colocar los elementos. -
count- entero: Cuántos elementos
se van a copiar.
Función que devuelve la longitud de un arreglo.
Argumentos:
-
arr- arreglo: El arreglo.
Devuelve:
La longitud del arreglo arr. |
Función que devuelve un nuevo arreglo llenado con enteros
consecutivos desde lower hasta
upper.
Argumentos:
-
lower- entero: El valor para el primer
elemento del arreglo. -
upper- entero: El valor para el
último elemento del arreglo.
Devuelve:
Un arreglo con upper - lower + 1 elementos.Conteniendo los enteros consecutivos desde lowerhasta upper. |
Procedimientos y funciones para manipular ambientes.
Función que devuelve los nombres de todos las variables
dentro de un ambiente.
Argumentos:
-
env- ambiente: El ambiente del cual hay
que obtener la lista de nombres.
Devuelve:
| Un arreglo de strings donde cada elemento es el nombre de una variable en el ambiente env. |
Función que devuelve los valores de todas las variables
dentro de un ambiente.
Argumentos:
-
env- ambiente: El ambiente del cual hay
que obtener la lista de valores.
Devuelve:
| Un arreglo de valores, con un valor por cada variable en el ambiente env. |
Función para averiguar si existe una variable con cierto
nombre en el ambiente actual.
Argumentos:
-
name- string: El nombre de la
variable.
Devuelve:
true si existe una variable con esenombre dentro del ambiente actual, de lo contrario devuelve . |
Función para averiguar si existe una variable con cierto
nombre en un ambiente.
Argumentos:
-
name- string: El nombre de la
variable. -
env- ambiente: El ambiente.
Devuelve:
true si existe una variable con esenombre en el ambiente env, de lo contrariodevuelve false. |
Procedimiento que elimina una variable del ambiente actual.
Argumentos:
-
name- string: El nombre de la variable a
eliminar. Si no existe en el ambiente actual una variable con ese
nombre, entonces no hace nada.
Funciones para preguntar acerca del tipo de algún
valor.
Función para determinar si un valor es de tipo
arreglo.
Argumentos:
-
obj- cualquier tipo: El valor.
Devuelve:
true si obj es unarreglo, de lo contrario devuelve false. |
Función para determinar si un valor de tipo booleano. Los
únicos valores booleanos son true y
false.
Argumentos:
-
obj- cualquier tipo: El valor.
Devuelve:
true si obj es unbooleano, de lo contrario devuelve false. |
Función para determinar si un valor es de tipo
colección. Las colecciones son:
-
Queue (cola)
-
Set (conjunto)
-
Stack (pila)
Argumentos:
-
obj- cualquier tipo: El valor.
Devuelve:
true si obj es unacola, un conjunto o una pila, de lo contrario devuelve false. |
Función para determinar si un valor de tipo
numérico. Los enteros y los flotantes son
numéricos.
Argumentos:
-
obj- cualquier tipo: El valor.
Devuelve:
true si obj es unentero o un flotante, de lo contrario devuelve false. |
Función para determinar si un valor es de tipo procedure
(una función es un caso especial de un procedimiento).
Argumentos:
-
obj- cualquier tipo: El valor.
Devuelve:
true si obj es unprocedure, de lo contrario devuelve false. |
Función para determinar si un valor es una cola
(queue).
Argumentos:
-
obj- cualquier tipo: El valor.
Devuelve:
true si obj es unacola, de lo contrario devuelve false. |
Función para determinar si un valor es un conjunto
(set).
Argumentos:
-
obj- cualquier tipo: El valor.
Devuelve:
true si obj es unconjunto, de lo contrario devuelve false. |
Función para determinar si un valor es una pila
(stack).
Argumentos:
-
obj- cualquier tipo: El valor.
Devuelve:
true si obj es unapila, de lo contrario devuelve false. |
Además de los arreglos y los ambientes,
simpleJ™ también tiene soporte para tres
tipos de contenedores: colas (queues), conjuntos (sets) y pilas (stacks).
Un contenedor es una estructura que contiene cero o más
datos.
Estos contenedores están implementados como ambientes que
contienen los datos y procedimientos para operar sobre estos datos. Estos
contenedores se crean por medio de unas funciones especiales que se llaman
constructores.
Constructor que crea una nueva cola. Una cola es una estructura
que puede contener varios valores. Los valores se agregan al final de la
cola y se extraen del principio de la cola.
Ejemplo:
var q = Queue();
q.put(1);
q.put(2);
q.put("abc");
q.put([10, 20, 30]);
while (!q.isEmpty())
print(q.get());
Función para averiguar si la cola contiene un
dato.
Argumentos:
-
element- cualquier tipo: El
dato.
Devuelve:
true si la cola contiene el datoelement, de lo contrario devuelvefalse. |
Función que crea una nueva cola, la cual contiene los
datos de otra estructura.
Argumentos:
-
data- arreglo, queue, set o stack: La
estructura que contiene los datos con los cuales hay que crear
la cola.
Devuelve:
Una cola conteniendo los datos que se encuentran dentro dedata. |
Función que devuelve el primer elemento de la cola (y lo
quita de la cola).
Devuelve:
| El primer elemento de la cola. |
Función para averiguar si la cola está
vacía (si no contiene ningún elemento).
Devuelve:
true si la cola estávacía, de lo contrario devuelve false. |
Procedimiento que agrega un elemento al final de la cola.
Argumentos:
-
element- cualquier tipo: El elemento
que se debe agregar al final de la cola.
Procedimiento que agrega a la cola todos los datos de otra
estructura.
Argumentos:
-
data- arreglo, queue, set o stack: La
estructura que contiene los datos que hay que agregar al final
de la cola.
Procedimiento que elimina todos los datos de la cola. Justo
después de llamar a este procedimiento, un llamado a
q.isEmpty() devuelve true.
Procedimiento para averiguar cuántos elementos contiene
la cola.
Devuelve:
| Un entero con el número de elementos que hay en la cola. |
Constructor que crea un nuevo conjunto. Un conjunto es una
estructura que no contiene duplicados de ninguno de sus
elementos.
Ejemplo:
var s = Set();
s.put(1);
s.put(2);
s.put(1);
s.put("abc");
print(s.contains(1));
s.remove(1);
print(s.contains(1));
Función para averiguar si el conjunto contiene un
dato.
Argumentos:
-
element- cualquier tipo: El
dato.
Devuelve:
true si el conjunto contiene el dato,de lo contrario devuelve false. |
Función que crea un nuevo conjunto, el cual contiene los
datos de otra estructura. Si un elemento está dos o más
veces en la estructura de datos, sólo aparece una sola vez
dentro del conjunto.
Argumentos:
-
data- arreglo, queue, set o stack: La
estructura que contiene los datos con los cuales hay que crear
el conjunto.
Devuelve:
| Un conjunto conteniendo los datos que se encuentran dentro de data. |
Función para averiguar si el conjunto está
vacío (si no contiene ningún elemento).
Devuelve:
true si el conjunto estávacío, de lo contrario devuelve false. |
Procedimiento que agrega un elemento a un conjunto. Si ya estaba
ese elemento dentro del conjunto, entonces no hace nada.
Argumentos:
-
element- cualquier tipo: El elemento
que se debe agregar al conjunto.
Procedimiento que agrega al conjunto todos los datos de otra
estructura. Si un elemento está dos o más veces en la
estructura de datos, sólo aparece una sola vez dentro del
conjunto.
Argumentos:
-
data- arreglo, queue, set o stack: La
estructura que contiene los datos que hay que agregar al
conjunto.
Procedimiento que elimina un dato del conjunto. Si ese dato no
pertenecía al conjunto, entonces no hace nada.
Argumentos:
-
element- cualquier tipo: El elemento
que hay que eliminar del conjunto.
Procedimiento que elimina todos los datos del conjunto. Justo
después de llamar a este procedimiento, un llamado a
s.isEmpty() devuelve true.
Procedimiento para averiguar cuántos elementos contiene
el conjunto.
Devuelve:
| Un entero con el número de elementos que hay en el conjunto. |
Constructor que crea una nueva pila. Una pila es una estructura
que puede contener varios valores. Los valores se agregan en la parte
superior de la pila y se extraen de la parte superior de la pila.
Ejemplo:
var s = Stack();
s.put(1);
s.put(2);
s.put("abc");
s.put([10, 20, 30]);
while (!s.isEmpty())
print(s.get());
Función para averiguar si la pila contiene un
dato.
Argumentos:
-
element- cualquier tipo: El
dato.
Devuelve:
true si la pila contiene el datoelement, de lo contrario devuelvefalse. |
Función que crea una nueva pila, la cual contiene los
datos de otra estructura.
Argumentos:
-
data- arreglo, queue, set o stack: La
estructura que contiene los datos con los cuales hay que crear
la pila.
Devuelve:
Una pila conteniendo los datos que se encuentran dentro dedata. |
Función para averiguar si la pila está
vacía (si no contiene ningún elemento).
Devuelve:
true si la pila estávacía, de lo contrario devuelve false. |
Función que devuelve el elemento que está en la
parte superior de la pila (y lo quita de la pila).
Devuelve:
| El elemento que está en la parte superior de la pila. |
Procedimiento que agrega un elemento en la parte superior de la
pila.
Argumentos:
-
element- cualquier tipo: El elemento
que se debe agregar en la parte superior de la pila.
Procedimiento que agrega a la pila todos los datos de otra
estructura.
Argumentos:
-
data- arreglo, queue, set o stack: La
estructura que contiene los datos que hay que agregar en la
parte superior de la pila.
Procedimiento que elimina todos los datos de la pila. Justo
después de llamar a este procedimiento, un llamado a
s.isEmpty() devuelve true.
Procedimiento para averiguar cuántos elementos contiene
la pila.
Devuelve:
| Un entero con el número de elementos que hay en la pila. |
Función para crear una nueva estructura que contiene todos
los elementos de otras dos estructuras. Cada una de las estructuras
puede ser un arreglo, una cola, un conjunto o una pila. No es necesario
que las dos estructuras sean del mismo tipo. La estructura creada es del
mismo tipo que el primer argumento.
Argumentos:
-
a- arreglo, queue, set o stack: La
primera estructura. -
b- arreglo, queue, set o stack: La
segunda estructura.
Devuelve:
Una estructura, del mismo tipo que la estructuraa, que contiene todos los elementos de lasestructuras a y b. |
Función que devuelve al azar uno de los elementos de una
estructura. Todos los elementos tienen la misma probabilidad de ser
seleccionados.
Argumentos:
-
data - arreglo, queue, set o stack: La estructura.
Devuelve:
| Uno de los elementos de la estructura escogido aleatoriamente. |
Función para averiguar si una estructura contiene un
dato.
Argumentos:
-
data- arreglo, queue, set o stack: La
estructura. -
element- cualquier tipo: El dato.
Devuelve:
true si la estructura contiene el datoelement, de lo contrario devuelvefalse. |
Función que devuelve el elemento más grande de una
estructura de datos. Todos los datos dentro de la estructura deben ser
números o strings (no se pueden mezclar). En el caso de que sean
números, el elemento más grande es el más cercano
al infinito positivo. En el caso de que sean strings, el elemento mayor
es el último al ordenarlos en orden "alfabético". Es un
error llamar esta función con una estructura vacía.
Note
Para la computadora todas las letras mayúsculas vienen
antes que todas la minúsculas. Es decir que la
Z viene antes que la
a.
Argumentos:
-
data- arreglo, queue, set o stack: La
estructura.
Devuelve:
| El elemento más grande de la estructura. |
Función que devuelve el elemento más pequeño
de una estructura de datos. Todos los datos dentro de la estructura
deben ser números o strings (no se pueden mezclar). En el caso de
que sean números, el elemento más pequeño es el
más cercano al infinito negativo. En el caso de que sean strings,
el elemento menor es el primero al ordenarlos en orden
"alfabético". Es un error llamar esta función con una
estructura vacía.
Note
Para la computadora todas las letras mayúsculas vienen
antes que todas la minúsculas. Es decir que la
Z viene antes que la
a.
Argumentos:
-
data- arreglo, queue, set o stack: La
estructura.
Devuelve:
| El elemento más pequeño de la estructura. |
Función que devuelve el producto (multiplicación) de
todos los elementos de una estructura. Todos estos elementos tienen que
ser números.
Argumentos:
-
data- arreglo, queue, set o stack: La
estructura.
Devuelve:
| El producto de todos los elementos en la estructura. Si la estructura está vacía, entonces devuelve un uno. |
Función para averiguar cuántos elementos contiene
una estructura.
Argumentos:
-
data- arreglo, queue, set o stack: La
estructura.
Devuelve:
| Un entero con el número de elementos en la estructura. |
Función que devuelve una nueva estructura con los datos de
otra estructura ordenados de menor a mayor. Todos los datos dentro de la
estructura deben ser números o strings (no se pueden
mezclar).
Note
Para la computadora todas las letras mayúsculas vienen
antes que todas la minúsculas. Es decir que la
Z viene antes que la
a.
Argumentos:
-
data- arreglo, queue, set o stack: La
estructura.
Devuelve:
Una nueva estructura con los elementos dedata ordenados de menor a mayor. Esta nuevaestructura es del mismo tipo que data. |
Función que devuelve la sumatoria (suma) de todos los
elementos de una estructura. Todos estos elementos tienen que ser
números.
Argumentos:
-
data- arreglo, queue, set o stack: La
estructura.
Devuelve:
| La sumatoria de todos los elementos en la estructura. Si la estructura está vacía, entonces devuelve un cero. |
Función que crea un nuevo arreglo, el cual contiene los
datos de otra estructura.
Argumentos:
-
data- arreglo, queue, set o stack: La
estructura que contiene los datos con los cuales hay que crear el
arreglo.
Devuelve:
Un arreglo conteniendo los datos que se encuentran dentro dedata. |
Función que crea una nueva cola, la cual contiene los datos
de otra estructura.
Argumentos:
-
data- arreglo, queue, set o stack: La
estructura que contiene los datos con los cuales hay que crear la
cola.
Devuelve:
Una cola conteniendo los datos que se encuentran dentro dedata. |
Función que crea un nuevo conjunto, el cual contiene los
datos de otra estructura. Si un elemento está dos o más
veces en la estructura de datos, sólo aparece una sola vez dentro
del conjunto.
Argumentos:
-
data- arreglo, queue, set o stack: La
estructura que contiene los datos con los cuales hay que crear el
conjunto.
Devuelve:
| Un conjunto conteniendo los datos que se encuentran dentro de data. |
En simpleJ™ los procedimientos (y por lo
tanto también las funciones) son un dato de tipo procedure. Al
igual que cualquier otro tipo de dato se pueden asignar a una variable,
pasar como argumento a otro procedimiento o ser devuelto por una
función.
Procedimiento que aplica un procedimiento a los datos de un
arreglo. El número de datos que contiene el arreglo debe ser
igual al número de argumentos que espera el procedimiento. Si
proc es una función entonces
apply también se comporta como una
función (devuelve un resultado).
Ejemplo:
var p = showAt; apply(p, ["Mensaje", 10, 12]); print(apply(sqrt, [16]));
Argumentos:
-
proc- procedure: El procedimiento a
aplicar. -
arr- arreglo: El arreglo con los
argumentos para el procedimientoproc.
Devuelve:
Si el valor de proc es una funciónentonces devuelve el resultado de llamar esa función con los datos del arreglo arr como argumentos. Si no esuna función, entonces no devuelve nada. |
Función que aplica un predicado a una estructura de datos y
devuelve una nueva estructura de datos que únicamente contiene
los elementos para los cuales el predicado fue cierto. Un
predicado es una función que espera un
solo argumento y devuelve true o
false. La nueva estructura es del mismo tipo que la
estructura que se le pasó como segundo argumento.
Ejemplo:
print(filter(isNumber, [1, "a", 10.0, true]));
Argumentos:
-
pred- procedure: Función que
espera un solo argumento y devuelvetrueo
false. -
data- arreglo, queue, set o stack:
Estructura con los datos que hay que filtrar.
Devuelve:
Una nueva estructura que contiene los datos dedata para los cuales preddevolvió true. Es del mismo tipo quedata. |
Función que devuelve una estructura que contiene el
resultado de aplicar una función de un solo argumento a cada uno
de los elementos de una estructura.
Ejemplo:
print(map(sqrt, [1, 4, 9, 16, 25]));
Argumentos:
-
func- procedure: Función que
espera un solo argumento. -
data- arreglo, queue, set o stack:
Estructura con los datos.
Devuelve:
| Una nueva estructura que contiene los resultados de aplicarle la función func a cada uno delos datos en data. Es del mismo tipo quedata. |
Función que devuelve un arreglo con todos los valores que
se obtienen al aplicar una función func que espera un arreglo y
devuelve una estructura a cada uno de los elementos de una
estructura.
Ejemplo:
numeros(n) {
return range(0, n);
}
print(mappend(numeros, [1, 5, 10]));
Argumentos:
-
func- procedure: Función que
espera un solo argumento y devuelve una estructura. -
data- arreglo, queue, set o stack:
Estructura con los datos.
Devuelve:
| Un arreglo con todos los valores que se obtienen al aplicar la función func a cada uno de loselementos de data. |
Función que acumula todos los valores de una estructura en
un solo valor empleando un valor inicial y una función que espera
dos argumentos.
Ejemplo:
concat(s1, s2) {
return s1 + s2;
}
print(reduce(concat, ["hola", "adios", "algo"], "xxx"));
print(reduce(concat, ["123", "456", "789"], "0"));
Argumentos:
-
binOp- procedure: Función que
espera dos argumentos. -
data- arreglo, queue, set o stack:
Estructura con los datos. -
firstValue- cualquier tipo: El valor
inicial.
Devuelve:
El resultado de acumular todos los valores dedata con firstValue empleandola función binOp. |
Función que acumula todos los valores de una estructura en
un solo valor empleando una función que espera dos argumentos. Es
un error llamarla con una estructura vacía.
Ejemplo:
concat(s1, s2) {
return s1 + s2;
}
print(reducef(concat, ["hola", "adios", "algo"]));
print(reducef(concat, ["123", "456", "789"]));
Argumentos:
-
binOp- procedure: Función que
espera dos argumentos. -
data- arreglo, queue, set o stack:
Estructura con los datos.
Devuelve:
El resultado de acumular todos los valores dedata empleando la funciónbinOp. |
Función que devuelve una nueva cola con los elementos de
otra cola ordenados de acuerdo al criterio especificado por una
función de dos argumentos.
Ejemplo:
mayorQue(x, valor) {
return x > valor;
}
var q = Queue();
q.put(2);
q.put(1);
q.put(3);
q.put(5);
print(toArray(sortQueue(q, mayorQue)));
Argumentos:
-
q- queue: Los datos que hay que
ordenar. -
comp- procedure: La función de
comparación. Esta función devuelve
truesi su primer argumento debe ir antes en
la cola que su segundo argumento, de lo contrario devuelve
false.
Devuelve:
Una nueva cola con los datos de qordenados de acuerdo al criterio indicado por la función comp. |
Función que devuelve una nueva estructura con los elementos
de otra estructura ordenados de acuerdo al criterio especificado por una
función de dos argumentos. No tiene mucho sentido emplear este
procedimiento para ordenar un conjunto (el orden de los elementos dentro
de un conjunto debería ser irrelevante).
Ejemplo:
mayorQue(x, valor) {
return x > valor;
}
print(sortc([4, 2, 10, 5, 20], mayorQue));
Argumentos:
-
data- arreglo, queue, set o stack:
Estructura con los datos que hay que ordenar. -
comp- procedure: La función de
comparación. Esta función devuelve
truesi su primer argumento debe ir antes en
la estructura que su segundo argumento, de lo contrario devuelve
false.
Devuelve:
Una nueva estructura con los datos dedata ordenados de acuerdo al criterio indicadopor la función comp. Es del mismo tipo quedata. |
Procedimientos que no se pueden clasificar dentro de alguna de las
secciones anteriores.
Procedimiento que detiene la ejecución del programa con un
mensaje de error.
Argumentos:
-
msg- string: El mensaje de error.
Procedimiento que suspende la ejecución de un programa
durante un tiempo determinado.
Argumentos:
-
time- flotante: El tiempo, en segundos,
durante el cual debe suspenderse la ejecución del
programa.

hace 1 año 11 semanas
hace 1 año 19 semanas
hace 1 año 19 semanas
hace 1 año 19 semanas
hace 1 año 19 semanas
hace 1 año 19 semanas
hace 1 año 19 semanas
hace 1 año 19 semanas
hace 1 año 19 semanas
hace 1 año 19 semanas