2013-04-12 94 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