boolean bSoundEnabled = true; class Ball { float x, y; // X-coordinate, y-coordinate float diameter; // Diameter of the circle float speed; // Distance moved each frame int direction = 1; // initial direction is down (1 is down, 2 is right, 3 is up, 4 is left) int type; // boolean ballIsInThePipe; boolean ballEnteredPipe; boolean ballExitedPipe; // boolean sax; float lastSoundTriggerTime; // Constructor Ball(float xpos, float ypos, float dia, float sp, int dir, int ballType) { x = xpos; y = ypos; diameter = dia; speed = sp; direction = dir; type = ballType; } void reset (float xpos, float ypos, float dia, float sp, int dir, int ballType) { x = xpos; y = ypos; diameter = dia; speed = sp; direction = dir; type = ballType; } float changeDirTimer; void goRight(){ if (direction != R){ direction = R; changeDirTimer = millis(); } } void goDownRight(){ if (direction != DR){ direction = DR; changeDirTimer = millis(); } } void goDownLeft(){ if (direction != DL){ direction = DL; changeDirTimer = millis(); } } void goUpLeft(){ if (direction != UL){ direction = UL; changeDirTimer = millis(); } } void goUpRight(){ if (direction != UR){ direction = UR; changeDirTimer = millis(); } } void goUp(){ if (direction != U){ direction = U; changeDirTimer = millis(); } } void goLeft(){ if (direction != L){ direction = L; changeDirTimer = millis(); } } void goDown(){ if (direction != D){ direction = D; changeDirTimer = millis(); } } void move() { if (direction == D){ y = y + speed; x = x; } if (direction == R){ x = x + speed; y = y; } if (direction == U){ y = y - speed; x = x; } if (direction == L){ x = x - speed; y = y; } if (direction == DR){ x = x + speed; y = y + speed; } if (direction == UR){ x = x + speed; y = y - speed; } if (direction == UL){ x = x - speed; y = y - speed; } if (direction == DL){ x = x - speed; y = y + speed; } } void display() { if (ballOnScreen()){ if(type == RED_BALL){ fill(255,100,50,240); } else if(type == GREEN_BALL){ fill(7,167,166); } else if(type == PURP_BALL){ fill(157,2,111); } strokeWeight(2); stroke(255); ellipse(x, y, diameter, diameter); } previousX = x; previousY = y; } boolean pipeIsClose = false; float previousX; float previousY; boolean ballOnScreen(){ if(x >= LEFT_EDGE && x <= RIGHT_EDGE && y >= TOP_EDGE && y < BOTTOM_EDGE){ return true; } else { return false; } } boolean ballOnScreen(Ball b){ if(b.x >= LEFT_EDGE && b.x <= RIGHT_EDGE && b.y >= TOP_EDGE && b.y < BOTTOM_EDGE){ return true; } else { return false; } } void playZound(){ if((millis() - lastSoundTriggerTime) > 100){ if (bSoundEnabled){ if(type == RED_BALL){ if(sax == false){ if(y < (height - (GRID_SPACE * 18))){ guitar1.trigger(); } if(y >= (height - (GRID_SPACE * 18)) && y < (height - (GRID_SPACE * 14))){ guitar2.trigger(); } if(y >= (height - (GRID_SPACE * 14)) && y < (height - (GRID_SPACE * 10))){ guitar3.trigger(); } if(y >= (height - (GRID_SPACE * 10)) && y < (height - (GRID_SPACE * 6))){ guitar4.trigger(); } if(y >= (height - (GRID_SPACE * 6)) && y < (height - (GRID_SPACE * 2))){ guitar5.trigger(); } } if(sax == true){ if(y < (height - (GRID_SPACE * 18))){ sax1.trigger(); } if(y >= (height - (GRID_SPACE * 18)) && y < (height - (GRID_SPACE * 14))){ sax2.trigger(); } if(y >= (height - (GRID_SPACE * 14)) && y < (height - (GRID_SPACE * 10))){ sax3.trigger(); } if(y >= (height - (GRID_SPACE * 10)) && y < (height - (GRID_SPACE * 6))){ sax4.trigger(); } if(y >= (height - (GRID_SPACE * 6)) && y < (height - (GRID_SPACE * 2))){ sax5.trigger(); } } } if(type == GREEN_BALL){ if(bass == false){ if(y < (height - (GRID_SPACE * 18))){ organ1.trigger(); } if(y >= (height - (GRID_SPACE * 18)) && y < (height - (GRID_SPACE * 14))){ organ2.trigger(); } if(y >= (height - (GRID_SPACE * 14)) && y < (height - (GRID_SPACE * 10))){ organ3.trigger(); } if(y >= (height - (GRID_SPACE * 10)) && y < (height - (GRID_SPACE * 6))){ organ4.trigger(); } if(y >= (height - (GRID_SPACE * 6)) && y < (height - (GRID_SPACE * 2))){ organ5.trigger(); } } if(bass == true){ if(y < (height - (GRID_SPACE * 18))){ bass1.trigger(); } if(y >= (height - (GRID_SPACE * 18)) && y < (height - (GRID_SPACE * 14))){ bass2.trigger(); } if(y >= (height - (GRID_SPACE * 14)) && y < (height - (GRID_SPACE * 10))){ bass3.trigger(); } if(y >= (height - (GRID_SPACE * 10)) && y < (height - (GRID_SPACE * 6))){ bass4.trigger(); } if(y >= (height - (GRID_SPACE * 6)) && y < (height - (GRID_SPACE * 2))){ bass5.trigger(); } } } if(type == PURP_BALL){ if(elektro == false){ if(y < (height - (GRID_SPACE * 18))){ drum1.trigger(); } if(y >= (height - (GRID_SPACE * 18)) && y < (height - (GRID_SPACE * 14))){ drum2.trigger(); } if(y >= (height - (GRID_SPACE * 14)) && y < (height - (GRID_SPACE * 10))){ drum3.trigger(); } if(y >= (height - (GRID_SPACE * 10)) && y < (height - (GRID_SPACE * 6))){ drum4.trigger(); } if(y >= (height - (GRID_SPACE * 6)) && y < (height - (GRID_SPACE * 2))){ drum5.trigger(); } } if(elektro == true){ if(y < (height - (GRID_SPACE * 18))){ elektro1.trigger(); } if(y >= (height - (GRID_SPACE * 18)) && y < (height - (GRID_SPACE * 14))){ elektro2.trigger(); } if(y >= (height - (GRID_SPACE * 14)) && y < (height - (GRID_SPACE * 10))){ elektro3.trigger(); } if(y >= (height - (GRID_SPACE * 10)) && y < (height - (GRID_SPACE * 6))){ elektro4.trigger(); } if(y >= (height - (GRID_SPACE * 6)) && y < (height - (GRID_SPACE * 2))){ elektro5.trigger(); } } } } lastSoundTriggerTime = millis(); } } }