2017-11-18 3 views
0

Ich bin ein Anfänger, der versucht, ein Textabenteuer zu programmieren. Mein Wissen ist begrenzt, deshalb muss ich das ganze was ich mache erklären.Unterschiedliche Objekteigenschaften bei Verwendung eines Objektkonstruktors definieren

Das Spiel funktioniert um Räume herum. Eine große Anzahl von Räumen wird innerhalb eines Arrays (roomBase) durch einen Raumkonstrukteur (Room) hergestellt. Die Räume sind in einem Array gespeichert, so dass die Räume gemischt werden können. Da die Räume zufällige Positionen haben, wird der Raum, in dem sich der Spieler befindet, in ein Objekt namens currentRoom kopiert, so dass der Spieler/Rest des Codes damit interagieren kann. Dieses System hat funktioniert, um den Beschreibungstext der Räume zu halten, wenn der Spieler einen betritt und wahr/false, ob es Feinde im Raum gibt, aber wenn ich versuche, einen "Blick" -Befehl zu implementieren, kann ich nicht den richtigen Weg finden TU es. Idealerweise hätte ich gerne unterschiedliche Beschreibungen von "Aussehen" fähigen Dingen als Eigenschaften in den Raumobjekten, die in currentRoom kopiert und referenziert werden können. Ich kann sehen, wie man das in einem einzelnen Objekt macht, ich bin nur unsicher, wie man das macht, wenn ein Konstruktor involviert ist.

Unten ist, was die Lösung in einer idealen Welt wäre. Gibt es eine Möglichkeit, so etwas zu tun? Entschuldigung für meine noob Frage.

function Room(roomEntry,desc) { 
    this.roomEntry = roomEntry; 
    this.desc = {desc} 
} 

var roomBase = [ 
room0 = new Room(
"You enter a dark room. Vines cover the walls and you notice a hilt sticking out the ground.", 
"sword:"With a closer look you find the sword is stuck.",vines:"Thick vines that you've never seen the likes of before."") 
room1 = new Room() 
room2 = new Room() 
//etc 
]; 

var currentRoom = new Object({}); 
currentRoom.roomEntry = "foo"; 
currentRoom.desc = {}; 

currentRoom = roomBase[0]; 

alert(currentRoom.desc.sword); 
+0

Ihre aktuellen Code ungültig ist. Könnten Sie bitte die Formatierung korrigieren und ein Beispiel geben, was Sie mit "id wie eine variierende Anzahl von Beschreibungen" meinen, insbesondere, wo Sie es verwenden werden –

Antwort

0

Sie könnte leicht ein Objekt an den Konstruktor übergeben, wie:

class Room { 
    constructor(roomEntry, desc){ 
    this.roomEntry = roomEntry; 
    this.desc = desc; 
    } 
} 

So können Sie tun:

new Room("whatever", { sword:"whatever", vines:"whatever"}) 
Verwandte Themen