#include "pitches.h"
const int rotary = 4;
int bonus1 = 22;
int w1 = 23;
int w2 = 24;
int r3 = 25;
int w4 = 26;
int w5 = 27;
int w6 = 28;
int y1 = 29;
int blue = 30;
int y2 = 31;
int w7 = 32;
int w8 = 33;
int w9 = 34;
int r10 = 35;
int w11 = 36;
int w12 = 37;
int bonus2 = 38;
int Ypos = 23;
int level = 1;
int free1 = 0;
int speed1 = 50;
int fy;
void clear(){
for(int i = 22; i < 39; i++){
digitalWrite(i,LOW);
}
}
void on(){
for(int i = 22; i < 39; i++){
digitalWrite(i, HIGH);
}
}
void RtL(){
for(int i = 39; i > 21; i--){
digitalWrite(i, HIGH);
tone(8, i*100, 100);
delay(100);
}
}
void LtR(){
for(int i = 22; i < 39; i++){
digitalWrite(i, HIGH);
tone(8, i*100, 100);
delay(100);
}
}
void RtLc(){
for(int i = 39; i > 21; i--){
digitalWrite(i, LOW);
delay(100);
}
}
void LtRc(){
for(int i = 22; i < 39; i++){
digitalWrite(i, LOW);
delay(100);
}
}
int updown = 0;
void directionChange(){
if(Ypos == 23){
updown=1;
}if(Ypos == 37){
updown=0;
}
}
void inOut(){
for(int i = 22; i < 30; i++){
digitalWrite(i, HIGH);
tone(8, i*100, 100);
delay(40);
}for(int i = 39; i > 30; i--){
digitalWrite(i, HIGH);
tone(8, i*100, 100);
delay(40);
}
delay(1000);
for(int i = 30; i > 21; i--){
digitalWrite(i, LOW);
delay(40);
}for(int i = 30; i < 39; i++){
digitalWrite(i, LOW);
delay(40);
}
}
void QuickBack(){
for(int i = 0; i < 5; i++){
for(int i = 22; i < 39; i++){
digitalWrite(i, HIGH);
tone(8, i*100, 30);
delay(10);
clear();
}for(int i = 39; i > 22; i--){
digitalWrite(i, HIGH);
tone(8, i*100, 30);
delay(10);
clear();
}
}
}
void March(){
for(int i = 0; i < 10; i++){
for(int i = 22; i < 39; i+=2){
digitalWrite(i, HIGH);
tone(8, i*75, 70);
}delay(100);
clear();
for(int i = 23; i < 39; i+=2){
digitalWrite(i, HIGH);
tone(8, i*75, 70);
}delay(100);
clear();
}
}
void setup(){
fy = speed1;
for(int i = 22; i < 39; i ++){
pinMode(i, OUTPUT);
}
pinMode(rotary, INPUT);
digitalWrite(rotary, HIGH);
Serial.begin(9600);
while(digitalRead(rotary)){
for(int i = 22; i < 39; i+=2){
digitalWrite(i, HIGH);
tone(8, NOTE_C5, 100);
}delay(100);
tone(8, NOTE_D5, 100);
delay(100);
clear();
for(int i = 23; i < 39; i+=2){
digitalWrite(i, HIGH);
tone(8, NOTE_G5, 100);
}delay(100);
tone(8, NOTE_E5, 100);
delay(100);
clear();
}
clear();
on();
delay(3000);
clear();
delay(1000);
}
void waiting(){
tone(8, NOTE_C5, 500);
delay(500);
tone(8, NOTE_D5, 500);
delay(500);
tone(8, NOTE_F5, 500);
delay(500);
}
void level1(){
speed1=50;
while(free1 == 0){
directionChange();
if(updown==0){
Ypos--;
Serial.println("Y--");
}if(updown==1){
Ypos++;
Serial.println("Y++");
}digitalWrite(Ypos, HIGH);
Serial.println(Ypos);
int y = speed1;
while(y!=0){
if(!digitalRead(rotary)){
free1=1;
}y--;
delay(10);
}
clear();
}
digitalWrite(Ypos, HIGH);
waiting();
Serial.println("Switch Pressed");
free1=0;
clear();
if(Ypos == 30){
level++;Serial.println("Level Up");
March();
}else if(Ypos == 29 || Ypos == 31){
inOut();
Ypos=22;
level1();
}else{
QuickBack();
level = 1;
Ypos=22;}
}
void level2(){
Ypos=22;
updown=1;
speed1=40;
while(free1 == 0){
directionChange();
if(updown==0){
Ypos--;
Serial.println("Y--");
}if(updown==1){
Ypos++;
Serial.println("Y++");
}digitalWrite(Ypos, HIGH);
Serial.println(Ypos);
int y = speed1;
while(y!=0){
if(!digitalRead(rotary)){
free1=1;
}y--;
delay(10);
}
clear();
}
digitalWrite(Ypos, HIGH);
waiting();
Serial.println("Switch Pressed");
free1=0;
clear();
if(Ypos == 30){
level++;
March();
}else if(Ypos == 29 || Ypos == 31){
Ypos=22;
inOut();
level2();
}else{
QuickBack();
level = 1;}
}
void level3(){
Ypos=22;
updown=1;
speed1=30;
while(free1 == 0){
directionChange();
if(updown==0){
Ypos--;
Serial.println("Y--");
}if(updown==1){
Ypos++;
Serial.println("Y++");
}digitalWrite(Ypos, HIGH);
Serial.println(Ypos);
int y = speed1;
while(y!=0){
if(!digitalRead(rotary)){
free1=1;
}y--;
delay(10);
}
clear();
}
digitalWrite(Ypos, HIGH);
waiting();
Serial.println("Switch Pressed");
free1=0;
clear();
if(Ypos == 30){
level++;
March();
}else if(Ypos == 29 || Ypos == 31){
Ypos=22;
inOut();
level3();
}else{
QuickBack();
level = 1;}
}
void level4(){
Ypos=22;
updown=1;
speed1=20;
while(free1 == 0){
directionChange();
if(updown==0){
Ypos--;
Serial.println("Y--");
}if(updown==1){
Ypos++;
Serial.println("Y++");
}digitalWrite(Ypos, HIGH);
Serial.println(Ypos);
int y = speed1;
while(y!=0){
if(!digitalRead(rotary)){
free1=1;
}y--;
delay(10);
}
clear();
}
digitalWrite(Ypos, HIGH);
waiting();
Serial.println("Switch Pressed");
free1=0;
clear();
if(Ypos == 30){
level++;
March();
}else if(Ypos == 29 || Ypos == 31){
Ypos=22;
inOut();
level4();
}else{
QuickBack();
level = 1;}
}
void level5(){
Ypos=22;
updown=1;
speed1=10;
while(free1 == 0){
directionChange();
if(updown==0){
Ypos--;
Serial.println("Y--");
}if(updown==1){
Ypos++;
Serial.println("Y++");
}digitalWrite(Ypos, HIGH);
Serial.println(Ypos);
int y = speed1;
while(y!=0){
if(!digitalRead(rotary)){
free1=1;
}y--;
delay(10);
}
clear();
}
digitalWrite(Ypos, HIGH);
waiting();
Serial.println("Switch Pressed");
free1=0;
clear();
if(Ypos == 30){
level++;
March();
}else if(Ypos == 29 || Ypos == 31){
Ypos=22;
inOut();
level5();
}else{
QuickBack();
level = 1;}
}
void level6(){
Ypos=22;
updown=1;
speed1=5;
while(free1 == 0){
directionChange();
if(updown==0){
Ypos--;
Serial.println("Y--");
}if(updown==1){
Ypos++;
Serial.println("Y++");
}digitalWrite(Ypos, HIGH);
Serial.println(Ypos);
int y = speed1;
while(y!=0){
if(!digitalRead(rotary)){
free1=1;
}y--;
delay(10);
}
clear();
}
digitalWrite(Ypos, HIGH);
waiting();
Serial.println("Switch Pressed");
free1=0;
clear();
if(Ypos == 30){
level++;
March();
}else if(Ypos == 29 || Ypos == 31){
Ypos=22;
inOut();
level6();
}else{
QuickBack();
level = 1;}
}
void level15(){
Ypos=22;
updown=1;
speed1=40;
while(free1 == 0){
Ypos=random(23,38);
digitalWrite(Ypos, HIGH);
Serial.println(Ypos);
int y = speed1;
while(y!=0){
if(!digitalRead(rotary)){
free1=1;
}y--;
delay(10);
}
clear();
}
digitalWrite(Ypos, HIGH);
waiting();
Serial.println("Switch Pressed");
free1=0;
clear();
if(Ypos == 30){
level++;
March();
}else if(Ypos == 29 || Ypos == 31){
Ypos=22;
inOut();
level15();
}else{
QuickBack();
level = 1;}
}
void level7(){
Ypos=22;
updown=1;
speed1=5;
while(free1 == 0){
if(Ypos==37){
Ypos=22;
}Ypos++;
digitalWrite(Ypos, HIGH);
Serial.println(Ypos);
int y = speed1;
while(y!=0){
if(!digitalRead(rotary)){
free1=1;
}y--;
delay(10);
}
clear();
}
digitalWrite(Ypos, HIGH);
waiting();
Serial.println("Switch Pressed");
free1=0;
clear();
if(Ypos == 30){
level++;
March();
}else if(Ypos == 29 || Ypos == 31){
Ypos=22;
inOut();
level7();
}else{
QuickBack();
level = 1;}
}
void level8(){
Ypos=22;
updown=1;
speed1=5;
while(free1 == 0){
directionChange();
if(updown==1){
Ypos++;
}else if(updown==0){
Ypos--;
}
digitalWrite(Ypos, HIGH);
Serial.println(Ypos);
int y = speed1;
while(y!=0){
if(!digitalRead(rotary)){
free1=1;
}y--;
delay(10);
}
if(Ypos==37 || Ypos==23){
int y = speed1;
y=y*random(0,40);
while(y!=0){
if(!digitalRead(rotary)){
free1=1;
}y--;
delay(10);
}
}
clear();
}
digitalWrite(Ypos, HIGH);
waiting();
Serial.println("Switch Pressed");
free1=0;
clear();
if(Ypos == 30){
level++;
March();
}else if(Ypos == 29 || Ypos == 31){
Ypos=22;
inOut();
level8();
}else{
QuickBack();
level = 1;}
}
void level9(){
Ypos=22;
updown=1;
speed1=40;
while(free1 == 0){
directionChange();
if(updown==1){
Ypos++;
}else if(updown==0){
Ypos--;
}
for(int i = 22; i < 38; i++){
if(i!=Ypos){
digitalWrite(i, HIGH);
}
}
int y = speed1;
while(y!=0){
if(!digitalRead(rotary)){
free1=1;
}y--;
delay(10);
}
clear();
}
digitalWrite(Ypos, HIGH);
waiting();
Serial.println("Switch Pressed");
free1=0;
clear();
if(Ypos == 30){
level++;
March();
}else if(Ypos == 29 || Ypos == 31){
Ypos=22;
inOut();
level9();
}else{
QuickBack();
level = 1;}
}
void level10(){
Ypos=22;
updown=1;
speed1=20;
while(free1 == 0){
directionChange();
if(updown==1){
Ypos++;
}else if(updown==0){
Ypos--;
}
for(int i = 22; i < 38; i++){
if(i!=Ypos){
digitalWrite(i, HIGH);
}
}
int y = speed1;
while(y!=0){
if(!digitalRead(rotary)){
free1=1;
}y--;
delay(10);
}
clear();
}
digitalWrite(Ypos, HIGH);
waiting();
Serial.println("Switch Pressed");
free1=0;
clear();
if(Ypos == 30){
level++;
March();
}else if(Ypos == 29 || Ypos == 31){
Ypos=22;
inOut();
level10();
}else{
QuickBack();
level = 1;}
}
void level11(){
Ypos=22;
updown=1;
speed1=5;
while(free1 == 0){
directionChange();
if(updown==1){
Ypos++;
}else if(updown==0){
Ypos--;
}
for(int i = 22; i < 38; i++){
if(i!=Ypos){
digitalWrite(i, HIGH);
}
}
int y = speed1;
while(y!=0){
if(!digitalRead(rotary)){
free1=1;
}y--;
delay(10);
}
clear();
}
digitalWrite(Ypos, HIGH);
waiting();
Serial.println("Switch Pressed");
free1=0;
clear();
if(Ypos == 30){
level++;
March();
}else if(Ypos == 29 || Ypos == 31){
Ypos=22;
inOut();
level11();
}else{
QuickBack();
level = 1;}
}
void level12(){
Ypos=22;
updown=1;
speed1=20;
while(free1 == 0){
directionChange();
if(updown==1){
Ypos++;
}else if(updown==0){
Ypos--;
}
digitalWrite(Ypos, HIGH);
if(Ypos <= 25 || Ypos >= 35){
speed1=20;
}else if(Ypos <= 27 || Ypos >= 33){
speed1=10;
}else if(Ypos <= 31){
speed1=5;
}
int y = speed1;
while(y!=0){
if(!digitalRead(rotary)){
free1=1;
}y--;
delay(10);
}
clear();
}
digitalWrite(Ypos, HIGH);
waiting();
Serial.println("Switch Pressed");
free1=0;
clear();
if(Ypos == 30){
level++;
March();
}else if(Ypos == 29 || Ypos == 31){
Ypos=22;
inOut();
level12();
}else{
QuickBack();
level = 1;}
}
void level13(){
Ypos=22;
updown=1;
speed1=5;
while(free1 == 0){
directionChange();
if(updown==1){
Ypos++;
}else if(updown==0){
Ypos--;
}
digitalWrite(Ypos, HIGH);
if(Ypos <= 26){
speed1=20;
}else if(Ypos <= 28){
speed1=15;
}else if(Ypos <= 31){
speed1=10;
}else if(Ypos <= 34){
speed1=7;
}else if(Ypos <= 37){
speed1=5;
}
int y = speed1;
while(y!=0){
if(!digitalRead(rotary)){
free1=1;
}y--;
delay(10);
}
clear();
}
digitalWrite(Ypos, HIGH);
waiting();
Serial.println("Switch Pressed");
free1=0;
clear();
if(Ypos == 30){
level++;
March();
}else if(Ypos == 29 || Ypos == 31){
Ypos=22;
inOut();
level13();
}else{
QuickBack();
level = 1;}
}
void level14(){
Ypos=22;
updown=1;
speed1=10;
while(free1 == 0){
directionChange();
if(updown==1){
Ypos++;
}else if(updown==0){
Ypos--;
}
if(Ypos != 26 && Ypos != 27 && Ypos != 33 && Ypos != 34){
digitalWrite(Ypos, HIGH);
}
int y = speed1;
while(y!=0){
if(!digitalRead(rotary)){
free1=1;
}y--;
delay(10);
}
clear();
}
digitalWrite(Ypos, HIGH);
waiting();
Serial.println("Switch Pressed");
free1=0;
clear();
if(Ypos == 30){
level++;
March();
}else if(Ypos == 29 || Ypos == 31){
Ypos=22;
inOut();
level14();
}else{
QuickBack();
level = 1;}
}
void level16(){
Ypos=22;
updown=1;
speed1=5;
while(free1 == 0){
directionChange();
if(updown==1){
Ypos++;
}else if(updown==0){
Ypos--;
}
for(int i = 22; i < 38; i++){
if(i != Ypos){
digitalWrite(i, HIGH);
}
}
if(Ypos <= 26){
speed1=20;
}else if(Ypos <= 28){
speed1=15;
}else if(Ypos <= 31){
speed1=10;
}else if(Ypos <= 34){
speed1=7;
}else if(Ypos <= 37){
speed1=5;
}
int y = speed1;
while(y!=0){
if(!digitalRead(rotary)){
free1=1;
}y--;
delay(10);
}
clear();
}
digitalWrite(Ypos, HIGH);
waiting();
Serial.println("Switch Pressed");
free1=0;
clear();
if(Ypos == 30){
level++;
March();
}else if(Ypos == 29 || Ypos == 31){
Ypos=22;
inOut();
level16();
}else{
QuickBack();
level = 1;}
}
void level17(){
Ypos=22;
updown=1;
speed1=20;
while(free1 == 0){
directionChange();
if(updown==1){
Ypos++;
}else if(updown==0){
Ypos--;
}
for(int i = 22; i < 38; i++){
if(i != Ypos){
digitalWrite(i, HIGH);
}
}
if(Ypos <= 25 || Ypos >= 35){
speed1=20;
}else if(Ypos <= 27 || Ypos >= 33){
speed1=10;
}else if(Ypos <= 31){
speed1=5;
}
int y = speed1;
while(y!=0){
if(!digitalRead(rotary)){
free1=1;
}y--;
delay(10);
}
clear();
}
digitalWrite(Ypos, HIGH);
waiting();
Serial.println("Switch Pressed");
free1=0;
clear();
if(Ypos == 30){
level++;
March();
}else if(Ypos == 29 || Ypos == 31){
Ypos=22;
inOut();
level17();
}else{
QuickBack();
level = 1;}
}
int u = 0;
void level20(){
Ypos=22;
updown=1;
speed1=5;
int flip = 0;
while(free1 == 0){
directionChange();
if(updown==1){
Ypos++;
}else if(updown==0){
Ypos--;
}
digitalWrite(Ypos, HIGH);
if(flip==0){
for(int i = 22; i < 38; i+=2){
digitalWrite(i, LOW);
}
}else if(flip==1){
for(int i = 23; i < 38; i+=2){
digitalWrite(i, LOW);
}
}
int y = speed1;
while(y!=0){
if(!digitalRead(rotary)){
free1=1;
}y--;
delay(10);
}
u+=speed1;
if(u==10){
u=0;
if(flip==0){
flip=1;
}else if(flip==1){
flip=0;
}
}
clear();
}
digitalWrite(Ypos, HIGH);
waiting();
Serial.println("Switch Pressed");
free1=0;
clear();
if(Ypos == 30){
level++;
March();
}else if(Ypos == 29 || Ypos == 31){
Ypos=22;
inOut();
level20();
}else{
QuickBack();
level = 1;}
}
void level18(){
Ypos=22;
updown=1;
speed1=10;
int flip = 0;
while(free1 == 0){
directionChange();
if(updown==1){
Ypos++;
}else if(updown==0){
Ypos--;
}
if(Ypos != 24 && Ypos != 26 && Ypos != 28 && Ypos != 30 && Ypos != 32 && Ypos != 34 && Ypos != 36 && Ypos != 38){
digitalWrite(Ypos, HIGH);
}
int y = speed1;
while(y!=0){
if(!digitalRead(rotary)){
free1=1;
}y--;
delay(10);
}
clear();
}
digitalWrite(Ypos, HIGH);
waiting();
Serial.println("Switch Pressed");
free1=0;
clear();
if(Ypos == 30){
level++;
March();
}else if(Ypos == 29 || Ypos == 31){
Ypos=22;
inOut();
level18();
}else{
QuickBack();
level = 1;}
}
void level19(){
Ypos=22;
updown=1;
speed1=10;
int flip = 0;
while(free1 == 0){
directionChange();
if(updown==1){
Ypos++;
}else if(updown==0){
Ypos--;
}
digitalWrite(Ypos, HIGH);
int y = speed1;
while(y!=0){
if(!digitalRead(rotary)){
free1=1;
}y--;
delay(10);
}
if(Ypos==30 || Ypos == 37 || Ypos == 23){
clear();
}
}
digitalWrite(Ypos, HIGH);
waiting();
Serial.println("Switch Pressed");
free1=0;
clear();
if(Ypos == 30){
level++;
March();
}else if(Ypos == 29 || Ypos == 31){
Ypos=22;
inOut();
level19();
}else{
QuickBack();
level = 1;}
}
void loop2(){
LtR();
RtLc();
if(level == 1){
Ypos=22;
updown=1;
level1();
}
if(level == 2){
level2();Serial.println("level2");
}if(level == 3){
level3();
}if(level == 4){
level4();
}if(level == 5){
level5();
}if(level == 6){
level6();
}if(level == 7){
level7();
}if(level == 8){
level8();
}if(level == 9){
level9();
}if(level == 10){
level10();
}if(level == 11){
level11();
}if(level == 12){
level12();
}if(level == 13){
level13();
}if(level == 14){
level14();
}if(level == 15){
level15();
}if(level == 16){
level16();
}if(level == 17){
level17();
}if(level == 18){
level18();
}if(level == 19){
level19();
}if(level == 20){
level20();
}
}
void loop(){
LtR();
LtRc();
level1();
if(level==2){
while(true){
loop2();
}
}
}
Comments
Please log in or sign up to comment.