Startseite Skripte für das Wintersemester 2018/19 Interaction Design P5, Makey Makey Bleistift-Interface


Bleistift-Interface

Nehmt einen weichen Bleistift – dieser enthält mehr leitfähiges Karbon…

Schaut Euch die Demo an – auf einer normalen Tastatur verwendet das Script die Pfeiltasten zum Navigieren, die SPACE-Taste zum Neustarten des Spiels und die linke Mouse-Taste zum Erhöhen der Geschwindigkeit.

p5-Code

var x, y;

var d = 100; // Durchmesser des Kreises

var xR = 0;
var yR = 0;

var speed = 1;

var keyBoardSound, failSound;

function preload() {
  keyBoardSound = loadSound("sounds/buttonchime02up.wav");
  failSound = loadSound("sounds/443808__tissman__fail.wav");
}

function setup() {
  createCanvas(960, 400);

  frameRate(30);

  x = width / 2;
  y = height / 2;
}

function draw() {
  background(255);

  textSize(20);
  textAlign(LEFT);
  fill(255, 0, 0);
  text("KeyCode: " + keyCode, 5, height - 5); // Display last key pressed.

  fill(0, 0, 255);
  noStroke();
  ellipse(x + xR, y + 1 * yR, d, d);

  x = x + xR * speed;
  y = y + yR * speed;

  // wenn die Ränder des Kreises die Ränder der Bühne berühren
  // ist das Spiel aus
  // d / 2 = radius
  if (
    x - d / 2 < 0 ||
    x + d / 2 > width ||
    y - d / 2 < 0 ||
    y + d / 2 > height
  ) {
    background(0);
    textAlign(CENTER);
    textSize(150);
    fill(255, 0, 0);
    text("Game over!", width / 2, 220);
    failSound.play();
  }

  // wenn der Kreis noch weiter draussen ist, hört der Sound wieder auf
  var au = 15;
  if (x < 0 - au || x > width + au || y < 0 - au || y > height + au) {
    failSound.stop();
  }
}

function keyPressed() {
  /*
  38 = Pfeil rauf
  40 = Pfeil runter
  37 = Pfeil links
  39 = Pfeil rechts
  32 = SPACE-Taste
  */

  if (keyCode == 38) {
    yR = -1;
  }

  if (keyCode == 40) {
    yR = 1;
  }

  if (keyCode == 37) {
    xR = -1;
  }

  if (keyCode == 39) {
    xR = 1;
  }

  if (keyCode == 32) {
    // alles wieder auf Ausgangsposition
    xR = 0;
    yR = 0;
    x = width / 2;
    y = height / 2;
    speed = 1;
    background(0);
  }

  // egal, welche Taste gedrückt wird, der Sound wird abgespielt
  keyBoardSound.play();
}

function mouseReleased() {
  speed = speed + 1;
  keyBoardSound.play();
}