/*
**Rolling Notes**
Created by Shayla Ly
In the style of 'Rock Band' and similar games, press the arrow keys when notes are
over the corresponding buttons to earn points.
Arrow Keys: green (left), red (up), blue (down), yellow (right)
Some code referenced from:
http://www-acad.sheridanc.on.ca/PROG14998/2016/interactive-toy/shawn_morey_interactive_toy/index.html
*/
int arrowPoint;
int arrowPressed;
int score;
// declare notes variables
float notes1X = 125;
float notes2X = 165;
float notes3X = 205;
float notes4X = 245;
float notes1Y = 0;
float notes2Y = 0;
float notes3Y = 0;
float notes4Y = 0;
float speed = 1;
// declare button variables
float greenButtonX = 125;
float greenButtonY = 360;
float redButtonX = 165;
float redButtonY = 360;
float blueButtonX = 205;
float blueButtonY = 360;
float yellowButtonX = 245;
float yellowButtonY = 360;
// key presses
boolean leftPressed;
boolean downPressed;
boolean upPressed;
boolean rightPressed;
// ---------------------------------------------------------------- //
// setup
void setup() {
size(400, 400);
rectMode(CORNER);
ellipseMode(CORNER);
frameRate(60);
}
// drawing
void draw(){
drawBackground();
// overlay
fill(255,255,255,85);
rect(0,0,400,400);
arrowPoint = (int) random (4);
arrowPressed = 0;
drawBars();
drawButtons();
drawNotes1();
drawNotes2();
drawNotes3();
drawNotes4();
drawScore();
}
// ---------------------------------------------------------------- //
void drawBackground(){
noStroke();
// wall;
fill(182,156,109);
rect(0,0,400,400);
// door
fill(124,100,53);
rect(0,30,110,400);
fill(255,235,104);
rect(85,120,10,40);
// floor
fill(96,82,57);
rect(0,250,400,400);
// table
fill(124,100,53);
rect(345,210,8,70);
rect(235,210,8,70);
fill(140,114,63);
rect(230,200,130,10);
ellipse(230,200,130,20);
ellipse(230,180,130,37);
// chair
fill(124,100,53);
rect(180,230,6,50);
rect(220,230,6,50);
fill(140,114,63);
rect(180,180,10,60);
rect(180,230,45,10);
}
void drawBars(){
strokeWeight(4);
stroke(0);
line(200,0,200,400);
line(240,0,240,400);
line(280,0,280,400);
line(160,0,160,400);
line(120,0,120,400);
// bottom bar
fill(0);
noStroke();
rect(120,350,160,100);
}
void drawButtons(){
// green button
fill(96,225,71);
ellipse(greenButtonX,greenButtonY,30,30);
fill(#40AB2B);
triangle(144,365,130,375,144,385);
// red button
fill(225,71,71);
ellipse(redButtonX,redButtonY,30,30);
fill(#A92A2A);
triangle(180,365,170,380,190,380);
// blue button
fill(49,102,255);
ellipse(blueButtonX,blueButtonY,30,30);
fill(#2548BD);
triangle(220,385,210,370,230,370);
// yellow button
fill(255,229,49);
ellipse(yellowButtonX,yellowButtonY,30,30);
fill(#D1B813);
triangle(270,375,255,365,255,385);
}
void drawNotes1(){
fill(0);
stroke(255,255,255);
strokeWeight(2);
ellipse(notes1X,notes1Y,30,30);
notes1Y = notes1Y + 3.5;
speed = speed + 0.5;
if (notes1Y >= 370) {
notes1Y = 0;
}
}
void drawNotes2(){
fill(0);
stroke(255,255,255);
strokeWeight(2);
ellipse(notes2X,notes2Y,30,30);
notes2Y = notes2Y + 4;
speed = speed + 0.5;
if (notes2Y >= 370) {
notes2Y = 0;
}
}
void drawNotes3(){
fill(0);
stroke(255,255,255);
strokeWeight(2);
ellipse(notes3X,notes3Y,30,30);
notes3Y = notes3Y + 4.5;
speed = speed + 0.5;
if (notes3Y >= 370) {
notes3Y = 0;
}
}
void drawNotes4(){
fill(0);
stroke(255,255,255);
strokeWeight(2);
ellipse(notes4X,notes4Y,30,30);
notes4Y = notes4Y + 5;
speed = speed + 0.5;
if (notes4Y >= 370) {
notes4Y = 0;
}
}
void drawScore(){
textSize(20);
fill(255);
text("Score:",10,25);
text(score,75,25);
}
void keyPressed() {
// green button points
if (notes1Y >= 340 || notes1Y >= 380 || leftPressed == true)
{
arrowPoint = 0;
score = score + 1; }
else if (notes1Y <= 340){
score = score + 0;
}
// red button points
if (notes2Y >= 340 || notes2Y >= 380 || upPressed == true)
{
arrowPoint = 1;
score = score + 1; }
else if (notes2Y <= 340){
score = score + 0;
}
// blue button points
if (notes3Y >= 340 || notes3Y >= 380 || downPressed == true)
{
arrowPoint = 2;
score = score + 1; }
else if (notes3Y <= 340){
score = score + 0;
}
// yellow button points
if (notes4Y >= 340 || notes4Y >= 380 || rightPressed == true)
{
arrowPoint = 3;
score = score + 1; }
else if (notes4Y <= 340){
score = score + 0;
}
}