Agregando Niveles
Un nivel es otro objeto JavaScript:
const Level1 = {
// Level definition.
};
Comencemos por escribir una descripción y un consejo para nuestro nivel:
const Level1 = {
description:
"You've entered the ancient castle of Eastwatch to escape from a blizzard. But it's deadly cold inside too.",
tip:
"Call `warrior.walk()` to walk forward in the Player's `playTurn` method.",
};
También necesitamos definir dos números: el bonus de tiempo y el puntaje experto. El bonus de tiempo es otorgado al jugador dependiendo de qué tan rápido complete el nivel (disminuye turno tras turno hasta alcanzar el cero). El puntaje experto, por otro lado, es utilizado para calcular la calificación del nivel (solo en modo épico). Cualquier puntaje superior o igual al puntaje experto obtendrá una calificación de S. Agreguemos esos números:
const Level1 = {
description:
"You've entered the ancient castle of Eastwatch to escape from a blizzard. But it's deadly cold inside too.",
tip:
"Call `warrior.walk()` to walk forward in the Player's `playTurn` method.",
timeBonus: 15,
aceScore: 10,
};
Estos dos números deberán ser afinados al probar la torre. Para esta guía, ya hemos hecho eso por ti.
Lo siguiente por hacer es definir el piso del nivel, comenzando por su tamaño:
const Level1 = {
description:
"You've entered the ancient castle of Eastwatch to escape from a blizzard. But it's deadly cold inside too.",
tip:
"Call `warrior.walk()` to walk forward in the Player's `playTurn` method.",
timeBonus: 15,
aceScore: 10,
floor: {
size: {
width: 8,
height: 1,
},
},
};
Luego, necesitamos posicionar las escaleras para que el Guerrero pueda moverse al siguiente nivel:
const Level1 = {
description:
"You've entered the ancient castle of Eastwatch to escape from a blizzard. But it's deadly cold inside too.",
tip:
"Call `warrior.walk()` to walk forward in the Player's `playTurn` method.",
timeBonus: 15,
aceScore: 10,
floor: {
size: {
width: 8,
height: 1,
},
stairs: {
x: 7,
y: 0,
},
},
};
Hablando de guerreros, definamos el Guerrero para este nivel:
const Level1 = {
description:
"You've entered the ancient castle of Eastwatch to escape from a blizzard. But it's deadly cold inside too.",
tip:
"Call `warrior.walk()` to walk forward in the Player's `playTurn` method.",
timeBonus: 15,
aceScore: 10,
floor: {
size: {
width: 8,
height: 1,
},
stairs: {
x: 7,
y: 0,
},
warrior: {
character: '@',
maxHealth: 20,
position: {
x: 0,
y: 0,
facing: 'east',
},
},
},
};
Con esto, el nivel está completo. Pero antes de continuar, definamos otro nivel:
const Level2 = {
description:
'The cold became more intense. In the distance, you see a pair of deep and blue eyes, a blue that burns like ice.',
tip:
"Use `warrior.feel().isEmpty()` to see if there's anything in front of you, and `warrior.attack()` to fight it. Remember, you can only do one action per turn.",
clue:
'Add an if/else condition using `warrior.feel().isEmpty()` to decide whether to attack or walk.',
timeBonus: 20,
aceScore: 26,
floor: {
size: {
width: 8,
height: 1,
},
stairs: {
x: 7,
y: 0,
},
warrior: {
character: '@',
maxHealth: 20,
position: {
x: 0,
y: 0,
facing: 'east',
},
},
},
};
Como las cosas comenzaron a ser más desafiantes para el jugador, esta vez hemos agregado una pista. Las pistas son opcionales y solo serán mostradas si el jugador lo solicita.
Ahora debemos agregar estos dos niveles a la torre. Los niveles son agregados al array levels
de la torre:
module.exports = {
name: 'Game of Thrones',
description:
'There is only one war that matters: the Great War. And it is here.',
levels: [Level1, Level2],
};
¡Magnífico! Pero como puedes haber notado, le pedimos al jugador que llame warrior.attack()
, warrior.feel()
y warrior.walk()
pero no le hemos enseñado al Guerrero a hacer nada de esto. ¡Hagámoslo a continuación!