Programació d'automatismes i robots amb Arduino, Processing i Android
11.- Teclat, text pantalla i aleatorietat
Les funcions per al teclat keyPressed() i keyReleased() permeten detectar quan està premuda una tecla al teclat i definir instruccions dins de cada funció.
void setup(){ size (400,400);//Mida de la pantalla background(138, 237, 129);//Color de fons String missatge= "Prem una tecla i solta-la"; text(missatge,10 , 30 ); } void draw() { // Cal la funció draw per fer anar les funcions keyPressed() i KeyReleased() } void keyPressed() { //Tecla premuda fill(58, 52, 147);// color interior cercle stroke(198, 16, 71); //color vora cercle strokeWeight(10);//gruix cercle ellipse( width/2, height/2, 100, 100); } void keyReleased(){ //Tecla soltada fill(58, 52, 147);// color interior cercle stroke(130, 16, 71);//color vora cercle strokeWeight(10);//gruix cercle ellipse( width/2, height/2, 100, 100); }//Final programa
Si volem saber quina tecla ha estat premuda ho podem saber amb key i keyCode. «key» pot detectar tecles ASCII i
les tecles BACKSPACE, TAB, ENTER, RETURN, ESC, i DELETE. «KeyCode» pot detectar les tecles especials no ASCII com
les fletxes UP, DOWN, LEFT, RIGHT i les tecles ALT, CONTROL, SHIFT.
Mira l'exemple:
void setup(){ //Mida de la pantalla size (400,400); } void draw() { background(37, 35, 67);//Color de fons String missatge= "Prem una tecla i solta-la"; text(missatge,10 , 30 ); text(key,45, 60); }//Final programa
També puc definir el tipus de font i la mida en lloc d'utilitzar l'estàndard.
Si vull emmagatzemar paraules en variables em cal anar concatenant lletres a una variable
intermitja i després passar-li el valor a la variable final. Mira l'exemple.
String textTeclejat ;//definim on desarem el text
String nom;// definim la variable nom
void setup()
{
size(600,300) ;//mida pantalla
background(255,255,255) ;//Fons de pantalla
textTeclejat = "" ;//inicialtzem la variable amb un blanc per traure-li el valor «null»
}
void draw()
{
PFont lameuaFont=createFont("Times new roman",20) ;//definim tipus font
textFont(lameuaFont,20);//canvie la mida a la font
fill(0) ;
text("Escriu el teu nom i prem després ENTER.",20,30) ;
if (key==ENTER){ //Si premem «enter» em acabat de posar el nostre nom
background(255,255,255) ;//Fons de pantalla
nom=textTeclejat;
text("el teu nom es",40 , 60);//escric un missatge
text(nom,150,60); //escric una variable
}
}
void keyReleased()
{
char teclaSeguent = key ;//alcem la darrera tecla teclejada
textTeclejat+=teclaSeguent ;//concatenem lletres «textTeclejat=textTeclejat + teclaSeguent»
}
Si volem capturar nombres enters o decimals amb el teclat amb Processing ens cal traure'ls el blanc amb que inicialitzem
la variable textTeclejat i això amb la funció «trim(" Hola amb blancs al principi")» que donarà per resultat
la cadena «"Hola amb blancs al principi"».
Si volem una mica d'aleatorietat al fer dibuixos cal utilitzar la funció ramdom(X) que
genera números enters entre cero i X. Mira l'exemple:
size(500,500);//mida pantalla
for (int i = 0; i < 15; i++) {
float r = random(221);
float x = random(499);
float y = random(499);
fill(5, 2+r, 3+r);//color per omplir el cercle
ellipse( x, y, 20, 20);//Un cercle radi 20 situat de forma aleatòria
}
Els nombres generats amb random són float, si volem convertir-los a enter ho farem amb la funció «int( nombre_float);»
per exemple l'ordre «int a=int(random(100));» defineix un enter «a» i li assigna un valor aleatori entre 0 i 100.
Llicenciat sota la Llicència Creative Commons Reconeixement NoComercial CompartirIgual 3.0