< Biraz fizik (Zıplayan top) Alıştırma: Top Sektirmece >
void setup() {
size(800, 500);
textSize(40);
}
int yer = 450;
int topCapi = 40;
float x = 60;
float y = yer - topCapi/2;
float hizX = 0;
float hizY = 0;
float yercekimi = 0.5;
int hedefCapi = 40;
float hedefX = 750;
float hedefY = y;
int durum = 0; //0: nisan aliniyor
//1: top ucusta
//2: top hedefi vurmus
//3: top hedefi iska gecmis
void draw() {
background(255, 255, 255);
if (durum == 0) {
// yer cizgisi
line(0, yer, width, yer);
// top
fill(0, 0, 255);
ellipse(x, y, topCapi, topCapi);
// nisan alma cizgisi
line(x, y, mouseX, mouseY);
// hedef
fill(255, 0, 0);
ellipse(hedefX, hedefY, hedefCapi, hedefCapi);
} else if (durum == 1) {
x = x + hizX;
y = y + hizY;
hizY = hizY + yercekimi;
// yer cizgisi
line(0, yer, width, yer);
// top
fill(0, 0, 255);
ellipse(x, y, topCapi, topCapi);
// hedef
fill(255, 0, 0);
ellipse(hedefX, hedefY, hedefCapi, hedefCapi);
if (dist(x, y, hedefX, hedefY) < (topCapi+hedefCapi)/2) {
durum = 2;
} else if (y > yer-topCapi/2) {
durum = 3;
}
} else if (durum == 2) {
text("Bravo!", width/2, height/2);
} else if (durum == 3) {
text("Iskaladın!", width/2, height/2);
}
}
void mousePressed() {
if (durum == 0) {
hizX = (mouseX-x)*0.1;
hizY = (mouseY-y)*0.1;
durum = 1;
}
}