xxxxxxxxxx
176
let aPressed = false;
let spacePressed = false;
let dPressed = false;
let startXPos = 15;
let startYPos = 350;
let lvl = 1;
let lvlplatX = [];
let lvlplatY = [];
var lvl1platX = [15, 75, 115, 115, 275, 350];
var lvl1platY = [350, 300, 225, 160, 140, 170];
var lvl2platX = [15, 50, 80, 125, 180, 225, 255, 300, 350];
var lvl2platY = [350, 300, 200, 160, 225, 250, 300, 200, 100];
var lvlEndX;
var lvlEndY;
var grav = 0.5;
var ground = 375;
var platforms = [];
let song;
function preload() {
song = loadSound('Music.mp3');
}
function setup() {
createCanvas(500, 500);
// Event listeners for key controls
document.addEventListener("keydown", keyDownChecker, false);
document.addEventListener("keyup", keyUpChecker, false);
loadLevel(lvl);
}
function draw() {
frameRate(60);
background(220);
// Display instructions based on the current level
if (lvl == 1) {
displayLevelInstructions("Use a and d to move and space to jump!");
} else if (lvl == 2) {
displayLevelInstructions("Now there are bad things, avoid them!");
}
// Handle jumping and movement
if (spacePressed && jumper.onPlatform) {
jumper.deltaY = -10;
jumper.onPlatform = false;
}
if (aPressed) {
jumper.x -= jumper.sideSpeed;
}
if (dPressed) {
jumper.x += jumper.sideSpeed;
}
// Apply gravity
if (!jumper.onPlatform) {
jumper.deltaY += grav;
jumper.y += jumper.deltaY;
} else {
jumper.deltaY = 0;
}
// Check for collisions with platforms
let hasJumperCollided = false;
let jumperCollisionPoint = jumper.y + jumper.size / 2;
for (let i = 0; i < platforms.length; i++) {
if (jumper.x + jumper.size / 2 > platforms[i].x && jumper.x - jumper.size / 2 < platforms[i].x + platforms[i].xSiz) {
let platformHalfYsiz = platforms[i].ySiz * 0.5;
let platformCenterY = platforms[i].y + platformHalfYsiz;
let distToPlatform = abs(jumperCollisionPoint - platformCenterY);
if (distToPlatform <= (platformHalfYsiz + jumper.deltaY)) {
jumper.y = platforms[i].y - jumper.size / 2;
jumper.deltaY = 0;
hasJumperCollided = true;
break;
}
}
}
jumper.onPlatform = hasJumperCollided;
// Ground collision check
if (jumper.y > ground - jumper.size / 2) {
jumper.y = ground - jumper.size / 2;
jumper.deltaY = 0;
jumper.onPlatform = true;
}
// Constrain jumper position to canvas
jumper.x = constrain(jumper.x, 0, width);
jumper.y = constrain(jumper.y, 0, height);
// Level transition check
if (jumper.x >= lvlEndX && jumper.x <= lvlEndX + 70 && jumper.y <= lvlEndY) {
lvl++;
if (lvl > 2) {
console.log("Game Completed!");
} else {
loadLevel(lvl);
}
}
// Draw the jumper (player character)
fill(200, 220, 0);
ellipse(jumper.x, jumper.y, jumper.size, jumper.size);
// Draw platforms
for (let platform of platforms) {
platform.display();
}
}
function loadLevel(level) {
platforms = []; // Reset platforms array
if (level == 1) {
lvlplatX = lvl1platX.slice(0);
lvlplatY = lvl1platY.slice(0);
lvlEndX = lvl1platX[5];
lvlEndY = lvl1platY[5] + jumper.size / 2;
} else if (level == 2) {
lvlplatX = lvl2platX.slice(0);
lvlplatY = lvl2platY.slice(0);
lvlEndX = lvl2platX[8] + 35;
lvlEndY = lvl2platY[8] + jumper.size / 2;
}
// Create platform objects
for (let i = 0; i < lvlplatX.length; i++) {
let newPlatform = new Platform(color(255, 0, 0), lvlplatX[i], lvlplatY[i], 70, 8);
platforms.push(newPlatform);
}
// Reset jumper's position
jumper.x = startXPos;
jumper.y = startYPos;
}
function displayLevelInstructions(txt) {
fill(0);
textAlign(CENTER);
textSize(20);
textFont('Comic Sans');
text(txt, width / 2, 100);
}
function keyDownChecker(e) {
if (e.keyCode == 65) {
aPressed = true;
} else if (e.keyCode == 68) {
dPressed = true;
} else if (e.keyCode == 32) {
spacePressed = true;
}
}
function keyUpChecker(e) {
if (e.keyCode == 65) {
aPressed = false;
} else if (e.keyCode == 68) {
dPressed = false;
} else if (e.keyCode == 32) {
spacePressed = false;
}
}