Rörelse med tickmodellen
Genom att varje gång datorn tickar, ändra ett objekts position i x- och y-led, kan man modellera rörelse. De
variabler som behövs är x och y för positionen samt dx och dy för förändringarna.
Dessa variabler måste deklarerar globalt.
Koden:
float x, y, dx, dy;
bör stå överst i programmet.
Övning - Fallande boll
Skriv av och kör koden.
int radius;
float x, y, dx, dy;
void setup() {
size(600, 400);
ellipseMode(RADIUS);
radius = 10;
x = width/2;
y = radius;
dx = 0;
dy = 2;
}
void draw() {
background(255);
x += dx;
y += dy;
ellipse(x, y, radius, radius);
}
Se till att du förstår hur koden skulle se ut om bollen istället skulle komma infarande från höger till vänster.
När bollen åker förbi den nedre kanten ser man inget mer. Lägg till kod så att bollen får en ny position vid den övre kanten när den når den nedre kanten. Positionen i x-led kan slumpas fram. Det går även att slumpa olika färger för varje boll.
Övning - Studsa upp och ner
För att åstadkomma en studs, måste bollen ändra riktning. Om y-hastigheten före en studs i nedre kanten är 2, så ska den efter studsen vara -2. Vid en studs i den övre kanten ska den återigen bli 2.
Man kan multiplicera med -1 genom att skriva
dy = (-1)*dy;
eller genom att använda en förkortad operator
dy *= -1;
Ändra i koden så att bollen studsar i både den övre och den nedre kanten.
Övning - Biljardkula
Genom att låta dx vara större än noll, får bollen en rörelse i x-led ocxså. Studsarna i den vänstra och högra kanten görs på liknande
sätt som studsarna i den övre och nedra kanten. Skriv kod som simulerar en studsande biljarboll.