Javascript 如何创建随机的计算机选项,除了您已经选择的选项之外?
我正在做一场拳击比赛。用户可以选择三个拳击手。计算机可以在其余两个您没有选择的选项中进行选择。 我的HTML是Javascript 如何创建随机的计算机选项,除了您已经选择的选项之外?,javascript,html,random,Javascript,Html,Random,我正在做一场拳击比赛。用户可以选择三个拳击手。计算机可以在其余两个您没有选择的选项中进行选择。 我的HTML是 <p id="printNames0"></p> <div id="jouwbokser"> <h1>Kies Jouw Bokser!</h1> <img id="bokser1" onClick="gevecht1()" src="img/bokser1.png" alt="bokserlinks" /&
<p id="printNames0"></p>
<div id="jouwbokser">
<h1>Kies Jouw Bokser!</h1>
<img id="bokser1" onClick="gevecht1()" src="img/bokser1.png" alt="bokserlinks" />
<img id="bokser2" onClick="gevecht2()" src="img/bokser2.png" alt="boksermidden" />
<img id="bokser3" onClick="gevecht3()" src="img/bokser3.png" alt="bokserrechts" />
</div>
我的javascript是:
var bokser = ['bokser1', 'bokser2', 'boker3' ];
var userChoice;
var comChoice;
//functie die laat zien welke bokser je hebt gekozen.
function greet(){
return ("Je hebt" + userChoice.toLowerCase() + "gekozen");
}
//functie die tekst showt in html
function printToPage(test){
var content = document.getElementsByTagName('body')[0];
content.innerHTML = ("<p>" + test + "</p>" + content.innerHTML);
}
//bokser object
var bokser1 = {
hitpoints: 100,
attack1: 2,
attack2:5,
attack3:8,
attack4:12
};
var bokser2 = {
hitpoints:100,
attack1:2,
attack2:5,
attack3:8,
attack4:12
};
var bokser3 = {
hitpoints:100,
attack1:2,
attack2:5,
attack3:8,
attack4:12
};
//kies bokser
//andere boksers worden display none als bokser gekozen is
//kies bokser1
function gevecht1(){
document.getElementById("bokser2").style.display = "none";
document.getElementById("bokser3").style.display = "none";
userChoice = bokser[0];
printToPage(greet());
}
//kies bokser2
function gevecht2(){
document.getElementById("bokser1").style.display = "none";
document.getElementById("bokser3").style.display = "none";
userChoice = bokser[1];
printToPage(greet());
}
//kies bokser3
function gevecht3(){
document.getElementById("bokser1").style.display = "none";
document.getElementById("bokser2").style.display = "none";
userChoice = bokser[2];
printToPage(greet());
}
除了您以前选择的计算机选项之外,有人知道如何创建计算机随机选项吗。实际上,您只需执行以下操作即可:
user_choice = getUserChoice();
choices.splice(choices.indexOf(user_choice),1);
computer_choice = choices[ Math.round(Math.random()*(choices.length-1)) ];
编辑:看起来这可能更简单。见上文
你要找的是排列盒子,除了那些已经被选中的盒子。下面是一个使用以下函数排列的函数:
像这样使用它
user_choice = getUserChoice(); // somehow
possible_choices = permute(user_choice, possible_choices);
var computer_choice_i_1 = possible_choices.pop();
user_choice = getUserChoice(); // somehow
possible_choices = permute_except(user_choice, possible_choices);
var computer_choice_i_2 = possible_choices.pop();
// ... etc
编辑:
我以为你要找的东西叫做排列。下面的内容描述了,实际上你所寻找的是不同的,请看上面
排列只是一种将一组事物按某种顺序排列的方式,可能与你发现它的方式不同。您希望对方框进行随机排列。
如果未将参数传递给排列,则排列希望足够清晰,返回数组、选项或数组[0,1,2]的排列:
或者,您可以实现一种不同类型的置换函数,如中的算法,它只是在数组中随机选择的索引对上交换值
如果你想获得更多的功能,你可以实现一个非固定的排列,也就是说,没有固定的点。这也被称为a
剩下的就看你了,祝你好运 你的问题基本上就像选择彩票球而不把球放回盒子一样。它被称为Fisher-Yates shuffle F-Y-Knuth shuffle,它使用的是中描述的算法,就像一把石头纸剪刀。那么,是否可以使用if/else语句来实现呢?唯一不同的是石头、纸、剪刀,comChoice可以在剩下的两种之间进行选择。你可以试试看!
user_choice = getUserChoice(); // somehow
possible_choices = permute(user_choice, possible_choices);
var computer_choice_i_1 = possible_choices.pop();
user_choice = getUserChoice(); // somehow
possible_choices = permute_except(user_choice, possible_choices);
var computer_choice_i_2 = possible_choices.pop();
// ... etc
function permute(choices) {
choices = choices || [0,1,2];
var random_choices = [];
while(choices.length > 0) {
var choice_index = Math.round(Math.random()*(choices.length-1));
random_choices.push(choices[choice_index]);
choices.splice(choice_index,1);
}
return random_choices;
}