Javascript 在类似Zork的游戏中遇到JS问题-继续使用未定义文本而不是预期文本
我正在看一个关于如何用JavaScript和jQuery制作类似Zork的游戏的教程。到目前为止,它一直在工作,但当我试图用方向命令更改运行游戏的位置时,我得到的是未定义的位置,而不是新房间Javascript 在类似Zork的游戏中遇到JS问题-继续使用未定义文本而不是预期文本,javascript,function,Javascript,Function,我正在看一个关于如何用JavaScript和jQuery制作类似Zork的游戏的教程。到目前为止,它一直在工作,但当我试图用方向命令更改运行游戏的位置时,我得到的是未定义的位置,而不是新房间 var currentRoom = "start" ; function changeRoom(dir) { if(rooms[currentRoom].directions[dir] !== undefined) { currentRoom = rooms[currentRoom].dire
var currentRoom = "start" ;
function changeRoom(dir) {
if(rooms[currentRoom].directions[dir] !== undefined) {
currentRoom = rooms[currentRoom].directions[dir];
$('#game-text').append("<p>" + rooms[currentRoom].description + "</p>");
} else {
$('#game-text').append("<p> You cannot go that way </p>");
}
}
var currentRoom=“开始”;
功能更衣室(dir){
if(房间[currentRoom]。方向[dir]!==未定义){
currentRoom=房间[currentRoom]。方向[dir];
$(“#游戏文本”)。追加(“”+房间[currentRoom]。说明+””;
}否则{
$(“#游戏文本”).append(你不能走那条路”;
}
}
编辑:此代码位于上述代码之后
$(document).ready(function(){
$('#game-text').append("<p>" + rooms.start.description + "</p>");
$(document).keypress(function(key){
if(key.which === 13 && $('#user-input').is(':focus')){
var value = $('#user-input').val().toLowerCase();
switch(value) {
case "north":
changeRoom("north");
break;
case "south":
changeRoom("south");
break;
case "east":
changeRoom("east");
break;
case "west":
changeRoom("west");
break;
default:
alert("Invalid move!")
}
}
})
})
$(文档).ready(函数(){
$(“#游戏文本”)。追加(“”+rooms.start.description+””;
$(文档)。按键(功能(键){
if(key.which===13&&$(“#用户输入”)是(“:焦点”){
var value=$(“#用户输入”).val().toLowerCase();
开关(值){
“北”案:
更衣室(“北”);
打破
“南方”案:
更衣室(“南”);
打破
“东”案:
更衣室(“东”);
打破
“西部”案:
更衣室(“西”);
打破
违约:
警报(“无效移动!”)
}
}
})
})
我认为这与这部分代码有关。“你不能走那条路”的信息在应该走的时候出现;但是我没有得到我进入的房间的描述——只有一条未定义的信息。抱歉,如果我不清楚,这是我第一次尝试制作一个游戏,我对JavaScript知之甚少
编辑:这是两个“房间”
var房间={
“开始”:{
“描述”:“这是一个阳光明媚的日子,非常适合散步\
走路时,你会遇到一个十字路口\
你可以去北、南、东或北\
韦斯特,你选择哪条路,
“指示”:{
“北”:“死角”,
“西方”:“捷径”,
“东方”:“花园”,
“南”:“家”
}
“花园”:{
“描述”:“啊,正确的道路,我看到你选择了漫长的道路\
穿过洛夫利花园的路“,
“指示”:{
“西部”:“开始”,
“东”:“死角”
}
},
我们需要查看更多代码以提供帮助。您可以包括房间设置为什么,以及目录设置为什么?是类型条件不等于!==?您尝试过传统的不等于!=?调试器对房间[currentRoom]的值说了什么.description
是吗?可能它真的没有定义。请阅读。@JasperBirkeneder让我们非常清楚。调试器说没有错误
这不是调试器所说的。您是否在有问题的行上设置了断点以检查该行上的变量?哪些变量没有预期的值?
var rooms = {
"start": {
"description": "It is a sunny day, perfect for a walk!\
While walking, you come across an intersection;\
you can go <b>North</b>, <b>South</b>, <b>East</b> or\
<b>West</b>, which way do you choose?",
"directions": {
"north": "deadend",
"west": "shortcut",
"east": "garden",
"south": "home"
}
"garden": {
"discription": "Ahh the right path, I see you choose the long\
way around which leads through a lovley garden",
"directions": {
"west": "start",
"east": "deadend"
}
},