class Ball {
float mx, my;
int s = 8;
float speed;
boolean plink = false;
int dir = 0;
int count = 0;
// Contructor (required)
Ball(float imx, float imy, float ispeed) {
mx = imx;
my = imy;
speed = ispeed;
}
// Custom method for updating the variables
void update() {
for(int i = 0; i <numPegs; i++){
if(dist(pegs[i].mx,pegs[i].my, mx, my)<6){
dir = int(random(2));
if(dir == 0) dir = -1;
plink = true;
}
}
my++;
}
void move(){
if(count<=10){
mx+= dir;
count++;
my++;
}
else{
plink = false;
count = 0;
}
}
// Custom method for drawing the object
void display() {
fill(200,100,0);
ellipse(mx, my, s, s);
if(my==100) println(mx);
}
}
class Peg {
float mx, my;
int s = 3;
// Contructor (required)
Peg(float imx, float imy) {
mx = imx;
my = imy;
println(mx + "," + my);
}
// Custom method for drawing the object
void display() {
fill(100,0,0);
ellipse(mx, my, s, s);
}
}
// < = > (less is more)
// aka the annooyingly small
// aka plink-my-o
int numPegs = 30;
Ball[] balls = new Ball[0];
Peg[] pegs;
int[] container = new int[6];
int maxVal = 0;
void setup(){
size(100, 100);
smooth();
frameRate(30);
noStroke();
fill(0);
rectMode(CENTER);
pegs = new Peg[numPegs];
for (int i = 0; i < numPegs; i++) {
pegs[i] = new Peg(10*(i%10),10*(i%2+1)+floor(i/10)*20);
// println(10*(i%10));
}
}
void draw(){
background(255);
if(frameCount%5 == 0){
Ball b = new Ball(50,0, 1);
balls = (Ball[]) append(balls, b );
}
for (int i = 0; i < numPegs; i++) {
pegs[i].display();
}
for (int i = 0; i < balls.length; i++) {
if(!balls[i].plink) balls[i].update();
else balls[i].move();
balls[i].display();
if(balls[i].my == 75) kill(i);
}
for(int i=0; i<container.length; i++){
if(container[i]>maxVal) maxVal = container[i];
}
for(int i=0; i<container.length; i++){
rect(i*20, 75, 10, container[i]);
}
maxVal = 0;
// -5,17,39,61,83,105
}
void kill(int dead){
if(balls[dead].mx == -5) container[0] ++;
if(balls[dead].mx == 17) container[1] ++;
if(balls[dead].mx == 39) container[2] ++;
if(balls[dead].mx == 61) container[3] ++;
if(balls[dead].mx == 83) container[4] ++;
if(balls[dead].mx == 105) container[5] ++;
for (int i = 0; i < balls.length-1; i++) {
balls[i] = balls[i+1];
}
balls = (Ball[])shorten(balls);
}