Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在不输入完整比较的情况下添加无限变化的岩石纸剪刀_Javascript - Fatal编程技术网

Javascript 如何在不输入完整比较的情况下添加无限变化的岩石纸剪刀

Javascript 如何在不输入完整比较的情况下添加无限变化的岩石纸剪刀,javascript,Javascript,我想在玩石头纸剪刀游戏时添加无限多的选项供选择(steen,papier,schaar==石头,纸,剪刀)。我研究了Stackoverflow并找到了一些解决方案,但我不知道如何在自己的代码中实现它 以下是解决方案的链接,但没有在我自己的代码中实现: 让userScore=0; 让计算机得分=0; 让userScore_span=document.getElementById(“用户分数”); 让computerScore_span=document.getElementById(“计算机分数

我想在玩石头纸剪刀游戏时添加无限多的选项供选择(steen,papier,schaar==石头,纸,剪刀)。我研究了Stackoverflow并找到了一些解决方案,但我不知道如何在自己的代码中实现它

以下是解决方案的链接,但没有在我自己的代码中实现:

让userScore=0;
让计算机得分=0;
让userScore_span=document.getElementById(“用户分数”);
让computerScore_span=document.getElementById(“计算机分数”);
让scoreMessage=document.getElementById(“score消息”);
const schaar_div=document.getElementById(“schaar”);
const steen_div=document.getElementById(“steen”);
const papier_div=document.getElementById(“papier”);
//计算机选择
函数getRandomChoise(){
const choises=[“schaar”、“steen”、“papier”];
const randomNumber=Math.floor(Math.random()*choises.length);
返回选项[随机数];
}
函数win(){
userScore++;
userScore_span.innerHTML=userScore;
scoreMessage.innerHTML=“你赢了!”;
}
函数丢失(){
计算机评分++;
computerScore_span.innerHTML=computerScore;
scoreMessage.innerHTML=“您输了!”
}
函数绘图(){
scoreMessage.innerHTML=“这是一场平局!”
}
功能游戏(用户选择){
const computerChoise=getRandomChoise();
如果(用户选择+计算机选择==“steenschaar”){
赢();
}否则如果(用户选择+计算机选择==“papiersteen”){
赢();
}否则如果(用户选择+计算机选择==“schaarpapier”){
赢();
}否则如果(用户选择+计算机选择==“steenpapier”){
失去();
}else if(用户选择+计算机选择===“papierschaar”){
失去();
}else if(用户选择+计算机选择==“schaarsteen”){
失去();
}else if(用户选择+计算机选择==“schaarschaar”){
draw();
}否则如果(用户选择+计算机选择==“steensteen”){
draw();
}否则,如果(用户选择+计算机选择==“纸笔”){
draw();
}
}
函数main(){
schaar_div.addEventListener(“单击”,函数)(){
游戏(“沙尔”);
})
steen_div.addEventListener(“单击”,函数)(){
游戏(“steen”);
})
papier_div.addEventListener(“单击”,函数)(){
游戏(“纸制”);
})
}
main();

我希望能够在游戏中添加无限多的选项(lizzard、spock等),而无需反复编写else-if声明。

您可以将两个可能选项之间的关系表示为一棵树:

  const winsOver = {
    schaar: ["papier"],
    steen: ["schaar"],
    papier: ["steen"],
 };
现在,您的比较变得非常简单:

 if(userChoice === computerChoice) {
   draw();
 } else if(winsOver[userChoice].includes(computerChoice)) {
   win();
 } else lose();

您可以将两个可能选项之间的关系表示为一棵树:

  const winsOver = {
    schaar: ["papier"],
    steen: ["schaar"],
    papier: ["steen"],
 };
现在,您的比较变得非常简单:

 if(userChoice === computerChoice) {
   draw();
 } else if(winsOver[userChoice].includes(computerChoice)) {
   win();
 } else lose();

你链接的这篇文章为你提供了一种合乎逻辑的石头剪纸方法:

n>=3和n奇数的推广:

设d=(n+a-b)%n。然后:

如果d=0=>平局

如果d%2=1=>a获胜

如果d%2=0=>b获胜

您可以这样实现:

//将名称转换为数字
常量选项={
摇滚乐:0,
论文:1,,
剪刀:2把
}
//物体长度
常量长度=Object.keys(options).length
//用户输入
const user=options[prompt().toLowerCase()]
//为对手随机生成输入
const comp=Math.floor(Math.random()*Math.floor(length));
//调试
控制台日志(用户、公司)
//条件
const win=()=>console.log('win')
const lose=()=>console.log('lose'))
const tie=()=>console.log('tie'))
//计算产量
常数d=(长度+用户-补偿)%length
//d=0->平局
//d%2=1->win
//d%2=0->丢失

Dd%2?win():lose():tie()
您链接的文章为您提供了一种逻辑方法来使用剪刀:

n>=3和n奇数的推广:

设d=(n+a-b)%n。然后:

如果d=0=>平局

如果d%2=1=>a获胜

如果d%2=0=>b获胜

您可以这样实现:

//将名称转换为数字
常量选项={
摇滚乐:0,
论文:1,,
剪刀:2把
}
//物体长度
常量长度=Object.keys(options).length
//用户输入
const user=options[prompt().toLowerCase()]
//为对手随机生成输入
const comp=Math.floor(Math.random()*Math.floor(length));
//调试
控制台日志(用户、公司)
//条件
const win=()=>console.log('win')
const lose=()=>console.log('lose'))
const tie=()=>console.log('tie'))
//计算产量
常数d=(长度+用户-补偿)%length
//d=0->平局
//d%2=1->win
//d%2=0->丢失

Dd%2?赢():输():打领带()
我和乔纳斯·威尔姆斯有同样的想法,但这让我有更多的时间来阐述

const win3={Rock:{e:['Scissors'],m:['Rock crushes Scissors']}
,纸张:{e:['Rock'],m:['Paper cover Rock']}
,剪刀:{e:['布'],m:['剪刀剪布']}
}
const win5={Rock:{e:['剪刀','蜥蜴'],m:['石头压碎剪刀','石头压碎蜥蜴']}
,纸:{e:['岩石','斯波克'],m:['纸封面岩石','纸反驳斯波克']}
,剪刀:{e:['布','蜥蜴'],m:['剪刀剪布','剪刀斩首蜥蜴']}
,蜥蜴:{e:[‘纸’,‘斯波克’],m:[‘蜥蜴吃纸’,‘蜥蜴毒死斯波克’}
,斯波克:{e:['石头','剪刀'],m:['斯波克蒸发石头','斯波克打碎剪刀']}
}
让我们播放=win3//win5。。win1000。。。
,userScore=0
,computerScore=0
;
功能游戏(用户选择、计算机选择)
{
if(userChoice==computerChoice)
{
log('相同的值,没有一个分数')
返回
}
如果(播放[userChoice]。包括(计算机选择))
{
用户分数++
让n=play[userChoice].e.findIndex(e=>e==computerChoice)
console.log(播放[userChoice].m[n])
}
其他的
{
计算机评分++
让我们玩