var x = 100;
var y = 400;
var speed = {
x: 0,
y: 0
};
var ground = 0;
var level = 4;
var keyfound = 0;
function setup() {
createCanvas(1200, 800);
}
function draw() {
ground = 0;
speed.y += 0.03;
background(150, 200, 255);
rectMode(CORNER);
fill(0);
if (level === 0) {
textSize(20);
text("Tutorial 1", 10, 30);
text("Use the left and right keys. < >", 100, 300);
text("Use the up arrow. ^", 600, 300);
text("Use the down arrow. V", 600, 550);
text("skip", 75, 600);
block(0, 450, 500, 0);
block(50, 550, 100, 1);
block(550, 450, 250, 0);
block(600, 650, 250, 1);
} else if (level == 1) {
textSize(20);
text("Level 1", 10, 30);
text("Let's get jumping.", 10, 500);
block(0, 450, 200, 0);
block(250, 400, 100, 0);
block(475, 500, 175, 0);
block(800, 650, 100, 0);
block(900, 600, 100, 0);
block(900, 550, 100, 0);
block(900, 500, 100, 0);
block(900, 450, 100, 0);
block(900, 400, 100, 0);
block(1100, 400, 50, 1);
} else if (level == 2) {
textSize(20);
text("Level 2", 10, 30);
text("Don't fall to fast.", 10, 500);
block(0, 450, 150, 0);
block(50, 550, 50, 0);
block(100, 750, 200, 0);
block(400, 750, 100, 0);
block(550, 700, 100, 0);
block(700, 650, 100, 0);
block(850, 600, 100, 0);
block(1100, 750, 50, 1);
} else if (level == 3) {
textSize(20);
text("Level 3", 10, 30);
text("Timing is key.", 10, 500);
block(0, 450, 200, 0);
block(330, 450, 140, 0);
block(600, 450, 100, 0);
block(625, 380, 50, 0);
block(575, 310, 50, 0);
block(675, 310, 50, 0);
block(625, 240, 50, 0);
block(725, 240, 50, 0);
block(525, 240, 50, 0);
block(525, 170, 250, 1);
} else if (level == 4) {
block(0, 450, 200, 0);
block(50, 300, 100, 1);
wall(250, 350, 300, 0);
wall(200, 455, 195, 0);
block(100, 700, 250, 0);
block(400, 700, 100, 0);
wall(400, 665, 35, 0);
block(500, 650, 100, 0);
block(500, 600, 100, 0);
block(500, 550, 100, 0);
block(500, 500, 100, 0);
block(500, 450, 100, 0);
block(750, 550, 100, 0);
wall(750, 490, 60, 0);
block(850, 500, 100, 0);
block(850, 450, 100, 0);
block(850, 400, 100, 0);
block(850, 350, 100, 0);
block(850, 300, 100, 0);
block(850, 250, 100, 0);
block(850, 200, 100, 0);
block(850, 150, 100, 0);
block(150, 100, 800, 0);
textSize(20);
text("Level 4", 10, 30);
text("Time for some walls.", 10, 500);
} else if (level == 5) {
block(0, 450, 400, 0);
doorkey(100, 475);
block(50, 500, 100, 0);
wall(50, 455, 45, 0);
wall(150, 455, 45, 0);
wall(200, 250, 200, 1);
block(250, 550, 100, 0);
block(250, 650, 100, 0);
block(250, 750, 300, 0);
wall(450, 685, 65, 0);
block(550, 750, 100, 1);
textSize(20);
text("Level 5", 10, 30);
text("locks and keys.", 10, 550);
}
rectMode(CENTER);
stroke(0);
fill(250, 250, 200);
rect(x, y, 20, 20);
x += speed.x;
y += speed.y;
if (ground == 1 && keyIsDown(UP_ARROW)) {
speed.y -= 2;
y -= 1;
}
if (keyIsDown(DOWN_ARROW) && ground == 1) {
speed.y += 0.02;
y += 1;
}
if (keyIsDown(RIGHT_ARROW) && speed.x < 1) {
speed.x += 0.02;
}
if (keyIsDown(LEFT_ARROW) && speed.x > -1) {
speed.x -= 0.02;
}
if (y > 800) {
x = 100;
y = 400;
speed.x = 0;
speed.y = 0;
keyfound = 0;
}
}
function block(blockx, blocky, blockwidth, end) {
if (y >= blocky - 10 && y <= blocky - 5 && x >= blockx - 10 && x <= blockx + blockwidth + 10) {
if (abs(speed.y) < 4) {
speed.y = 0;
ground = 1;
}
if (end == 1) {
level++;
x = 100;
y = 400;
speed.x = 0;
speed.y = 0;
keyfound = 0;
}
}
if (end == 1) {
stroke(0, 255, 0)
rect(blockx, blocky, blockwidth, 1);
} else {
stroke(0)
rect(blockx, blocky, blockwidth, 1);
}
stroke(0);
}
function wall(wallx, wally, wallheight, door) {
if (door == 1 && keyfound == 1) {} else {
if (x >= wallx - 10 && x <= wallx + 10 && y >= wally - 10 && y <= wally + wallheight + 10) {
speed.x = speed.x - speed.x * 2;
if (x > wallx) {
x = wallx + 10;
} else {
x = wallx - 10;
}
}
if (door == 1) {
stroke(255, 255, 0);
rect(wallx, wally, 1, wallheight);
} else {
stroke(0);
rect(wallx, wally, 1, wallheight);
}
stroke(0);
}
}
function doorkey(keyx, keyy) {
if (x >= keyx - 10 && x <= keyx + 10 && y >= keyy - 10 && y <= keyy + 10) {
keyfound = 1;
}
if (keyfound===0) {
rectMode(CENTER);
noFill();
stroke(255, 255, 0);
rect(keyx, keyy - 10, 10, 10);
rect(keyx, keyy - 10, 9, 9);
rect(keyx, keyy - 10, 8, 8);
line(keyx, keyy - 5, keyx, keyy + 11);
line(keyx - 1, keyy - 5, keyx - 1, keyy + 12);
line(keyx + 1, keyy - 5, keyx + 1, keyy + 10);
line(keyx, keyy, keyx + 3, keyy - 1);
line(keyx, keyy + 4, keyx + 3, keyy + 3);
line(keyx, keyy + 8, keyx + 3, keyy + 7);
rectMode(CORNER);
stroke(0);
fill(0);
}
}