0

自分で何とかしようと思っていたので、ここに何かを投稿することを避けてきましたが、壁にぶち当たりました。

私は実際に jQuery / Javascript を使ってほんの少しの時間、小さな容量 (基本的なアニメーションなど) でしか作業していません。 「ポイント アンド クリック」またはテキスト (っぽい) ベースのゲームで、私のイラストをよりインタラクティブでクリエイティブな方法で表示します。

とにかく - ポイントに。

さまざまな地域に関する情報を含むオブジェクトの配列を作成しました。私が望んでいたのは、地域情報に基づいて各地域に方向 (北、南) を関連付けることです。

配列:

var areas = { 

"outskirts" : {
"name" : "Dead city Outskirts",
"info" : "What you see around you",
"image" : "images/outskirts.jpg",

},
"path" : {
"name" : "A lonely Path",
"info" : "What you see around you",
"image" : "images/path.jpg"
},
"cliff" : {
"name" : "An Ultimatum",
"info" : "What you see around you",
"image": "images/cliff.jpg"

},
"city" : {
"name" : "Carcass of a City",
"info" : "What you see around you",
"image" : "images/city.jpg"
},
"building" : {
"name" : "Once a home",
"info" : "What you see around you",
"image" : "images/city.jpg"

}
};

たとえば、

郊外から始めて、北に移動できるという情報を取得し、「北」と書かれたアイテムを入力またはクリックすると、次のエリアである「パス」に切り替わります。

次に、パスに基づいてすべての情報を入力します (名前と情報など)。

次のようなオブジェクトに「出口」を追加すると思いました。

「出口」:{「北」:「道」、「南」:「崖」}、

これは、どの方向に移動できるかを推測するための鍵となる可能性があります。または、各エリアの方向に基づいて、真または偽のステートメントになる可能性もあります。

だから本当に私が求めているのは:

各エリア間を移動するにはどうすればよいですか? (outskirts.name から path.name に変更) 正しい道を進んでいますか? (私の問題は経験不足から来るかもしれません)

事前に解決策を提案できる人に感謝します。アドバイスをいただければ幸いです。

お時間をいただきありがとうございます。

4

3 に答える 3

0

私が理解しているように、あなたは次のようなことをしたいと思っています:

var area = areas['building']; // starting point

do {

   showCurrentArea(area)

   var direction = getInput(); // returns "north", "south", "west", "east", etc.

   area = moveFromArea(area, direction);

} while(true)

areas次のように定義されています。

var areas = {
areaID1: {name: '...', info:'...', image:'...', exits: { north: 'areaID1', south: 'areaID2', ...} }
areaID2: {name: '...', info:'...', image:'...', exits: { north: 'areaID2', south: 'areaID3', ...} }
areaID3: {name: '...', info:'...', image:'...', exits: { north: 'areaID2', south: 'areaID1', ...} },

}

どこmoveFromArea()で定義されますか:

function moveFromArea(fromArea, direction) {
    var areaName = fromArea.exits[direction]; 
    if ( !areaName){
        throw "Cannot go there";
    }
    return areas[areaName];
}
于 2013-04-12T22:29:58.463 に答える
0

設計方法は非常にシンプルで、限られた状況で機能します。たとえば、北のノードごとに 1 つの都市のみを指定できます。2 つの都市が都市 A の北にある場合はどうなりますか。

これを除いて、それは実行可能です。したがって、Building-North をクリックすると、

areas[areas[["building"]]["north"]]["name"]

ただし、値が未定義でないことを確認するためにチェックが必要です。

var areas = { 

"outskirts" : {
"name" : "Dead city Outskirts",
"info" : "What you see around you",
"image" : "images/outskirts.jpg",

},
"path" : {
"name" : "A lonely Path",
"info" : "What you see around you",
"image" : "images/path.jpg"
},
"cliff" : {
"name" : "An Ultimatum",
"info" : "What you see around you",
"image": "images/cliff.jpg"

},
"city" : {
"name" : "Carcass of a City",
"info" : "What you see around you",
"image" : "images/city.jpg"
},
"building" : {
"name" : "Once a home",
"info" : "What you see around you",
"image" : "images/city.jpg",
"north" : "city"
}
};
alert("JSON.newPrice:"+areas[areas[["building"]]["north"]]["name"]);
于 2013-04-12T22:24:20.783 に答える
0

あなたが崖にいて、「北に行く」ボタンをクリックしたとしましょう。実行されるコードは次のようになります。

var curLocationName = "cliff";
var direction = "north";

// Get our new location
var newLocationName = areas[curLocationName].exits[direction];

if(newLocationName === undefined) {
   console.log("You can't go that way!");
} else {
   console.log("You just went to the " + newLocationName);
}

var newLocation = areas[newLocationName];
于 2013-04-12T22:26:51.187 に答える