Добавление Уровней
Уровень это ещё один JavaScript объект:
const Level1 = {
// Level definition.
};
Начнём с того, что придумаем описание и подсказки для нашего уровня:
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.",
};
Также, нам необходимо определить два числовых параметра для очков бонуса времени и "очков высшего балла". Очки бонуса за время, начисляются игроку в зависимости от того, на сколько быстро он справился с уровнем (бонус уменьшается с каждым ходом, пока не достигнет нуля). "Очки высшего балла", напротив, вычисляются в зависимости от сложности уровня (только в "epic mode"). Набранные очки большие или равные "очкам высшего балла", получают категорию "S". Давайте присвоим эти значения:
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,
};
Эти два числовых параметра должны быть хорошо отлажены при тестировании "tower". Но для этого руководства мы удовлетворимся этими значениями.
Следующее, что необходимо сделать, это разметить уровень, начиная с его размера:
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,
},
},
};
Затем, мы должны определить место для лестницы, чтобы наш Воин смог перейти на следующий уровень:
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,
},
},
};
Кстати о Воине... Давайте разместим его на этом уровне:
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',
},
},
},
};
Со всем этим, можно считать что проектирование уровня завершено. Но перед тем, как продолжить, как на счёт того, чтобы сделать ещё один:
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',
},
},
},
};
Как только дела у нашего игрока будут становиться хуже, наступает время добавить подсказку. Подсказки не обязательны, и будут отображаться только по желанию игрока.
Теперь нам нужно добавить наши два уровня в Башню. Уровни добавлятся в массив Башни levels
:
module.exports = {
name: 'Game of Thrones',
description:
'There is only one war that matters: the Great War. And it is here.',
levels: [Level1, Level2],
};
Превосходно! Но, как вы могли заметить, мы предлагаем игроку вызывать способности warrior.attack()
, warrior.feel()
, и warrior.walk()
, но мы ещё не объяснили нашему Воину, как их использовать. Давайте сделаем это нашим следующим шагом!