Untitled
Anonymous
plain_text
03/26/2026 5:59 PM
2.8 KB
9
Indexable
// --- Setup Variables ---
var player = createSprite(50, 200, 20, 20);
player.shapeColor = "cyan";
var obstacles = createGroup();
var score = 0;
var gameSpeed = 5;
var gameState = "play";
// Gravity variables
var gravity = 1.5;
var velocity = 0;
var isGrounded = true;
function draw() {
if (gameState === "play") {
background(rgb(20, 20, 30)); // Dark neon background
// --- 1. Difficulty Scaling ---
// Every 500 frames, increase speed and change player color
gameSpeed = 5 + (score / 100);
// --- 2. Player Gravity Logic ---
if (keyWentDown("space") || mouseWentDown("leftButton")) {
gravity = -gravity; // Flip Gravity!
}
player.velocityY = gravity * 6;
// Keep player in bounds
if (player.y > 380) { player.y = 380; }
if (player.y < 20) { player.y = 20; }
// --- 3. Obstacle Spawning ---
if (World.frameCount % Math.max(10, (40 - Math.floor(score/10))) === 0) {
spawnObstacle();
}
// --- 4. Move and Clean Up Obstacles ---
for (var i = 0; i < obstacles.length; i++) {
var obs = obstacles.get(i);
obs.velocityX = -gameSpeed;
if (obs.x < -20) {
obs.destroy();
score++;
}
// Collision Check
if (player.isTouching(obs)) {
gameState = "over";
}
}
drawSprites();
// UI
fill("white");
textSize(20);
text("Score: " + score, 15, 30);
text("Speed: " + Math.round(gameSpeed), 15, 55);
} else if (gameState === "over") {
background("black");
fill("red");
textSize(40);
textAlign(CENTER);
text("GAME OVER", 200, 200);
textSize(20);
text("Final Score: " + score, 200, 240);
text("Press 'R' to Restart", 200, 280);
if (keyDown("r")) {
resetGame();
}
}
}
function spawnObstacle() {
// Randomly spawn on top or bottom
var yPos = Math.random() > 0.5 ? 380 : 20;
var obstacle = createSprite(420, yPos, 20, 40);
obstacle.shapeColor = "red";
obstacles.add(obstacle);
}
function resetGame() {
score = 0;
gameSpeed = 5;
obstacles.destroyEach();
player.y = 200;
gravity = 1.5;
gameState = "play";
}Editor is loading...
Leave a Comment