2017-11-18 10 views
0

私はテキストアドベンチャーをコーディングしようとする初心者です。私の知識は限られているので、私がやっていることの全体を説明しなければならないと感じています。オブジェクトコンストラクタを使用するときにさまざまなオブジェクトプロパティを定義する

ゲームは部屋の周りで動作します。大量の部屋は部屋コンストラクタ(部屋)を介して配列(roomBase)内に作成されます。部屋は配列内に格納されているので、部屋はシャッフルできます。ルームの位置がランダムなので、プレイヤーが入っている部屋はcurrentRoomというオブジェクトにコピーされ、プレーヤー/コードの残りの部分がその場所とやりとりすることができます。このシステムは、部屋に敵がいるかどうかにかかわらず、プレイヤーが侵入したときに部屋の説明テキストを保持するために働いていますが、「look」コマンドを実装しようとすると、正しい方法を見つけることができませんそれをやる。理想的には、currentRoomでコピーおよび参照できるルームオブジェクト内のプロパティであることが可能な、「見える」ことのさまざまな説明が必要です。私は単一のオブジェクトでこれを行う方法を見ることができます、私はコンストラクタが関与しているときにこれを行う方法を確信しています。

以下は、ソリューションが理想的な世界にあるものです。このようなことができる方法はありますか?私の問題についてのお詫び

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

:だから、あなたが行うことができます

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

。あなたは書式を修正して、あなたが何を意味するのか、さまざまな説明のようなIDを意味するサンプルを与えてください。 –

答えて

0

あなたは簡単のように、コンストラクタにオブジェクトを渡すことができますあなたの現在のコードは無効です

new Room("whatever", { sword:"whatever", vines:"whatever"}) 
関連する問題