Lär dig programmera Processing

Tickmodellen

Som vi tidigare sett kan man styra ett objekt genom att ändra dess x- och y-koordinat, exempelvis genom att skriva:

x += 5;

Siffran 5 kan representeras av en variabel. En sådan variabel representerar hur stort steg x skall ändras. Den representerar också hur snabbt x rör sig. Inom fysik och matematik använder man ofta den grekiska bokstaven Δ (delta) för att beteckna ändringar, eller bara ett d. Några namn på variabeln kan vara:

stegX

hastighetX

deltaX

dx

I tickmodellen ändrar man koordinaterna varje gång datorn tickar med hjälp av variabler. I Processing gör man detta i draw-metoden.

x += dx;
y += dy

Sedan bestämmer man någon annanstans i koden hur stor förändringarna skall vara.

dx = 5;
dy = -2;

Med tickmodellen kan man:

Övning 5.1 - Rörelse med konstant hastighet

Skriv in följande kod.

float x, y, dx, dy;

void setup() {
  size(800, 600);
  x = width/2;
  y = height/2;
  dx = 0;
  dy = 0;
}

void draw() {
  background(0);
  ellipse(x, y, 20, 20);
  x += dx;
  y += dy;
}

Tilldela variablerna dx och dy olika värden i setup. Hur gör du för att bollen skall röra sig

Hur gör du för att bollen skall röra sig snett uppåt åt höger?

Övning 5.2 - Styr med flera tangenter samtidigt

I Scratch kan man programmera att hastigheten "sätts på" när man trycker ner en tangent och "stängs av" när man släpper tangenten.

styrning i Scratch

Vill man göra samma sak i Processing kan man använda händelserna keyPressed och keyReleased.

Se till att dx och dy är 0 när programmet startar. Skriv in följande kod nedanför draw-metoden.

void keyPressed() {
  if (keyCode == RIGHT) {
    dx = 2;
  }
}

void keyReleased() {
  if (keyCode == RIGHT) {
    dx = 0;
  }
}

Kopiera if-satserna och ändra i koden så att du kan styra med alla piltangenter. Testa att hålla nere högerpil och uppåtpil samtidigt.

Övning 5.3 - Acceleration och gravitation

Utgå från samma kod som i Övning 5.1.

Acceleration innebär att en hastighet förändras. Du kan accelerera bollen i x-led genom att ändra dx. Lägg in en acceleration i draw-metoden.

dx += 0.02;

Gravitation är en så kallad kraft. Ett objekt som påverkas av en kraft accelereras. Ett objekt som utsätts för jordens dragningskraft accelereras neråt. Ta bort all acceleration i x-led och lägg in kod så att bollen accelereras neråt.

Ändra på startvärden till dx och dy i setup-metoden så att bollen rör sig längs en kastbana som nedan. En sådan bana kallas för en parabel.

parabel

 

Malin Christersson Creative Commons License wwww.malinc.se