Level hinzufügen
Ein Level ist ein weiteres JavaScript-Objekt:
const Level1 = {
// Level definition.
};
Wir starten, indem wir eine Beschreibung und einen Tipp für unser Level schreiben:
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.",
};
Außerdem müssen wir zwei Zahlen definieren: Den Zeitbonus und den Ace-Score. Der Zeitbonus basiert darauf, wie schnell der Spieler das Level abschließen kann (d.h. der Bonus nimmt Zug für Zug ab bis er schließlich Null erreicht). Der Ace-Score hingegen wird dafür benutzt den Abschlussrang des Levels im Epic-Mode zu berechnen. Jeder Punktestand gleich oder größer als der Ace-Score gibt dem Spieler ein S-Rang. Also lass uns die beiden Zahlen hinzufügen:
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,
};
An diesen beiden Zahlen muss wahrscheinlich noch geschraubt werden, sobald das Level getestet wird. Für diesen Guide haben wir das bereits getan.
Als nächstes müssen wir die Etage dieses Levels definieren. Wir beginnen mit den Dimensionen:
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,
},
},
};
Dann können wir die Position der Treppen angeben, damit der Kämpfer das nächste Level erreichen kann:
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,
},
},
};
Apropos Kämpfer, dieser muss für dieses Level auch noch definiert werden:
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',
},
},
},
};
Und damit ist das Level bereits fertig. Aber bevor wir weitermachen, lass uns noch ein weiteres Level definieren:
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',
},
},
},
};
Da die Herausforderung für den Spieler ansteigt, sollten wir dieses Mal einen Hinweis hinzufügen. Hinweise sind optional und werden nur auf Wunsch des Spieler angezeigt.
Nun müssen wir die beiden Level dem Turm hinzufügen. Dafür fügen wir diese einfach dem levels
-Array des Turms hinzu:
module.exports = {
name: 'Game of Thrones',
description:
'There is only one war that matters: the Great War. And it is here.',
levels: [Level1, Level2],
};
Super! Wie dir aber vielleicht aufgefallen ist, fordern wir den Spieler dazu auf warrior.attack()
, warrior.feel()
und warrior.walk()
aufzurufen, obwohl wir dem Kämpfer noch keine dieser Aktionen beigebracht haben. Das sollten wir also direkt als nächstes erledigen!