//basic box class, for invaders, cannon, city bits... class Boxish { float x,y; float w,h; color c; Boxish(float px,float py,float pw,float ph) { x = px; y = py; w = pw; h = ph; c = color(255); } void draw() { noStroke(); fill(c); rect(x,y,w,h); } boolean hit(Boxish b) { if(overlap(this.x,this.x+this.w,b.x,b.x+b.w)&& overlap(this.y,this.y+this.h,b.y,b.y+b.h)) { return true; } return false; } boolean hit(float px, float py){ if(px >= x && px <= x + w && py >= y && py <= y + h){ return true; } return false; } boolean overlap(float line1val1,float line1val2,float line2val1,float line2val2) { float line1min = min(line1val1,line1val2); float line1max = max(line1val1,line1val2); float line2min = min(line2val1,line2val2); float line2max = max(line2val1,line2val2); if(line1min < line2min && line1max < line2min) { return false; } if(line1min > line2max && line1max > line2max) { return false; } return true; } }