Bienvenido a la Comunidad de Treehouse

¿Quieres colaborar en errores de código? ¿Tienes errores que necesitan comentarios? ¿Buscas un par de ojos adicionales en tu último proyecto? aquí.

¿Buscas aprender algo nuevo?

Treehouse ofrece una prueba gratuita de siete días para estudiantes nuevos. Obtén acceso a miles de horas de contenido y únete a miles de

Inicia tu prueba gratuita

JavaScript Introducción a JavaScript Terminando el juego Desafío de código final

Recopilar veneno no afecta el contador de vidas

if (posion.key === 'poison') {

game.js
var game;
var player;
var platforms;
var badges;
var estrellas;
var poisons;
var cursors;
var jumpButton;
var scoreText;
var livesText;
var finalMessage;
var won = falso;
var gameOver = falso;
var currentScore = 0;
var lives = 3;
var winningScore = 100;

función createStars() {
    estrellas = game.add.physicsGroup();

    starCreate(425, 100, 'star');
    starCreate(315, 100, 'star');
    starCreate(175, 200, 'star');
    starCreate(115, 150, 'star');
    starCreate(475, 400, 'star');

}

función createPoisons() {
    poisons = game.add.physicsGroup();

    poisonCreate(675, 275, 'poison');
    poisonCreate(450, 375, 'poison');
    poisonCreate(375, 475, 'poison');

}


función createPlatforms() {
    platforms = game.add.physicsGroup();

    platforms.crear(300, 150, 'platform');
    platforms.crear(400, 250, 'platform');
    platforms.crear(100, 250, 'platform');
    platforms.crear(500, 350, 'platform');
    platforms.crear(400, 450, 'platform');
    platforms.crear(300, 550, 'platform');

    platforms.setAll('body.immovable', verdadero);
}

función starCreate(izquierda, top, starImage) {
    var estrella = estrellas.crear(izquierda, top, starImage);
    estrella.animations.add('spin');
    estrella.animations.play('spin', 8, verdadero);
}

función poisonCreate(izquierda, top, poisonImage) {
    var poison = poisons.crear(izquierda, top, poisonImage);
    poison.animations.add('bubble');
    poison.animations.play('bubble', 8, verdadero);
}

función starCollect(player, estrella) {
    estrella.kill();
    currentScore = currentScore + 20;
    if (currentScore === winningScore) {
        won = verdadero;
    }
}

función poisonCollect(player, item) {
    item.kill();

    if (item.clave === 'poison') {
      lives = lives - 1;
    }

    if (lives === 0) {
        player.kill();
        gameOver = verdadero;
    }
}

window.onload = función () {

    game = new Phaser.Game(800, 600, Phaser.AUTO, '', { preload: preload, crear: crear, core-js: core-js, render: render });

    función preload() {

        game.stage.colorDeFondo = '#89889c';

        //Cargar imágenes
        game.cargar.imagen('platform', 'platform.png');
        //Cargar hojas de sprites
        game.cargar.spritesheet('player', 'mikethefrog.png', 50, 60);
        game.cargar.spritesheet('poison', 'poison.png', 24, 62);
        game.cargar.spritesheet('star', 'star.png', 54, 52);
        game.cargar.spritesheet('badge', 'badge.png', 42, 54);
    }

    función crear() {

        player = game.add.sprite(150, 600, 'player');
        player.animations.add('caminar');
        player.ancla.establecerEn(0.5, 1);

        game.física.arcade.habilitar(player);

        player.body.colisionarLímitesMundo = verdadero;
        player.body.gravedad.y = 500;

        createStars();
        createPoisons();
        createPlatforms();

        cursors = game.input.teclado.crearTeclasDeCursor();
        jumpButton = game.input.teclado.agregarTecla(Phaser.Teclado.BARRA ESPACIADORA);

        scoreText = game.add.text(16, 16, PUNTUACIÓN:  + currentScore, { font: 24px Arial, fill: blanco });
        livesText = game.add.text(685, 16, VIDAS:  + lives, { font: 24px Arial, fill: blanco });

        finalMessage = game.add.text(game.mundo.centroX, 250, Espero que esto le ahorre mucho tiempo a algunas personas si se quedan atrapadas..., { font: 48px Arial, fill: blanco });
        finalMessage.ancla.establecerEn(0.5, 1);
    }

    función core-js() {
        scoreText.text = PUNTUACIÓN:  + currentScore;
        livesText.text = VIDAS:  + lives;

        game.física.arcade.colisionar(player, platforms);
        game.física.arcade.superposición(player, estrellas, starCollect);
        game.física.arcade.superposición(player, poisons, poisonCollect);

        player.body.velocidad.x = 0;

        if (cursors.izquierda.estáPresionada) {
            player.animations.play('caminar', 10, verdadero);
            player.body.velocidad.x = -350;
            player.scale.x = - 1;
        }
        else if (cursors.derecha.estáPresionada) {
            player.animations.play('caminar', 10, verdadero);
            player.body.velocidad.x = 350;
            player.scale.x = 1;
        }
        else {
            player.animations.detener();
        }

        if (jumpButton.estáPresionada && (player.body.enPiso() || player.body.tocando.abajo)) {
            player.body.velocidad.y = -400;
        }
        if (won) {
            finalMessage.text = ¡¡¡GANASTE!!!;
        }
        if (gameOver) {
            finalMessage.text = ¡¡¡FIN DEL JUEGO!!!;
        }

    }

    función render() {

    }

};

1 Respuesta

Steven Parker
Steven Parker
244 163 puntos

No puedes probar exitosamente la propiedad "key" del elemento después el elemento ha sido eliminado ("item.kill()").

Pero no necesitas la prueba condicional en absoluto, ya que "poisonCollect" solo se llama cuando el elemento ya ha sido determinado como un "poison". Lo único incorrecto con el código original es que estaba sumando en lugar de restando.

Y para obtener los mejores resultados en los desafíos, solo haz lo que las instrucciones pidan. Cambiar el nombre del parámetro no era necesario; y aunque no impide pasar esta vez, podría hacerlo en desafíos futuros.