p5js_workshop

6 hours workshop about p5.js and p5play.js

View the Project on GitHub

Probabilmente incontrerete un sacco di typos e errori, aiutatemi a rendere il materiale del workshop più bello con ISSUES e PR

Giorno 1 - Parte 5 - interazioni con tastiera

la tastiera

Come per il mouse, p5.js ci mette a disposizione anche delle funzioni per interfacciarci con la tastiera.

function keyPressed() {
  if (keyCode === LEFT_ARROW) {
     //fai qualcosa
  }

  if (key=='A'){
    /fai altro
  }
}

la funzione keyPressed(), richiamata fuori da setup() e draw() è invocata da p5 ogni volta che viene premuto un tasto sulla tastiera. Dentro alla funzione keyPressed() posso controllare quale tasto è stato premuto con il costrutto if (key=='A'){} per caratteri semplici o if (keyCode === LEFT_ARROW) per tasti speciali della tastiera.

Muoviamo il nostro personaggio con la tastiera

vogliamo che il nostro personaggio (gino) si muova autonomamente ad ogni frame, e con la tastiera vogliamo controllare la direzione. Un po’ come funzionava snake, ricordate?

Iniziamo a creare altre due variabili che definiscono la velocità del nostro personaggio. Come in fisica, la velocità deve essere aggiuta alla posizione del nostro oggetto ad ogni istante.

Ridefiniamo dunque la funzione aggiornaPosizione()


var positionX;
var positionY;

var speedX=1;
var speedY=0;

function aggiornaPosizione(){ //aggiorna le variabili con la posizione del mouse
  positionX+=speedX; //somma a positionX speedX => positionX=positionX+speedX
  positionY+=speedY
}

integrando con la tastiera otteniamo

var positionX;
var positionY;

var speedX=1;
var speedY=0;

void setup(){
 createCanvas(640,480);
}

void draw(){
  background(255);
  aggiornaPosizione();
  disegnaGino(positionX,positionY)
}

function disegnaGino(x,y){
  rect (x-50,y,-50, 100,100)
  ellipse (x-20,y,-20, 20,20)
  ellipse (x-70,y,-20, 20,20)
}

function aggiornaPosizione(){ //aggiorna le variabili con la posizione del mouse
  positionX+=speedX; //somma a positionX speedX => positionX=positionX+speedX
  positionY+=speedY
}

function keyPressed() {
  if (keyCode === LEFT_ARROW) {
     speedX=-1;
     speedY=0;
  }else if(keyCode === RIGHT_ARROW){
     speedX=1;
     speedY=0;
  }else if(keyCode === UP_ARROW){
     speedX=0;
     speedY=-1;
  }else if(keyCode === DOWN_ARROW){
     speedX=0;
     speedY=1;
  }
}

Quarda il codice dell’esercizio 5

vedi il risultato dello sketch

appunti del giorno 1: