import fisica.*; import processing.serial.*; PFont font; FWorld world; FCircle ball; FBox objective; FBox[] squares = new FBox[20]; float Zoom = 0.7;//Camera zoom. float gravX = 0;//Gravity on X. float gravY = 0;//Gravity on Y. float camAng = 0;//Camera angle. float objAng = 0;//Used on level 10 for the motion of the objective. float accel = 0;//Value of the accelerometer in X Axis given by arduino. int gameStatus = 1;//When 0 games stops. When in 1 game runs. int currentLevel = -1;//Level that is loaded. int plus = 0; float wind = 0;//Wind value. float tempIni = 0;//Temperature initial value given by arduino. boolean fire = false;//Fire power state. boolean init = true;//Determines if the level needs initiation. String msg = "";//Used to read level code. void setup() { size(500, 500, P3D);//Window size font = loadFont("BookmanOldStyle-Bold-48.vlw");//Font of text textAlign(CENTER);//Text align to center textFont(font, 70);//Font size fill(40);//Text fill color smooth();//Enabels smooths borders on all objects Fisica.init(this);//Fisica initiation world = new FWorld(-width, -height, width, height);//Set world boundaries world.setEdges(-width, -height, width, height);//Set world edges //Ball setup ball = new FCircle(40); ball.setFillColor(#005AAD); ball.setNoStroke(); //Objective setup objective = new FBox(20, 20); objective.setFillColor(#FF0000); objective.setStatic(true); } void draw() { background(255);//Background color camera(1, 1, (height/Zoom) / tan(PI*60.0 / 360.0), 1, 1, 0, 0, 1, 0);//Camera setup. A zoom is set. //println(arduino.digitalRead(6)); if (gameStatus == 1)//When game is running { //MouseKeyboard CTRL camAng += (mouseX-(width/2))*0.0001;//Calculates the camera angle wind = ((mouseX-(width/2))*3.61);//Calculates wind. //Level activation if (currentLevel == -1) level0(); if (currentLevel == 1) level1(); if (currentLevel == 2) level2(); if (currentLevel == 3) level3(); if (currentLevel == 4) level4(); if (currentLevel == 5) level5(); if (currentLevel == 6) level6(); if (currentLevel == 7) level7(); if (currentLevel == 8) level8(); if (currentLevel == 9) level9(); if (currentLevel == 10) level10(); if (currentLevel == 11) level11(); if (currentLevel == 12) level12(); if (currentLevel == 13) level13(); if (currentLevel == 14) level14(); if (currentLevel == 15) level15(); if (currentLevel == 16) level16(); if (ball.isResting()==true) { ball.adjustVelocity(-sin(camAng), -cos(camAng));//This helps the ball not to stuck in corners. } world.step();//Advances the world 1 step. } else { //When game is paused level name and code are displayed if (currentLevel == 0) text("Level 1\nRed + Blue = Success\nCode: (blabla)\n\nClick to start", 0, -200); if (currentLevel == 1) text("Level 2\nAre you kidding me?\nCode: (nope)\n\nClick to start", 0, -200); if (currentLevel == 2) text("Level 3\nBe gentle\nCode: (trouble)\n\nClick to start", 0, -200); if (currentLevel == 3) text("Level 4\nUse the gravity force\nCode: (yoda)\n\nClick to start", 0, -200); if (currentLevel == 4) text("Level 5\nGetting harder\nCode: (dizzy)\n\nClick to start", 0, -200); if (currentLevel == 5) text("Level 6\nThink, think and think\nCode: (iq)\n\nClick to start", 0, -200); if (currentLevel == 6) text("Level 7\nStop running\nCode: (freeze)\n\nClick to start", 0, -200); if (currentLevel == 7) text("Level 8\nNo more tequila for today\nCode: (gusano)\n\nClick to start", 0, -200); if (currentLevel == 8) text("Level 9\nJump around\nUse Mouse Y-Axsis\nCode: (fly)\n\nClick to start", 0, -200); if (currentLevel == 9) text("Level 10\nIt's alive\nCode: (bugger)\n\nClick to start", 0, -200); if (currentLevel == 10) text("Level 11\nA-maze-ing\nCode: (maze)\n\nClick to start", 0, -200); if (currentLevel == 11) text("Level 12\nDon't touch me\nCode: (walls)\n\nClick to start", 0, -200); if (currentLevel == 12) text("Level 13\nBall of fire\nUse SPACEBAR!\nCode: (fire)\n\nClick to start", 0, -200); if (currentLevel == 13) text("Level 14\nSuperMann\nCode: (marvel)\n\nClick to start", 0, -200); if (currentLevel == 14) text("Level 15\nLast but not least\nCode: (last)\n\nClick to start", 0, -200); if (currentLevel == 15) text("Congratulations\n\nYou have finished\nthe game\n\nClick to restart", 0, -200); } world.draw();//Draws world and all objects } void mousePressed() { if (gameStatus == 0) { //When game is paused this event is called when mouse is pressed currentLevel++;//Advancd to next level init = true;//Activate the initiation of the level gameStatus = 1;//Game is set to run camAng = 0;//Camera angle is set to 0 gravX = 0;//Gravity on X gravY = 0;//Gravity on Y ball.setVelocity(0, 0); ball.setFillColor(#005AAD);//Ball is set to blue } } void keyPressed() { if (int(key) == 32)//Spacebar is pressed, fire power is active. fire = true; if (currentLevel == -1) { if (key == ENTER) { if (msg.equals("blabla")) currentLevel = 1; if (msg.equals("nope")) currentLevel = 2; if (msg.equals("trouble")) currentLevel = 3; if (msg.equals("yoda")) currentLevel = 4; if (msg.equals("dizzy")) currentLevel = 5; if (msg.equals("iq")) currentLevel = 6; if (msg.equals("freeze")) currentLevel = 7; if (msg.equals("gusano")) currentLevel = 8; if (msg.equals("fly")) currentLevel = 9; if (msg.equals("bugger")) currentLevel = 10; if (msg.equals("maze")) currentLevel = 11; if (msg.equals("walls")) currentLevel = 12; if (msg.equals("fire")) currentLevel = 13; if (msg.equals("marvel")) currentLevel = 14; if (msg.equals("last")) currentLevel = 15; if (currentLevel !=-1) { world.remove(ball); world.remove(squares[0]); world.remove(squares[1]); world.remove(squares[2]); world.remove(squares[3]); world.remove(squares[4]); world.remove(squares[5]); world.remove(squares[6]); world.remove(squares[7]); world.remove(objective); init = true;//Activate the initiation of the level gameStatus = 1;//Game is set to run camAng = 0;//Camera angle is set to 0 gravX = 0;//Gravity on X gravY = 0;//Gravity on Y ball.setVelocity(0, 0); ball.setFillColor(#005AAD);//Ball is set to blue } msg = ""; } else { msg+=key; } } } void keyReleased() { if (int(key) == 32)//Spacebar is released, no fire power fire = false; } void level0()//First level. Welcome sign, instructions are displayed. { if (init == true)//Initiation the level { ball.setPosition(-300, 400);//Ball initial position world.add(ball); //Thrust pad 1 squares[0] = new FBox(200, 20); squares[0].setFillColor(#00ff00); squares[0].setStatic(true); squares[0].setPosition(0, 502); squares[0].setNoStroke(); world.add(squares[0]); squares[1] = new FBox(180, 10); squares[1].setStatic(true); squares[1].setPosition(0, 502); squares[1].setNoStroke(); world.add(squares[1]); //Thrust pad 2 squares[2] = new FBox(20, 200); squares[2].setFillColor(#00ff00); squares[2].setStatic(true); squares[2].setPosition(502, 0); squares[2].setNoStroke(); world.add(squares[2]); squares[3] = new FBox(10, 180); squares[3].setStatic(true); squares[3].setPosition(502, 0); squares[3].setNoStroke(); world.add(squares[3]); //Thrust pad 3 squares[4] = new FBox(200, 20); squares[4].setFillColor(#00ff00); squares[4].setStatic(true); squares[4].setPosition(0, -502); squares[4].setNoStroke(); world.add(squares[4]); squares[5] = new FBox(180, 10); squares[5].setStatic(true); squares[5].setPosition(0, -502); squares[5].setNoStroke(); world.add(squares[5]); //Thrust pad 4 squares[6] = new FBox(20, 200); squares[6].setFillColor(#00ff00); squares[6].setStatic(true); squares[6].setPosition(-502, 0); squares[6].setNoStroke(); world.add(squares[6]); squares[7] = new FBox(10, 180); squares[7].setStatic(true); squares[7].setPosition(-502, 0); squares[7].setNoStroke(); world.add(squares[7]); init = false; } textFont(font, 70); fill(0); text("Welcome to Smart-Ball", 0, -200);//Welcome text textFont(font, 55); fill(40); text("Controls", 0, -90); textFont(font, 45); //MouseKeyboard CTRL text("Rotate world = Mouse X-Axis("+(mouseX-(width/2))+")\nThrust pad = Mouse Y-Axis("+(height-mouseY)+")\nFire power = Space("+fire+")", 0, -30); squares[1].setFill((((height/2)-mouseY))+255, 255-(((height/2)-mouseY)), 0);//Change thrust pad color if (ball.isTouchingBody(squares[0]) == true) ball.adjustVelocity(0, -(height-mouseY)*2); squares[3].setFill((((height/2)-mouseY))+255, 255-(((height/2)-mouseY)), 0);//Change thrust pad color if (ball.isTouchingBody(squares[2]) == true) ball.adjustVelocity(-(height-mouseY)*2, 0); squares[5].setFill((((height/2)-mouseY))+255, 255-(((height/2)-mouseY)), 0);//Change thrust pad color if (ball.isTouchingBody(squares[4]) == true) ball.adjustVelocity(0, (height-mouseY)*2); squares[7].setFill((((height/2)-mouseY))+255, 255-(((height/2)-mouseY)), 0);//Change thrust pad color if (ball.isTouchingBody(squares[6]) == true) ball.adjustVelocity((height-mouseY)*2, 0); if (fire== true)//Blue color when fire power is inactive, red when is active ball.setFillColor(#ff0000);//Red else ball.setFillColor(#005AAD);//Blue textFont(font, 55); fill(0); text("Try it now!", 0, 240); textFont(font, 60); text("Click to start", 0, 330); textFont(font, 40); text("or write code and press enter", 0, 370); textFont(font, 60); rotateZ(camAng);//Rotates the camera gravX = sin(camAng); gravY = cos(camAng); world.setGravity(gravX*1000, gravY*1000);//Sets the gravity based on the camera angle if (mousePressed == true)//When mouse pressed level0 ends and level1 starts. All objects are removed { world.remove(ball); world.remove(squares[0]); world.remove(squares[1]); world.remove(squares[2]); world.remove(squares[3]); world.remove(squares[4]); world.remove(squares[5]); world.remove(squares[6]); world.remove(squares[7]); world.remove(objective); currentLevel++; gameStatus = 0;//Puse game } } void level1()//Red + Blue = Success (blabla) { if (init == true) { ball.setPosition(-300, 400); world.add(ball); objective.setPosition(0, -480); world.add(objective); init = false; } rotateZ(camAng);//Rotates the camera gravX = sin(camAng); gravY = cos(camAng); world.setGravity(gravX*800, gravY*800);//Sets gravity based on camera angle if (objective.isTouchingBody(ball) == true)//When ball and objective touch all objects are removed { world.remove(ball); world.remove(squares[0]); world.remove(objective); gameStatus = 0; } } void level2()//Are you kidding me? (nope) { if (init == true) { ball.setPosition(-300, 400); world.add(ball); objective.setPosition(480, 0); world.add(objective); squares[0] = new FBox(20, 400); squares[0].setFillColor(#000000); squares[0].setStatic(true); squares[0].setPosition(0, -300); squares[0].setNoStroke(); world.add(squares[0]); squares[1] = new FBox(20, 400); squares[1].setFillColor(#000000); squares[1].setStatic(true); squares[1].setPosition(0, 300); squares[1].setNoStroke(); world.add(squares[1]); init = false; } rotateZ(camAng);//Rotates the camera gravX = sin(camAng); gravY = cos(camAng); world.setGravity(gravX*800, gravY*800); if (objective.isTouchingBody(ball) == true) { world.remove(ball); world.remove(squares[0]); world.remove(squares[1]); world.remove(objective); gameStatus = 0; } } void level3()//Be gentle (trouble) { if (init == true) { ball.setPosition(-300, 400); world.add(ball); objective.setPosition(480, -480); world.add(objective); squares[0] = new FBox(20, 100); squares[0].setFillColor(#000000); squares[0].setStatic(true); squares[0].setPosition(350, -450); squares[0].setNoStroke(); world.add(squares[0]); squares[1] = new FBox(20, 100); squares[1].setFillColor(#000000); squares[1].setStatic(true); squares[1].setPosition(450, -350); squares[1].setNoStroke(); squares[1].adjustRotation(1.57); world.add(squares[1]); init = false; } rotateZ(camAng);//Rotates the camera gravX = sin(camAng); gravY = cos(camAng); world.setGravity(gravX*800, gravY*800); if (objective.isTouchingBody(ball) == true) { world.remove(ball); world.remove(squares[0]); world.remove(squares[1]); world.remove(objective); gameStatus = 0; } } void level4()//Use the gravity force (yoda) { if (init == true) { ball.setPosition(-300, 400); world.add(ball); objective.setPosition(200, 0); world.add(objective); squares[0] = new FBox(20, 400); squares[0].setFillColor(#000000); squares[0].setStatic(true); squares[0].setPosition(-350, -300); squares[0].setNoStroke(); world.add(squares[0]); init = false; } rotateZ(camAng);//Rotates the camera gravX = sin(camAng); gravY = cos(camAng); world.setGravity(gravX*800, gravY*800); if (objective.isTouchingBody(ball) == true) { world.remove(ball); world.remove(squares[0]); world.remove(objective); gameStatus = 0; } } void level5()//Getting harder (dizzy) { if (init == true) { ball.setPosition(-300, 400); world.add(ball); objective.setPosition(-200, 20); world.add(objective); squares[0] = new FBox(680, 20); squares[0].setFillColor(#000000); squares[0].setStatic(true); squares[0].setPosition(100, 0); squares[0].setNoStroke(); world.add(squares[0]); squares[1] = new FBox(20, 100); squares[1].setFillColor(#000000); squares[1].setStatic(true); squares[1].setPosition(100, 50); squares[1].setNoStroke(); world.add(squares[1]); squares[2] = new FBox(20, 80); squares[2].setFillColor(#000000); squares[2].setStatic(true); squares[2].setPosition(20, 100); squares[2].setNoStroke(); world.add(squares[2]); squares[3] = new FBox(20, 140); squares[3].setFillColor(#000000); squares[3].setStatic(true); squares[3].setPosition(-150, 0); squares[3].setNoStroke(); world.add(squares[3]); squares[4] = new FBox(400, 20); squares[4].setFillColor(#000000); squares[4].setStatic(true); squares[4].setPosition(-180, 130); squares[4].setNoStroke(); world.add(squares[4]); squares[5] = new FBox(400, 20); squares[5].setFillColor(#000000); squares[5].setStatic(true); squares[5].setPosition(-180, -130); squares[5].setNoStroke(); world.add(squares[5]); squares[6] = new FBox(20, 240); squares[6].setFillColor(#000000); squares[6].setStatic(true); squares[6].setPosition(-370, 0); squares[6].setNoStroke(); world.add(squares[6]); squares[7] = new FBox(20, 140); squares[7].setFillColor(#000000); squares[7].setStatic(true); squares[7].setPosition(20, -70); squares[7].setNoStroke(); world.add(squares[7]); squares[8] = new FBox(160, 20); squares[8].setFillColor(#000000); squares[8].setStatic(true); squares[8].setPosition(-220, 60); squares[8].setNoStroke(); world.add(squares[8]); squares[9] = new FBox(20, 120); squares[9].setFillColor(#000000); squares[9].setStatic(true); squares[9].setPosition(-300, 10); squares[9].setNoStroke(); world.add(squares[9]); init = false; } rotateZ(camAng);//Rotates the camera gravX = sin(camAng); gravY = cos(camAng); world.setGravity(gravX*800, gravY*800); if (objective.isTouchingBody(ball) == true) { world.remove(ball); world.remove(squares[0]); world.remove(squares[1]); world.remove(squares[2]); world.remove(squares[3]); world.remove(squares[4]); world.remove(squares[5]); world.remove(squares[6]); world.remove(squares[7]); world.remove(squares[8]); world.remove(squares[9]); world.remove(objective); gameStatus = 0; } } void level6()//Think, think and think (iq) { if (init == true) { ball.setPosition(-300, 400); world.add(ball); objective.setPosition(-200, 0); world.add(objective); squares[0] = new FBox(20, 140); squares[0].setFillColor(#000000); squares[0].setStatic(true); squares[0].setPosition(-225, 0); squares[0].setNoStroke(); world.add(squares[0]); squares[1] = new FBox(140, 20); squares[1].setFillColor(#000000); squares[1].setStatic(true); squares[1].setPosition(-165, -80); squares[1].setNoStroke(); world.add(squares[1]); squares[2] = new FBox(140, 20); squares[2].setFillColor(#000000); squares[2].setStatic(true); squares[2].setPosition(-165, 80); squares[2].setNoStroke(); world.add(squares[2]); squares[3] = new FBox(400, 20); squares[3].setFillColor(#000000); squares[3].setStatic(true); squares[3].setPosition(300, 0); squares[3].setNoStroke(); world.add(squares[3]); squares[4] = new FBox(20, 600); squares[4].setFillColor(#000000); squares[4].setStatic(true); squares[4].setPosition(200, 0); squares[4].setNoStroke(); world.add(squares[4]); init = false; } rotateZ(camAng);//Rotates the camera gravX = sin(camAng); gravY = cos(camAng); world.setGravity(gravX*800, gravY*800); if (objective.isTouchingBody(ball) == true) { world.remove(ball); world.remove(squares[0]); world.remove(squares[1]); world.remove(squares[2]); world.remove(squares[3]); world.remove(squares[4]); world.remove(objective); gameStatus = 0; } } void level7()//Stop running (freeze) { if (init == true) { ball.setPosition(-300, 400); world.add(ball); objective.setPosition(-200, 0); objective.setStatic(false); world.add(objective); squares[0] = new FBox(140, 20); squares[0].setFillColor(#000000); squares[0].setStatic(true); squares[0].setPosition(-425, 0); squares[0].setNoStroke(); world.add(squares[0]); squares[1] = new FBox(20, 140); squares[1].setFillColor(#000000); squares[1].setStatic(true); squares[1].setPosition(-165, -80); squares[1].setNoStroke(); world.add(squares[1]); squares[2] = new FBox(140, 20); squares[2].setFillColor(#000000); squares[2].setStatic(true); squares[2].setPosition(-165, 80); squares[2].setNoStroke(); world.add(squares[2]); squares[3] = new FBox(390, 20); squares[3].setFillColor(#000000); squares[3].setStatic(true); squares[3].setPosition(300, 0); squares[3].setNoStroke(); world.add(squares[3]); init = false; } rotateZ(camAng);//Rotates the camera gravX = sin(camAng); gravY = cos(camAng); world.setGravity(gravX*800, gravY*800); objective.adjustVelocity(gravX*(-20), gravY*(-20)); if (objective.isTouchingBody(ball) == true) { world.remove(ball); world.remove(squares[0]); world.remove(squares[1]); world.remove(squares[2]); world.remove(squares[3]); world.remove(objective); gameStatus = 0; objective.setStatic(true); } } void level8()//No more tequila for today (gusano) { if (init == true) { ball.setPosition(-300, 400); world.add(ball); objective.setPosition(-200, 0); world.add(objective); squares[0] = new FBox(20, 200); squares[0].setFillColor(#000000); squares[0].setStatic(true); squares[0].setPosition(-225, 20); squares[0].setNoStroke(); world.add(squares[0]); squares[1] = new FBox(140, 20); squares[1].setFillColor(#000000); squares[1].setStatic(true); squares[1].setPosition(-165, -80); squares[1].setNoStroke(); world.add(squares[1]); squares[2] = new FBox(340, 20); squares[2].setFillColor(#000000); squares[2].setStatic(true); squares[2].setPosition(0, 160); squares[2].setNoStroke(); squares[2].adjustRotation(0.6); world.add(squares[2]); squares[3] = new FBox(300, 20); squares[3].setFillColor(#000000); squares[3].setStatic(true); squares[3].setPosition(300, 0); squares[3].setNoStroke(); world.add(squares[3]); squares[4] = new FBox(20, 200); squares[4].setFillColor(#000000); squares[4].setStatic(true); squares[4].setPosition(0, -30); squares[4].setNoStroke(); squares[4].adjustRotation(0.6); world.add(squares[4]); init = false; } rotateZ(camAng);//Rotates the camera gravX = sin(camAng); gravY = cos(camAng); world.setGravity(gravY*800, gravX*800); if (objective.isTouchingBody(ball) == true) { world.remove(ball); world.remove(squares[0]); world.remove(squares[1]); world.remove(squares[2]); world.remove(squares[3]); world.remove(squares[4]); world.remove(objective); gameStatus = 0; } } void level9()//Jump around (fly) { if (init == true) { ball.setPosition(-300, 400); world.add(ball); objective.setPosition(400, -50); world.add(objective); //Thrust pad 1 squares[0] = new FBox(40, 20); squares[0].setFillColor(#00ff00); squares[0].setStatic(true); squares[0].setPosition(0, 502); squares[0].setNoStroke(); world.add(squares[0]); squares[1] = new FBox(15, 10); squares[1].setStatic(true); squares[1].setPosition(0, 502); squares[1].setNoStroke(); world.add(squares[1]); //Down square squares[2] = new FBox(400, 20); squares[2].setFillColor(#000000); squares[2].setStatic(true); squares[2].setPosition(300, -30); squares[2].setNoStroke(); world.add(squares[2]); //Up square squares[3] = new FBox(350, 20); squares[3].setFillColor(#000000); squares[3].setStatic(true); squares[3].setPosition(325, -120); squares[3].setNoStroke(); world.add(squares[3]); init = false; } squares[1].setFill((((height/2)-mouseY))+255, 255-(((height/2)-mouseY)), 0);//Change thrust pad color if (ball.isTouchingBody(squares[0]) == true) ball.adjustVelocity(0, -(height-mouseY)*2); world.setGravity(wind, 800); if (objective.isTouchingBody(ball) == true) { world.remove(ball); world.remove(squares[0]); world.remove(squares[1]); world.remove(squares[2]); world.remove(squares[3]); world.remove(objective); gameStatus = 0; } } void level10()//It's alive (bugger) { if (init == true) { ball.setPosition(-300, 400); world.add(ball); objective.setPosition(150, 0); world.add(objective); //Thrust pad squares[0] = new FBox(40, 20); squares[0].setFillColor(#00ff00); squares[0].setStatic(true); squares[0].setPosition(0, 502); squares[0].setNoStroke(); world.add(squares[0]); squares[1] = new FBox(15, 10); squares[1].setStatic(true); squares[1].setPosition(0, 502); squares[1].setNoStroke(); world.add(squares[1]); init = false; } squares[1].setFill((((height/2)-mouseY))+255, 255-(((height/2)-mouseY)), 0);//Change thrust pad color if (ball.isTouchingBody(squares[0]) == true) ball.adjustVelocity(0, -(height-mouseY)*2); world.setGravity(wind, 800); objAng += 0.05; objective.setPosition(sin(objAng)*200, (cos(objAng)*200)-200); if (objective.isTouchingBody(ball) == true) { world.remove(ball); world.remove(squares[0]); world.remove(squares[1]); world.remove(objective); gameStatus = 0; } } void level11()//A-maze-ing (maze) { if (init == true) { ball.setPosition(-300, 250); world.add(ball); objective.setPosition(180, -280); world.add(objective); squares[0] = new FBox(20, 400); squares[0].setFillColor(#000000); squares[0].setStatic(true); squares[0].setPosition(200, -300); squares[0].setNoStroke(); world.add(squares[0]); squares[1] = new FBox(20, 400); squares[1].setFillColor(#000000); squares[1].setStatic(true); squares[1].setPosition(-250, 300); squares[1].setNoStroke(); world.add(squares[1]); squares[2] = new FBox(700, 20); squares[2].setFillColor(#000000); squares[2].setStatic(true); squares[2].setPosition(30, -300); squares[2].setNoStroke(); world.add(squares[2]); squares[3] = new FBox(100, 20); squares[3].setFillColor(#000000); squares[3].setStatic(true); squares[3].setPosition(-290, 90); squares[3].setNoStroke(); world.add(squares[3]); squares[4] = new FBox(20, 300); squares[4].setFillColor(#000000); squares[4].setStatic(true); squares[4].setPosition(-340, 240); squares[4].setNoStroke(); world.add(squares[4]); squares[5] = new FBox(300, 20); squares[5].setFillColor(#000000); squares[5].setStatic(true); squares[5].setPosition(-40, 300); squares[5].setNoStroke(); world.add(squares[5]); squares[6] = new FBox(20, 600); squares[6].setFillColor(#000000); squares[6].setStatic(true); squares[6].setPosition(-40, 10); squares[6].setNoStroke(); world.add(squares[6]); squares[7] = new FBox(500, 20); squares[7].setFillColor(#000000); squares[7].setStatic(true); squares[7].setPosition(200, 10); squares[7].setNoStroke(); world.add(squares[7]); squares[8] = new FBox(20, 400); squares[8].setFillColor(#000000); squares[8].setStatic(true); squares[8].setPosition(300, 300); squares[8].setNoStroke(); world.add(squares[8]); init = false; } rotateZ(camAng);//Rotates the camera gravX = sin(camAng); gravY = cos(camAng); world.setGravity(gravX*800, gravY*800);//Sets gravity based on camera angle if (objective.isTouchingBody(ball) == true) { world.remove(ball); world.remove(squares[0]); world.remove(squares[1]); world.remove(squares[2]); world.remove(squares[3]); world.remove(squares[4]); world.remove(squares[5]); world.remove(squares[6]); world.remove(squares[7]); world.remove(squares[8]); world.remove(objective); gameStatus = 0; } } void level12()//Don't touch me\nCode: (walls) { if (init == true) { ball.setPosition(-300, 250); world.add(ball); objective.setPosition(-300, -400); world.add(objective); squares[0] = new FBox(20, 400); squares[0].setFillColor(#ffff00); squares[0].setStatic(true); squares[0].setPosition(200, -290); squares[0].setNoStroke(); world.add(squares[0]); squares[1] = new FBox(20, 395); squares[1].setFillColor(#00ff00); squares[1].setStatic(true); squares[1].setPosition(-250, 295); squares[1].setNoStroke(); world.add(squares[1]); squares[2] = new FBox(600, 20); squares[2].setFillColor(#ff0000); squares[2].setStatic(true); squares[2].setPosition(-200, -300); squares[2].setNoStroke(); world.add(squares[2]); squares[3] = new FBox(110, 20); squares[3].setFillColor(#0000ff); squares[3].setStatic(true); squares[3].setPosition(-295, 90); squares[3].setNoStroke(); world.add(squares[3]); squares[4] = new FBox(20, 280); squares[4].setFillColor(#00ff00); squares[4].setStatic(true); squares[4].setPosition(-340, 240); squares[4].setNoStroke(); world.add(squares[4]); squares[5] = new FBox(260, 20); squares[5].setFillColor(#ff0000); squares[5].setStatic(true); squares[5].setPosition(-40, 320); squares[5].setNoStroke(); world.add(squares[5]); squares[6] = new FBox(20, 600); squares[6].setFillColor(#00ff00); squares[6].setStatic(true); squares[6].setPosition(-40, 10); squares[6].setNoStroke(); world.add(squares[6]); squares[7] = new FBox(460, 20); squares[7].setFillColor(#ffff00); squares[7].setStatic(true); squares[7].setPosition(200, 10); squares[7].setNoStroke(); world.add(squares[7]); squares[8] = new FBox(20, 400); squares[8].setFillColor(#00ff00); squares[8].setStatic(true); squares[8].setPosition(300, 295); squares[8].setNoStroke(); world.add(squares[8]); squares[9] = new FBox(20, 400); squares[9].setFillColor(#0000ff); squares[9].setStatic(true); squares[9].setPosition(440, -70); squares[9].setNoStroke(); world.add(squares[9]); init = false; } rotateZ(camAng);//Rotates the camera gravX = sin(camAng); gravY = cos(camAng); world.setGravity(gravX*800, gravY*800);//Sets gravity based on camera angle if (ball.isTouchingBody(squares[0]) == true) if (ball.getX() < squares[0].getX()) ball.adjustVelocity(-600, 0); else ball.adjustVelocity(600, 0); if (ball.isTouchingBody(squares[1]) == true) if (ball.getX() < squares[1].getX()) ball.adjustVelocity(-200, 0); else ball.adjustVelocity(200, 0); if (ball.isTouchingBody(squares[2]) == true) if (ball.getY() < squares[2].getY()) ball.adjustVelocity(0, -1000); else ball.adjustVelocity(0, 1000); if (ball.isTouchingBody(squares[4]) == true) if (ball.getX() < squares[4].getX()) ball.adjustVelocity(-200, 0); else ball.adjustVelocity(200, 0); if (ball.isTouchingBody(squares[5]) == true) if (ball.getY() < squares[5].getY()) ball.adjustVelocity(0, -1000); else ball.adjustVelocity(0, 1000); if (ball.isTouchingBody(squares[6]) == true) if (ball.getX() < squares[6].getX()) ball.adjustVelocity(-200, 0); else ball.adjustVelocity(200, 0); if (ball.isTouchingBody(squares[7]) == true) if (ball.getY() < squares[7].getY()) ball.adjustVelocity(0, -600); else ball.adjustVelocity(0, 600); if (ball.isTouchingBody(squares[8]) == true) if (ball.getX() < squares[8].getX()) ball.adjustVelocity(-200, 0); else ball.adjustVelocity(200, 0); if (objective.isTouchingBody(ball) == true) { world.remove(ball); world.remove(squares[0]); world.remove(squares[1]); world.remove(squares[2]); world.remove(squares[3]); world.remove(squares[4]); world.remove(squares[5]); world.remove(squares[6]); world.remove(squares[7]); world.remove(squares[8]); world.remove(squares[9]); world.remove(objective); gameStatus = 0; } } void level13()//Ball of fire (fire) { if (init == true) { ball.setPosition(-300, 400); world.add(ball); objective.setPosition(480, -480); world.add(objective); squares[0] = new FBox(300, 20); squares[0].setFillColor(#000000); squares[0].setStatic(true); squares[0].setPosition(-342, 200); squares[0].setNoStroke(); world.add(squares[0]); squares[1] = new FBox(20, 300); squares[1].setFillColor(#000000); squares[1].setStatic(true); squares[1].setPosition(-200, 342); squares[1].setNoStroke(); world.add(squares[1]); init = false; } if (fire == true)//Blue color when fire power is inactive, red when is active ball.setFillColor(#ff0000);//Red else ball.setFillColor(#005AAD);//Blue if (ball.isTouchingBody(squares[0]) == true && fire == true) squares[0].setStatic(false); if (ball.isTouchingBody(squares[0]) == true && fire == false) { squares[0].setStatic(true); squares[0].setVelocity(0, 0); } if (ball.isTouchingBody(squares[1]) == true && fire == true) squares[1].setStatic(false); if (ball.isTouchingBody(squares[1]) == true && fire == false) { squares[1].setStatic(true); squares[1].setVelocity(0, 0); } rotateZ(camAng);//Rotates the camera gravX = sin(camAng); gravY = cos(camAng); world.setGravity(gravX*800, gravY*800); if (objective.isTouchingBody(ball) == true) { world.remove(ball); world.remove(squares[0]); world.remove(squares[1]); world.remove(objective); gameStatus = 0; } } void level14()//SuperMan (marvel) { if (init == true) { ball.setPosition(-300, 250); world.add(ball); objective.setPosition(180, -280); world.add(objective); squares[0] = new FBox(20, 600); squares[0].setFillColor(#000000); squares[0].setStatic(true); squares[0].setPosition(200, -190); squares[0].setNoStroke(); world.add(squares[0]); squares[1] = new FBox(20, 300); squares[1].setFillColor(#000000); squares[1].setStatic(true); squares[1].setPosition(-250, 350); squares[1].setNoStroke(); world.add(squares[1]); squares[2] = new FBox(900, 20); squares[2].setFillColor(#000000); squares[2].setStatic(true); squares[2].setPosition(30, -300); squares[2].setNoStroke(); world.add(squares[2]); squares[3] = new FBox(300, 20); squares[3].setFillColor(#000000); squares[3].setStatic(true); squares[3].setPosition(-290, 90); squares[3].setNoStroke(); world.add(squares[3]); squares[4] = new FBox(20, 500); squares[4].setFillColor(#000000); squares[4].setStatic(true); squares[4].setPosition(-340, 240); squares[4].setNoStroke(); world.add(squares[4]); squares[5] = new FBox(550, 20); squares[5].setFillColor(#000000); squares[5].setStatic(true); squares[5].setPosition(-40, 200); squares[5].setNoStroke(); world.add(squares[5]); squares[6] = new FBox(20, 800); squares[6].setFillColor(#000000); squares[6].setStatic(true); squares[6].setPosition(-40, 10); squares[6].setNoStroke(); world.add(squares[6]); squares[7] = new FBox(700, 20); squares[7].setFillColor(#000000); squares[7].setStatic(true); squares[7].setPosition(100, 10); squares[7].setNoStroke(); world.add(squares[7]); squares[8] = new FBox(20, 600); squares[8].setFillColor(#000000); squares[8].setStatic(true); squares[8].setPosition(300, 200); squares[8].setNoStroke(); world.add(squares[8]); init = false; } if (fire == true)//Blue color when fire power is inactive, red when is active ball.setFillColor(#ff0000);//Red else ball.setFillColor(#005AAD);//Blue if (ball.isTouchingBody(squares[0]) == true && fire == true) { squares[0].setStatic(false); squares[0].setFillColor(#ff0000); } if (ball.isTouchingBody(squares[0]) == true && fire == false) { squares[0].setStatic(true); squares[0].setVelocity(0, 0); squares[0].setFillColor(#000000); } if (ball.isTouchingBody(squares[1]) == true && fire == true) { squares[1].setStatic(false); squares[1].setFillColor(#ff0000); } if (ball.isTouchingBody(squares[1]) == true && fire == false) { squares[1].setStatic(true); squares[1].setVelocity(0, 0); squares[1].setFillColor(#000000); } if (ball.isTouchingBody(squares[2]) == true && fire == true) { squares[2].setStatic(false); squares[2].setFillColor(#ff0000); } if (ball.isTouchingBody(squares[2]) == true && fire == false) { squares[2].setStatic(true); squares[2].setVelocity(0, 0); squares[2].setFillColor(#000000); } if (ball.isTouchingBody(squares[3]) == true && fire == true) { squares[3].setStatic(false); squares[3].setFillColor(#ff0000); } if (ball.isTouchingBody(squares[3]) == true && fire == false) { squares[3].setStatic(true); squares[3].setVelocity(0, 0); squares[3].setFillColor(#000000); } if (ball.isTouchingBody(squares[4]) == true && fire == true) { squares[4].setStatic(false); squares[4].setFillColor(#ff0000); } if (ball.isTouchingBody(squares[4]) == true && fire == false) { squares[4].setStatic(true); squares[4].setVelocity(0, 0); squares[4].setFillColor(#000000); } if (ball.isTouchingBody(squares[5]) == true && fire == true) { squares[5].setStatic(false); squares[5].setFillColor(#ff0000); } if (ball.isTouchingBody(squares[5]) == true && fire == false) { squares[5].setStatic(true); squares[5].setVelocity(0, 0); squares[5].setFillColor(#000000); } if (ball.isTouchingBody(squares[6]) == true && fire == true) { squares[6].setStatic(false); squares[6].setFillColor(#ff0000); } if (ball.isTouchingBody(squares[6]) == true && fire == false) { squares[6].setStatic(true); squares[6].setVelocity(0, 0); squares[6].setFillColor(#000000); } if (ball.isTouchingBody(squares[7]) == true && fire == true) { squares[7].setStatic(false); squares[7].setFillColor(#ff0000); } if (ball.isTouchingBody(squares[7]) == true && fire == false) { squares[7].setStatic(true); squares[7].setVelocity(0, 0); squares[7].setFillColor(#000000); } if (ball.isTouchingBody(squares[8]) == true && fire == true) { squares[8].setStatic(false); squares[8].setFillColor(#ff0000); } if (ball.isTouchingBody(squares[8]) == true && fire == false) { squares[8].setStatic(true); squares[8].setVelocity(0, 0); squares[8].setFillColor(#000000); } rotateZ(camAng);//Rotates the camera gravX = sin(camAng); gravY = cos(camAng); world.setGravity(gravX*800, gravY*800);//Sets gravity based on camera angle if (objective.isTouchingBody(ball) == true) { world.remove(ball); world.remove(squares[0]); world.remove(squares[1]); world.remove(squares[2]); world.remove(squares[3]); world.remove(squares[4]); world.remove(squares[5]); world.remove(squares[6]); world.remove(squares[7]); world.remove(squares[8]); world.remove(objective); gameStatus = 0; } } void level15()//Last but nos least (last) { if (init == true) { ball.setPosition(-300, 400); world.add(ball); objective.setPosition(150, 0); world.add(objective); //Thrust pad squares[0] = new FBox(300, 20); squares[0].setFillColor(#00ff00); squares[0].setStatic(true); squares[0].setPosition(0, 500); squares[0].setNoStroke(); world.add(squares[0]); squares[1] = new FBox(280, 10); squares[1].setStatic(true); squares[1].setPosition(0, 500); squares[1].setNoStroke(); world.add(squares[1]); squares[2] = new FBox(20, 220); squares[2].setFillColor(#000000); squares[2].setStatic(true); squares[2].setPosition(-290, 0); squares[2].setNoStroke(); world.add(squares[2]); //Thrust pad squares[3] = new FBox(200, 20); squares[3].setFillColor(#00ff00); squares[3].setStatic(true); squares[3].setPosition(-400, 100); squares[3].setNoStroke(); world.add(squares[3]); squares[4] = new FBox(180, 10); squares[4].setStatic(true); squares[4].setPosition(-400, 100); squares[4].setNoStroke(); world.add(squares[4]); squares[5] = new FBox(500, 20); squares[5].setFillColor(#000000); squares[5].setStatic(true); squares[5].setPosition(-240, -300); squares[5].setNoStroke(); world.add(squares[5]); //Thrust pad squares[6] = new FBox(200, 20); squares[6].setFillColor(#00ff00); squares[6].setStatic(true); squares[6].setPosition(0, -200); squares[6].setNoStroke(); world.add(squares[6]); squares[7] = new FBox(180, 10); squares[7].setStatic(true); squares[7].setPosition(0, -200); squares[7].setNoStroke(); world.add(squares[7]); objAng = 0; plus = 5; init = false; } squares[1].setFill((((height/2)-mouseY))+255, 255-(((height/2)-mouseY)), 0);//Change thrust pad color if (ball.isTouchingBody(squares[0]) == true) ball.adjustVelocity(0, -(height-mouseY)); squares[4].setFill((((height/2)-mouseY))+255, 255-(((height/2)-mouseY)), 0);//Change thrust pad color if (ball.isTouchingBody(squares[3]) == true) ball.adjustVelocity(0, -(height-mouseY)); squares[7].setFill((((height/2)-mouseY))+255, 255-(((height/2)-mouseY)), 0);//Change thrust pad color if (ball.isTouchingBody(squares[6]) == true) ball.adjustVelocity(0, -(height-mouseY)); if (fire == true)//Blue color when fire power is inactive, red when is active ball.setFillColor(#ff0000);//Red else ball.setFillColor(#005AAD);//Blue if (ball.isTouchingBody(squares[2]) == true && fire == true) { squares[2].setStatic(false); squares[2].setFillColor(#ff0000); } if (ball.isTouchingBody(squares[2]) == true && fire == false) { squares[2].setStatic(true); squares[2].setVelocity(0, 0); squares[2].setFillColor(#000000); } if (ball.isTouchingBody(squares[5]) == true && fire == true) { squares[5].setStatic(false); squares[5].setFillColor(#ff0000); } if (ball.isTouchingBody(squares[5]) == true && fire == false) { squares[5].setStatic(true); squares[5].setVelocity(0, 0); squares[5].setFillColor(#000000); } ball.adjustVelocity(wind*0.02, 0); world.setGravity(0, 800); if (objAng > 450) plus = -plus; if (objAng < 0) plus = -plus; objAng += plus; objective.setPosition(objAng, -400); if (objective.isTouchingBody(ball) == true) { world.remove(ball); world.remove(squares[0]); world.remove(squares[1]); world.remove(squares[2]); world.remove(squares[3]); world.remove(squares[4]); world.remove(squares[5]); world.remove(squares[6]); world.remove(squares[7]); world.remove(objective); gameStatus = 0; } } void level16() { currentLevel= -1; gameStatus = 1;//Puse game }