在数组中选择对象时出错
Error with selecting objects within an array
我正在为一个棋盘游戏应用程序编写代码。我写了一段简单的代码,用mathrandom来确定玩家的位置。mathrrandom的结果告诉一个数组从4个对象(玩家)中选择1个,并将结果添加到他们的位置。我还在函数的开头添加了一段代码,以便在数组中向上移动并选择下一个玩家,这样每次你点击"掷骰子"按钮时,另一个玩家的位置就会更有价值。
问题是,在我遍历了整个数组并回到[0]位置后,它会运行两次代码,所以第一个玩家得到两次函数,而所有其他玩家只得到一次。
这是我的代码:
var players = [
{name: "Player 1", positie: 0},
{name: "Player 2", positie: 0},
{name: "Player 3", positie: 0},
{name: "Player 4", positie: 0}
];
var position = 0;
var currentPlayer = players[position];
function rolClick(){
currentPlayer = players[position++];
if (position > players.length){
position = 0;
currentPlayer = players[position];
}
var rollen = Math.floor(Math.random() * 6) + 1;
if (rollen === 1){
currentPlayer.positie += 1;
console.log("het is 1")
}else if(rollen === 2){
currentPlayer.positie += 2;
console.log("het is 2")
}else if(rollen === 3){
currentPlayer.positie += 3;
console.log("het is 3")
}else if(rollen === 4){
currentPlayer.positie += 4;
console.log("het is 4")
}else if(rollen === 5){
currentPlayer.positie += 5;
console.log("het is 5")
}else if(rollen === 6){
currentPlayer.positie += 6;
console.log("het is 6")
}else {
console.log("Oops, er is iets fout gegaan.")
};
console.log(currentPlayer);
};
HTML
<button>
Rol de dobbelsteen
</button>
<span></span>
Javascript
var players = [
{name: "Player 1", positie: 0},
{name: "Player 2", positie: 0},
{name: "Player 3", positie: 0},
{name: "Player 4", positie: 0}
];
var position = 0;
var currentPlayer = null;
function rolClick(){
if (position >= players.length){
position = 0;
}
console.log("Position", position);
currentPlayer = players[position++];
var rollen = Math.floor(Math.random() * 6) + 1;
currentPlayer.positie += rollen;
$("span").html("Je hebt " + rollen + " gerold voor " + currentPlayer.name);
};
$("button").click(function() {
rolClick();
});
var players = [{
name: "Player 1",
positie: 0
}, {
name: "Player 2",
positie: 0
}, {
name: "Player 3",
positie: 0
}, {
name: "Player 4",
positie: 0
}];
var position = 0;
var currentPlayer = null;
function rolClick() {
if (position >= players.length) {
position = 0;
}
console.log("Position", position);
currentPlayer = players[position++];
var rollen = Math.floor(Math.random() * 6) + 1;
currentPlayer.positie += rollen;
$("span").html("Je hebt " + rollen + " gerold voor " + currentPlayer.name);
};
$("button").click(function() {
rolClick();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>
Rol de dobbelsteen
</button>
<span></span>
我认为您的问题是,首先在调用rolClick()
函数之前设置currentPlayer
,然后在掷骰子之前重置/更新currentPlayer
。请参阅下面的评论部分。。。
var players = [
{
name: 'Player 1',
positie: 0
},
{
name: 'Player 2',
positie: 0
},
{
name: 'Player 3',
positie: 0
},
{
name: 'Player 4',
positie: 0
}
];
var position = 0;
// currentPlayer is set to player 1
var currentPlayer = players[position];
function rolClick() {
// currentPlayer is now set to player 2
currentPlayer = players[position++];
if (position // ... etc etc ...
}
为了在rolClick()
函数结束时而不是开始时克服此更新currentPlayer
。
此外,您可能希望研究使用switch()
语句来替换if-else-if筛选的列表。请点击MDN了解更多信息。
希望能有所帮助。:)
相关文章:
- 解析JSON并从中删除对象会出错
- 将对象的列表c#传递给javascript:undefined变量时出错
- 通过GWT JSNI传递Java对象时出错
- CakePHP错误:在非对象上调用成员函数get(),使用cakejavascript助手时出错
- 尝试编写承诺时出错:承诺解析器对象不是函数
- '对象不是函数'尝试将页面对象与Protractor一起使用时出错
- JSON.parse在循环对象上未出错
- 谷歌应用程序脚本:;范围不是函数,它是对象;尝试在单元格中放置注释时出错
- 在ember.js中保存对象时出错:'对象X没有方法'保存''
- 使用JQuery和JSON将对象发送到JAX-RS时出错
- 在Javascript中将未定义转换为对象时出错
- 在 Javascript 中使用警报时出错(对象的属性“alert”不是函数)
- 更新 parse.com 分析对象时出错
- 使用对象构造函数管理 cssClasses 时出错
- 在 AngularJS 中将字符串转换为对象时出错
- 从对象引用请求动画帧时出错
- 在 Razor View 中设置 JavaScript 对象时出错
- jQuery+Edge Animate:仅当从单击事件调用时才出错:对象 [对象对象] 没有方法“基础”
- 使用Javascript/KendoUI自动完成呈现数据时出错-对象#<对象>没有方法'切片'
- 什么会导致IE出错对象不支持属性或方法'removeChild'