当分数变为 200 时结束 p5js 游戏

Ending a p5js game when the score becomes 200

我做了一个小的 trex 游戏,但我在这里遇到了一些麻烦。当分数变为 300 时,游戏结束。我不确定我应该怎么做。我尝试的是制作一个 if 条件并给它分数 === 和分数 = 200,游戏应该结束。谢谢。 (另外我在 7 个月前写了这段代码,我只是在这里进行一些改进)


var trex, trex_running, trex_collided;
var ground, invisibleGround, groundImage;
var PLAY = 1;
var END = 0;
var gameState = PLAY;
var gameOver, restart, gameOverImage, restartImage;
var score = 0;
var cloudsGroup, cloudImage;
var obstaclesGroup, obstacle1, obstacle2, obstacle3, obstacle4, obstacle5, obstacle6;
//var score;

function preload() {
    trex_running = loadAnimation("Screen Shot 2021-04-05 at 8.47.52 PM.png");
    trex_collided = loadImage("trex_collided.png");
    restartImage = loadImage("restart.png");
    gameOverImage = loadImage("gameOver.png");
    groundImage = loadImage("ground2.png");
    cloudImage = loadImage("cloud.png");
    obstacle1 = loadImage("obstacle1.png");
    obstacle2 = loadImage("obstacle2.png");
    obstacle3 = loadImage("obstacle3.png");
    obstacle4 = loadImage("obstacle4.png");
    obstacle5 = loadImage("obstacle5.png");
    obstacle6 = loadImage("obstacle6.png");
}

function setup() {
    createCanvas(600, 200);
    trex = createSprite(50, 180, 20, 50);
    trex.addAnimation("running", trex_running);
    trex.scale = 0.1;
    ground = createSprite(200, 180, 400, 20);
    ground.addImage("ground", groundImage);
    ground.x = ground.width / 2;
    ground.velocityX = -(4 + 3 * score / 100);
    invisibleGround = createSprite(200, 190, 400, 10);
    invisibleGround.visible = false;
    cloudsGroup = new Group();
    obstaclesGroup = new Group();
    gameOver = createSprite(300, 100, 10, 10);
    gameOver.addImage(gameOverImage);
    gameOver.scale = 0.5;
    gameOver.visible = false;
    restart = createSprite(300, 140, 10, 10);
    restart.addImage(restartImage);
    restart.scale = 0.5
  restart.visible = false;
}

function draw() {
    background("white");
    text("Score: " + score, 500, 50);
    if (gameState == PLAY) {
        score = score + Math.round(getFrameRate() / 60);
        if (keyDown("space")) {
            trex.velocityY = -10;
        }
        trex.velocityY = trex.velocityY + 0.8
        if (ground.x < 0) {
            ground.x = ground.width / 2;
        }
        trex.collide(invisibleGround);
        spawnClouds();
        spawnObstacles();
        if (obstaclesGroup.isTouching(trex)) {
            gameState = END;
        }
    } else if (gameState === END) {
        gameOver.visible = true;
        restart.visible = true;
        //set velcity of each game object to 0
        ground.velocityX = 0;
        trex.velocityY = 0;
        obstaclesGroup.setVelocityXEach(0);
        cloudsGroup.setVelocityXEach(0);
        //change the trex animation
        trex.addAnimation("trex_collided", trex_collided);
        //set lifetime of the game objects so that they are never destroyed
        obstaclesGroup.setLifetimeEach(-1);
        cloudsGroup.setLifetimeEach(-1);
    }
    if (mousePressedOver(restart)) {
        reset();
  }
  textSize(22);
  text('Mrs K, survive all the obstacles, and save the students!', 10, 30);
    drawSprites();
}

function spawnClouds() {
    //write code here to spawn the clouds
    if (frameCount % 60 === 0) {
        var cloud = createSprite(600, 120, 40, 10);
        cloud.y = Math.round(random(80, 120));
        cloud.addImage(cloudImage);
        cloud.scale = 0.5;
        cloud.velocityX = -3;
        //assign lifetime to the variable
        cloud.lifetime = 200;
        //adjust the depth
        cloud.depth = trex.depth;
        trex.depth = trex.depth + 1;
        //add each cloud to the group
        cloudsGroup.add(cloud);
    }
}

function spawnObstacles() {
    if (frameCount % 60 === 0) {
        var obstacle = createSprite(600, 165, 10, 40);
    obstacle.velocityX = -(4 + 3 * score / 100);
    //generate random obstacles
        var rand = Math.round(random(1, 6));
        switch (rand) {
            case 1:
                obstacle.addImage(obstacle1);
                break;
            case 2:
                obstacle.addImage(obstacle2);
                break;
            case 3:
                obstacle.addImage(obstacle3);
                break;
            case 4:
                obstacle.addImage(obstacle4);
                break;
            case 5:
                obstacle.addImage(obstacle5);
                break;
            case 6:
                obstacle.addImage(obstacle6);
                break;
            default:
                break;
        }
        //assign scale and lifetime to the obstacle           
        obstacle.scale = 0.5;
        obstacle.lifetime = 300;
        //add each obstacle to the group
        obstaclesGroup.add(obstacle);
    }
}

function reset() {
    gameState = PLAY;
    gameOver.visible = false;
    restart.visible = false;
    obstaclesGroup.destroyEach();
    cloudsGroup.destroyEach();
    trex.addAnimation("trex", trex_running);
    score = 0;
}

您在 draw 函数中尝试过吗?你可以做类似的事情,

if (mousePressedOver(restart) || score >= 200) {
    reset();
}