2013-04-12 57 views
0

我一直迴避在這裏張貼的東西,因爲我下定決心去解決它自己顯示的下一個對象,但我已經碰了壁。跳轉到和陣列

我真的一直在使用jQuery/Javascript很短的時間和小容量(基本動畫等),我給自己設置了一個挑戰(並幫助自己學習)來轉換我相當乏味的產品組合網站轉化爲基本的「點擊」或基於文本(ish)的遊戲,以更具交互性/創造性的方式展示我的插圖。

無論如何 - 要點。

我已經構建了有關不同領域的信息對象的數組,而我希望做的是基於該區域信息的每個區域關聯或者是方向(北,南)。

的數組:

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) 我正走在正確的道路上嗎? (我的問題可能來自缺乏經驗)

我感謝任何人都可以事先提出一個解決方案,以及任何建議是極大的讚賞。

謝謝你的時間。

回答

0

的方式你的設計非常簡單,將有限的情況下工作。 例如您只能爲北部的每個節點指定一個城市。如果兩個城市是城市A.

除本以北,雖然會發生什麼,這是可行的。 所以,當你點擊大廈北,你可以訪問

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"]); 
+0

myobject。[「key」]是無效的JavaScript語法。 –

+0

葉,錯別字已被修復。 –

+0

感謝您抽出寶貴時間回答,我仍在努力嘗試讓事情發生,當我得到解決方案時,我會給你一個提醒 - 再次感謝! – TheDeskoftheCaptain

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]; 
+0

用於消費一個答案回覆時間感謝堆,這是極大的讚賞,我必須要問 - 是沒有辦法,我可以使用 VAR curLocationName方式=領域[nameoftheSubpath] 我有區域的信息來了。從一個Json文檔中,所以我可以保持它的所有模塊化(以防萬一我想稍後添加它),我希望從Json文檔中提取對象名稱「cliff」或「building」,(我真的不知道我是否有意義) 再次,任何幫助,非常感謝,提前致謝! – TheDeskoftheCaptain

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]; 
} 
+0

非常感謝您的幫助!,我仍然在嘗試一切,如果還有其他問題,我會盡快回復您。 再次感謝! – TheDeskoftheCaptain