[Tutorial Processing] Variables del sistema

[singlepic id=750 w=320 h=240 float=center]

Las variables de sistema son aquellas que nos proporcionan información importante de nuestra ventana, con ellas podemos obtener valores como la posición del mouse, si un boton del mouse o una tecla se encuentra presionada y cual de ellas es. Toda esta información nos sera útil para hacer mas interactivos nuestros programas.

En el core (nucleo) de Processing existen muchas variables del sistema, a continuación se listan las mas importantes o en mi caso las que mas he utilizado.

  • width: Ancho de la ventana en pixeles definida previamente con size()
  • height: Altura de la ventana en pixeles definida previamente con size()
  • frameCount: Devuelve el numero de cuadro que se encuentra desde la ejecución de lo programa
  • frameRate: El numero de cuadros por segundo al que se encuentra trabajando el programa
  • key: Devuelve el valor ascii de la ultima tecla presionada
  • keyCode: Regresa el código de una tecla especial la cual esta codificada, su valor puede ser UP, DOWN, LEFT, RIGHT, ALT, CONTROL, SHIFT
  • keyPressed: Nos indica con verdadero o falso si una tecla se encuentra presionada
  • mousePressed: Nos indica con verdadero o falso si un boton del mouse se encuentra presionado
  • mouseButton: Nos indica que boton del mouse esta presionado sus valores pueden ser LEFT, RIGHT, CENTER
  • mouseX: Devuelve la posición x del raton en el sistema de coordenadas
  • mouseY: Devuelve la posición y del raton en el sistema de coordenadas

Ahora veremos un pequeño ejemplo utilizando algunas de estas variables:

[code language=java]
int s=50;

void setup() {
size( 600, 400 );
frameRate(60);
smooth();

rectMode(CENTER);
}

void draw() {
println(frameCount);
background(map(mouseX, 0, width, 0, 255));
fill(map(mouseY, 0, height, 0, 255));

if (mousePressed) {
if (mouseX>=width/2) {
ellipse(mouseX, mouseY, s, s);
}
else {
rect(mouseX, mouseY, s, s);
}
}

if (keyPressed) {
if (key==’p’ || key==’P’) {
s++;
}
else if (key==’l’ || key==’L’) {
s–;
}
}
}
[/code]

Como verán es un programa muy sencillo, su funcionamiento es simple, creamos una variable s que nos indicara el tamaño de las figuras a dibujar; dentro del setup() definimos el tamaño de nuestra ventana, el numero de cuadros por segundo y definimos que los rectángulos los dibujara desde el centro; en el draw() imprima el numero del cuadro actual, y se define el color de fondo en base a la posición del mouse en X con respecto al ancho de ventana, se usa la función map() para mantener el rango dentro de un byte, el color de fondo de las figuras se define igual que el del fondo de ventana solo que con respecto a la posición Y del mouse. Después se verifica si se encuentra presionado algún boton del mouse con la variable mousePressed dentro de un if, si es así, dibujará un rectángulo en la posición actual del mouse si este se encuentra en la mitad derecha de la ventana, en caso contrario dibujara un circulo. Por ultimo verificamos si una tecla es presionada con keyPressed dentro de un if, cambiaremos el tamaño de la figura dependiendo la tecla presionada ya sea P o L que verificamos comparando key.

Como pueden ver con este ejemplo, estas variables nos son de mucha ayuda, con ellas podemos modificar el comportamiento del programa en base a las acciones del usuario.

Para el proximo tutorial veremos lo que son los eventos y como usarlos en nuestros programas que cada ves se van haciendo mas complejos.

Adrian MB

Me gusta la electrónica, programación y todo lo relacionado. Ing. en Mecatronica de la UPIITA del IPN y estudiante de Diseño Industrial en la UAM. @adrianmtzb http://adrianmb.mx

También te podría gustar...

  • Hola!!!, increible tutorial, puse el código en Processing, y me dice error:

    en la linea 17 me dice maybe a missing rigth parhentesis?

    • Ya corregí el codigo, fue un cambio que hizo la codificación HTML, en esa sección llevaba un “>=”, prueba el código, ya debe funcionar correctamente.

      Saludos y gracias por el feedback.

  • El entorno es Processing, checa este link 😉 http://blog.make-a-tronik.com/que-es-processing/

  • Elaya

    Saludos, disculpa podrias mencionar que entorno de programacion estas usando?