startGame minor refactoring
This commit is contained in:
parent
da9e0b188c
commit
235cb7776a
206
sketch.js
206
sketch.js
@ -49,17 +49,32 @@ function setup() {
|
||||
enemy_head_color: color("red"),
|
||||
enemy_body_color: color("red"),
|
||||
};
|
||||
startGame((full_start = true), (update_objects = true));
|
||||
startGame(level_start = true);
|
||||
}
|
||||
function startGame(full_start, update_objects) {
|
||||
function startGame(level_start) {
|
||||
floorPos_y = 432;
|
||||
cameraPosX = 0;
|
||||
// levels of depth where the character, collectable and enemies stand.
|
||||
groundPositions = [
|
||||
floorPos_y + (height - floorPos_y) / 6,
|
||||
floorPos_y + (3 * (height - floorPos_y)) / 6,
|
||||
floorPos_y + (5 * (height - floorPos_y)) / 6,
|
||||
];
|
||||
if (full_start) {
|
||||
gravity = 1;
|
||||
game_score = 0;
|
||||
finish_position_x = 2000;
|
||||
textSize(width / 20);
|
||||
flagpole = {
|
||||
x: finish_position_x,
|
||||
isReached: false,
|
||||
size_vert: 4,
|
||||
size_hor: 7,
|
||||
cell_size: 20,
|
||||
cell_size_v: 20,
|
||||
cell_size_h: 20,
|
||||
};
|
||||
|
||||
if (level_start) {
|
||||
gameChar = {
|
||||
x: width / 2,
|
||||
y: floorPos_y + (height - floorPos_y) / 6,
|
||||
@ -270,6 +285,90 @@ function startGame(full_start, update_objects) {
|
||||
}
|
||||
},
|
||||
};
|
||||
// Creating trees, clouds, mountains, canyons, collectables.
|
||||
{
|
||||
// Creating trees, clouds, mountains, canyons, collectables, platforms, enemies.
|
||||
for (i = 0; i < 150; i++) {
|
||||
trees_x[i] = random(-100, 10000);
|
||||
}
|
||||
for (i = 0; i < 100; i++) {
|
||||
clouds[i] = {
|
||||
x: random(-100, 10000),
|
||||
y: random(0, floorPos_y / 2),
|
||||
size: random(0.4, 2),
|
||||
};
|
||||
}
|
||||
// Latter mountains.
|
||||
for (i = 0; i < finish_position_x / 90; i++) {
|
||||
mountains[i] = {
|
||||
x: random(-200, finish_position_x + 200),
|
||||
width: random(60, 150),
|
||||
height: random(floorPos_y - 50, floorPos_y - 150),
|
||||
skew: random(-20, 20),
|
||||
};
|
||||
// To prevent spiky mountains which are quite ugly
|
||||
mountains[i].height = max(mountains[i].width, mountains[i].height);
|
||||
}
|
||||
// Start mountains.
|
||||
for (i = 0; i < 6; i++) {
|
||||
mountains[i] = {
|
||||
x: width / (i + 1.5),
|
||||
width: width / (i + random(2, 4)),
|
||||
height: height / (2 + 0.8 * i),
|
||||
skew: (random(-10, 20) * i) / 2,
|
||||
};
|
||||
}
|
||||
for (i = 0; i < 100; i++) {
|
||||
if (i == 0) {
|
||||
canyons[0] = {
|
||||
x: 700,
|
||||
width: 50,
|
||||
points: [],
|
||||
};
|
||||
} else {
|
||||
if (canyons[i - 1].x + 600 > finish_position_x) break;
|
||||
canyons[i] = {
|
||||
x: canyons[i - 1].x + 300 + 200 * random(0.5, 1),
|
||||
width: 50 + 30 * random(),
|
||||
points: [],
|
||||
};
|
||||
}
|
||||
}
|
||||
for (i = 0; i < 100; i++) {
|
||||
if (i == 0) {
|
||||
collectables[0] = {
|
||||
x: 600,
|
||||
y: groundPositions[0],
|
||||
size: 75,
|
||||
isFound: false,
|
||||
};
|
||||
} else {
|
||||
if (collectables[i - 1].x + 200 > finish_position_x) {
|
||||
break;
|
||||
}
|
||||
|
||||
collectables[i] = {
|
||||
x: collectables[i - 1].x + 50 + 100 * random(0.5, 1),
|
||||
y: groundPositions[
|
||||
floor(random(0, groundPositions.length))
|
||||
],
|
||||
size: 75,
|
||||
isFound: false,
|
||||
};
|
||||
// Checking whether the coin is over a canyon;
|
||||
// marking it as isFound (making it disabled) in case if.
|
||||
for (k = 0; k < canyons.length; k++) {
|
||||
if (
|
||||
canyons[k].x - canyons[k].width / 2 <
|
||||
collectables[i].x &&
|
||||
canyons[k].x + canyons[k].width / 2 > collectables[i].x
|
||||
) {
|
||||
collectables[i].isFound = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
gameChar.x = width / 2;
|
||||
gameChar.y = floorPos_y + (height - floorPos_y) / 6;
|
||||
@ -281,105 +380,6 @@ function startGame(full_start, update_objects) {
|
||||
gameChar.isLeft = false;
|
||||
gameChar.isRight = false;
|
||||
}
|
||||
|
||||
gravity = 1;
|
||||
game_score = 0;
|
||||
finish_position_x = 2000;
|
||||
|
||||
if (update_objects || full_start) {
|
||||
// Creating trees, clouds, mountains, canyons, collectables, platforms, enemies.
|
||||
for (i = 0; i < 150; i++) {
|
||||
trees_x[i] = random(-100, 10000);
|
||||
}
|
||||
for (i = 0; i < 100; i++) {
|
||||
clouds[i] = {
|
||||
x: random(-100, 10000),
|
||||
y: random(0, floorPos_y / 2),
|
||||
size: random(0.4, 2),
|
||||
};
|
||||
}
|
||||
// Latter mountains.
|
||||
for (i = 0; i < finish_position_x / 90; i++) {
|
||||
mountains[i] = {
|
||||
x: random(-200, finish_position_x + 200),
|
||||
width: random(60, 150),
|
||||
height: random(floorPos_y - 50, floorPos_y - 150),
|
||||
skew: random(-20, 20),
|
||||
};
|
||||
// To prevent spiky mountains which are quite ugly
|
||||
mountains[i].height = max(mountains[i].width, mountains[i].height);
|
||||
}
|
||||
// Start mountains.
|
||||
for (i = 0; i < 6; i++) {
|
||||
mountains[i] = {
|
||||
x: width / (i + 1.5),
|
||||
width: width / (i + random(2, 4)),
|
||||
height: height / (2 + 0.8 * i),
|
||||
skew: (random(-10, 20) * i) / 2,
|
||||
};
|
||||
}
|
||||
for (i = 0; i < 100; i++) {
|
||||
if (i == 0) {
|
||||
canyons[0] = {
|
||||
x: 700,
|
||||
width: 50,
|
||||
points: [],
|
||||
};
|
||||
} else {
|
||||
if (canyons[i - 1].x + 600 > finish_position_x) break;
|
||||
canyons[i] = {
|
||||
x: canyons[i - 1].x + 300 + 200 * random(0.5, 1),
|
||||
width: 50 + 30 * random(),
|
||||
points: [],
|
||||
};
|
||||
}
|
||||
}
|
||||
for (i = 0; i < 100; i++) {
|
||||
if (i == 0) {
|
||||
collectables[0] = {
|
||||
x: 600,
|
||||
y: groundPositions[0],
|
||||
size: 75,
|
||||
isFound: false,
|
||||
};
|
||||
} else {
|
||||
if (collectables[i - 1].x + 200 > finish_position_x) {
|
||||
break;
|
||||
}
|
||||
|
||||
collectables[i] = {
|
||||
x: collectables[i - 1].x + 50 + 100 * random(0.5, 1),
|
||||
y: groundPositions[
|
||||
floor(random(0, groundPositions.length))
|
||||
],
|
||||
size: 75,
|
||||
isFound: false,
|
||||
};
|
||||
// Checking whether the coin is over a canyon;
|
||||
// marking it as isFound (making it disabled) in case if.
|
||||
for (k = 0; k < canyons.length; k++) {
|
||||
if (
|
||||
canyons[k].x - canyons[k].width / 2 <
|
||||
collectables[i].x &&
|
||||
canyons[k].x + canyons[k].width / 2 > collectables[i].x
|
||||
) {
|
||||
collectables[i].isFound = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
flagpole = {
|
||||
x: finish_position_x,
|
||||
isReached: false,
|
||||
size_vert: 4,
|
||||
size_hor: 7,
|
||||
cell_size: 20,
|
||||
cell_size_v: 20,
|
||||
cell_size_h: 20,
|
||||
};
|
||||
text_size = width / 20;
|
||||
textSize(text_size);
|
||||
}
|
||||
function draw() {
|
||||
// -------- SKY ----------------
|
||||
@ -822,7 +822,7 @@ function keyPressed() {
|
||||
if (gameChar.curLives < 1 || flagpole.isReached) {
|
||||
if (keyCode == 32 /*Space*/) {
|
||||
/*Hard resets the game*/
|
||||
startGame((full_start = true), (update_objects = true));
|
||||
startGame((level_start= true), );
|
||||
}
|
||||
} else if (!gameChar.isPlummeting) {
|
||||
if (keyCode == 65 /*A*/) gameChar.isLeft = true;
|
||||
|
Loading…
Reference in New Issue
Block a user