<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());
}
有没有人知道如何随机创建计算机选择,除了您之前选择的计算机选择。
答案 0 :(得分:0)
实际上你可以通过这样做来做你想做的事:
user_choice = getUserChoice();
choices.splice(choices.indexOf(user_choice),1);
computer_choice = choices[ Math.round(Math.random()*(choices.length-1)) ];
编辑:看起来这可能更简单了。见上文。
您要找的是置换盒子,除了已经选择的盒子。这是一个函数(使用函数permute
):
function permute_except(user_choice, remaining_choices) {
// find the choice
var index = remaining_choices.indexOf(user_choice);
// remove the choice
remaining_choices.splice(index,1);
// return the remaining ones, permuted
return permute(remaining_choices);
}
像
一样使用它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
编辑:
我认为你要找的东西叫做排列。所以下面描述的是,实际上你正在寻找的是不同的,所以见上文。
排列只是一种以某种顺序排列一组事物的方式(可能与你发现它的方式不同)。你想随机排列你的盒子。
permute
(希望足够清楚)返回数组的排列choices
(如果你没有将参数传递给{{1},则返回数组[0,1,2]的排列}):
permute
或者,您可以实现不同类型的排列函数,例如RC4
中的算法,它只是在数组中随机选择的索引对上交换值。
如果您想获得更多功能,可以实现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;
}
的排列,即没有固定点的排列。这也称为derangement
。
剩下的,取决于你,祝你好运!
答案 1 :(得分:0)
你的问题基本上就像选择彩票球而不将球送回盒子。它被称为Fisher-Yates shuffle(F-Y-Knuth shuffle),它是http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle中描述的O(n)算法