processing_sim/kek2.pde
2023-12-11 00:03:26 +01:00

67 lines
1.4 KiB
Plaintext

float checkDistance(Log log, Ship ship) {
float testX = ship.x;
float testY = ship.y;
// which edge is closest?
if (ship.x < log.x) testX = log.x;
else if (ship.x > log.x+log.logwidth) testX = log.x+log.logwidth;
if (ship.y < log.y) testY = log.y;
else if (ship.y > log.y+log.logheight) testY = log.y+log.logheight;
// get distant
float distX = ship.x-testX;
float distY = ship.y-testY;
float distance = sqrt( (distX*distX) + (distY*distY) );
line(testX, testY, ship_zero.x, ship_zero.y);
// if the distance is less than the radius, collision!
return distance;
}
// -----
boolean isColliding = false;
Ship ship_zero;
Saw saw_zero;
Bob bob;
Log[] logs = {new Log(100, 200, 100, 100, false), new Log(500, 200, 200, 100, false), new Log(400, 400, 20, 100, true) };
void setup() {
size(600, 600);
ship_zero = new Ship();
saw_zero = new Saw(100, 100, 20, 50);
bob = new Bob(100, 400, 20, 40);
}
void draw() {
background(50);
for(int i = 0; i < logs.length; i++) {
logs[i].drawLog(i);
}
// for(int i = 0; i < trees.length; i++) {
// trees[i].draw();
// }
ship_zero.draw();
saw_zero.drawSaw();
ship_zero.collect(saw_zero);
bob.drawBob();
ship_zero.collect(bob);
for(int i = 0; i < logs.length; i++) {
logs[i].strokecolor = logs[i].logcolor;
}
logs[ship_zero.nextLog].strokecolor = color(255, 0, 0);
}