Javascript 在数组中选择对象时出错
我正在为一个棋盘游戏应用程序编写代码。我已经写了一段简单的代码,用mathrandom确定玩家的位置。mathrandom的结果告诉数组选择4个对象中的1个(玩家),并将结果添加到他们的位置。我还在函数的开头添加了一段代码,以便在数组中向上移动并选择下一个玩家,因此每次单击“掷骰子”按钮时,另一个玩家将获得更多的位置值 问题是,在我遍历整个数组并返回到[0]位置后,它会运行代码两次,因此第一个玩家将获得函数两次,而所有其他玩家仅获得函数一次 这是我的代码:Javascript 在数组中选择对象时出错,javascript,arrays,function,object,Javascript,Arrays,Function,Object,我正在为一个棋盘游戏应用程序编写代码。我已经写了一段简单的代码,用mathrandom确定玩家的位置。mathrandom的结果告诉数组选择4个对象中的1个(玩家),并将结果添加到他们的位置。我还在函数的开头添加了一段代码,以便在数组中向上移动并选择下一个玩家,因此每次单击“掷骰子”按钮时,另一个玩家将获得更多的位置值 问题是,在我遍历整个数组并返回到[0]位置后,它会运行代码两次,因此第一个玩家将获得函数两次,而所有其他玩家仅获得函数一次 这是我的代码: var players = [ {na
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);
};
我认为您的问题是,您首先在调用
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()
函数的末尾而不是开始处执行此更新
此外,您可能希望研究使用switch()
语句替换if-else-if筛选列表。更多信息请访问
希望有帮助。:) HTML
<button>
Rol de dobbelsteen
</button>
<span></span>
var玩家=[{
姓名:“玩家1”,
阳性:0
}, {
姓名:“玩家2”,
阳性:0
}, {
姓名:“玩家3”,
阳性:0
}, {
姓名:“玩家4”,
阳性:0
}];
var位置=0;
var currentPlayer=null;
函数rolClick(){
如果(位置>=players.length){
位置=0;
}
控制台日志(“位置”,位置);
currentPlayer=玩家[position++];
var rollen=Math.floor(Math.random()*6)+1;
currentPlayer.positie+=rollen;
$(“span”).html(“Je-hebt”+rollen+“gerold-voor”+currentPlayer.name);
};
$(“按钮”)。单击(函数(){
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();
});