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