/*SWING In this game, the goal is to swing to the other side. Use left and right to move. Hold right to get onto the rope with the right timing. Use down to jump off the rope at the end. If you fall, you die */ float playerPosX = 10; float playerPosY = 235; float ropeX = 200 + sin(frameCount/30.0)*100; float ropeY = 240 + abs(cos(frameCount/30.0)*40); float cloud1YPos = random(0, 400); float cloud2YPos = random(0, 400); float cloud3YPos = random(0, 400); float cloudSize1X = random(35, 60); float cloudSize1Y = random(15, 25); float cloudSize2X = random(35, 60); float cloudSize2Y = random(15, 25); float cloudSize3X = random(35, 60); float cloudSize3Y = random(15, 25); float cloud1Y = random(-10, 10); float cloud2Y = random(-10, 10); float cloud3Y = random(-10, 10); float moveCloud = 62; float moveCloud2 = 170; float moveCloud3 = 255; void setup() { size(400, 400); } void draw() { //Local Variables ropeX = 200 + sin(frameCount/30.0)*100; ropeY = 240 + abs(cos(frameCount/30.0)*40); //background background(252, 177, 58); for (float i = 255; i > -20000; i = i - 225) { moveCloud = moveCloud + 0.0005; drawCloud1( i + moveCloud); } for (float i = 170; i > -20000; i = i - 275) { moveCloud2 = moveCloud2 + 0.001; drawCloud2( i + moveCloud2); } for (float i = 5; i > -20000; i = i - 300) { moveCloud3 = moveCloud3 + 0.005; drawCloud3( i + moveCloud3); } //Platforms rectMode(CORNER); fill(0); rect(0, 260, 100, 40); rect(300, 260, 100, 40); drawRope(); //Restricting player to screen if (playerPosX - 15/2 < 0) { playerPosX = 0 + 15/2; } if (playerPosX + 15/2 > width) { playerPosX = width - 15/2; } //***Swinging Restrictions*** //Player standing on platforms if (playerPosX<100 || playerPosX>300) { drawPlayer(playerPosX, playerPosY); playerPosY = 235; //Player Swinging } else if (playerPosX>100 && playerPosX<300 && playerPosX>ropeX-15 && playerPosX<ropeX+15 && playerPosY>ropeY-15 && playerPosY<ropeY+15) { drawSwingingPlayer(playerPosX, playerPosY, ropeX, ropeY); playerPosX = ropeX - 10; playerPosY = ropeY + 2; } else { //player falling drawPlayer(playerPosX, playerPosY); playerPosY = playerPosY + 6; } //Player restart when falling off screen if (playerPosY>420) { playerPosX = 10; playerPosY = 235; } } void drawPlayer(float playerPosX, float playerPosY) { stroke(0); ellipseMode(CENTER); fill(0); //body line(playerPosX, playerPosY, playerPosX, playerPosY + 15); //arms line(playerPosX - 6, playerPosY + 10, playerPosX + 6, playerPosY + 10); //legs line(playerPosX, playerPosY + 15, playerPosX - 3, playerPosY + 25); line(playerPosX, playerPosY + 15, playerPosX + 3, playerPosY + 25); //head ellipse(playerPosX, playerPosY, 15, 15); } void drawSwingingPlayer(float playerPosX, float playerPosY, float ropeX, float ropeY) { stroke(0); fill(0); //body line(playerPosX, playerPosY, playerPosX, playerPosY + 15); //legs line(playerPosX, playerPosY + 15, playerPosX - 3, playerPosY + 25); line(playerPosX, playerPosY + 15, playerPosX + 3, playerPosY + 25); //arms line(playerPosX, playerPosY+10, ropeX, ropeY); //head ellipse(playerPosX, playerPosY, 15, 15); } void drawRope() { stroke(0); //Pole ellipseMode(CENTER); ellipse(200, 130, 20, 20); //rope float ropeXP = 200 + sin(frameCount/30.0)*40; float ropeYP = 240 + cos(frameCount/30.0)*20; noFill(); curve(200, 130, 200, 130, ropeX, ropeY, ropeXP, ropeYP); } //Clouds void drawCloud1(float cloudX1) { ellipseMode(CENTER); fill(255, 150); noStroke(); ellipse(cloudX1, cloud1YPos, cloudSize1X, cloudSize1Y); ellipse(cloudX1 + 15, cloud1YPos - cloud1Y, cloudSize2X, cloudSize2Y); } void drawCloud2(float cloudX2) { ellipse(cloudX2, cloud2YPos, cloudSize3X, cloudSize3Y); ellipse(cloudX2 + 12, cloud2YPos + cloud3Y, cloudSize2X, cloudSize2Y); ellipse(cloudX2 - 20, cloud2YPos + cloud2Y, cloudSize2X, cloudSize2Y); } void drawCloud3(float cloudX3) { ellipse(cloudX3, cloud3YPos, cloudSize1X, cloudSize2Y); ellipse(cloudX3 + 12, cloud3YPos + cloud1Y, cloudSize3X, cloudSize1Y); ellipse(cloudX3 - 20, cloud3YPos + cloud2Y, cloudSize2X, cloudSize1Y); } //***Controls*** void keyPressed() { if (key==CODED) { if (keyCode==LEFT) playerPosX = playerPosX - 3; } if (keyCode==RIGHT) { playerPosX = playerPosX + 3; } if (keyCode==DOWN && playerPosX==ropeX-10) { playerPosX = playerPosX + 30; } }