Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.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_Html - Fatal编程技术网

Javascript 如何决定石头、布、剪刀的胜利者?

Javascript 如何决定石头、布、剪刀的胜利者?,javascript,html,Javascript,Html,我正在尝试编程游戏“石头、布、剪刀”,到目前为止,它是有效的,但当我想显示赢家,我似乎不知道如何。如果你看一下我的javascript,你就会知道我尝试了什么 HTML: <!DOCTYPE html> <html> <head> <title></title> <link rel="stylesheet" type="text/css" href="mycss.css"> <script src="myjavasc

我正在尝试编程游戏“石头、布、剪刀”,到目前为止,它是有效的,但当我想显示赢家,我似乎不知道如何。如果你看一下我的javascript,你就会知道我尝试了什么

HTML:

<!DOCTYPE html>
<html>
<head>
<title></title>

<link rel="stylesheet" type="text/css" href="mycss.css">
<script src="myjavascript2.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

</head>

<body>
<div id="center">
<button onclick="myFunction1()">Play</button>

<p id="rolled">You rolled:</p>
<p id="test"></p>



<p id="rolled1">Your opponent rolled:</p>
<p id="test1"></p>
<p id="test2"></p>
<p id="test3"></p>
</div>

</body>
</html>
绘画作品的展示非常完美

if (random1 == random2) {

document.getElementById("test2").innerHTML="<h3>It's a draw.</h3>";
}   
我想知道为什么我不能使用这个解决方案,什么是正确的解决方案。谢谢。

第一种方式:

switch (random1) {

    case 0: 
         if (random2 == 1)
            // player 1 loses
         else
           // player 1 wins
    case 1:
         //...
}
保留前面的相等大小写,将其放在else语句中

第二种方式: 我会创建一个对象来处理这个问题

function Thing (name) {
    this.Name = name;
    this.LoseOpponents = new Array ();
}
Thing.prototype.AddLoseOpponent = function (obj) {
    this.LoseOpponents.push(obj);
}
Thing.prototype.WinsAgainst = function (obj) {
    for (var i = 0; i < LoseOpponents.length; i++) {
        if (LoseOpponents[i] === obj) {
            return false;
        }
    }
    return true;
}
Thing.prototype.IsDraw = function (obj) {
    if (this.Name == obj.Name)
         return true;
    return false;
}

var paper = new Thing ('paper');
var scissors = new Thing ('scissors');
var rock = new Thing ('rock');

paper.AddLoseOpponent(scissors);
scissors.AddLoseOpponent(rock);
rock.AddLoseOpponent(paper);

//...

var things = [rock, paper, scissors];

var random1 = Math.floor((Math.random()*things.length));
var random2 = Math.floor((Math.random()*things.length));

var player1 = things[random1];
var player2 = things[random2];

document.getElementById("test").innerHTML=player1.Name;
document.getElementById("test1").innerHTML=player2.Name;

//...

if (player1.IsDraw(player2)) {
    //draw
} else {
    if (player1.WinsAgainst(player2)) {
         // player1 wins
    } else {
        // player2 wins
    }
}
函数对象(名称){
this.Name=Name;
this.com=新数组();
}
Thing.prototype.addLoseOperator=函数(obj){
这个。输家。推(obj);
}
Thing.prototype.WinsAgainst=函数(obj){
for(var i=0;i<0.length;i++){
if(i)==obj){
返回false;
}
}
返回true;
}
Thing.prototype.IsDraw=函数(obj){
if(this.Name==obj.Name)
返回true;
返回false;
}
var纸张=新事物(“纸张”);
var剪刀=新事物(“剪刀”);
var rock=新事物(“岩石”);
纸.剪刀;
剪刀。对手(石头);
岩石、岩石(纸);
//...
var things=[石头、布、剪刀];
var random1=Math.floor((Math.random()*things.length));
var random2=Math.floor((Math.random()*things.length));
var player1=事物[random1];
var player2=事物[random2];
document.getElementById(“test”).innerHTML=player1.Name;
document.getElementById(“test1”).innerHTML=player2.Name;
//...
if(player1.IsDraw(player2)){
//画
}否则{
if(player1.WinsAgainst(player2)){
//玩家1获胜
}否则{
//玩家2获胜
}
}
通过这种方式,你可以很容易地添加新的对手,想象更多的平局情况,添加电源

希望这能给你一些想法。:)

使用
?:
和一些常量,你可以像对人一样表达问题:石头比剪刀,布比石头,剪刀比布


您知道
random1
random2
将是0,1或2吗?请对此稍加注意为什么要导入jQuery并使用
document.getElementById
?我只是想知道。@KarthickKumarGanesh@Vadorequest,因为我有一个空白的测试文档来尝试新事物,而现在我正尝试学习纯javascript,而不是使用更简单的Jquery。所以请看第一种方法,记住第二种方法;)如果你感兴趣,搜索oop JavaScript,你会发现很好的资源。这很有趣,但我不理解“?”“你赢了!”你输了,这是什么意思?确切地说,点击链接。条件运算符是您的朋友,朋友。
switch (random1) {

    case 0: 
         if (random2 == 1)
            // player 1 loses
         else
           // player 1 wins
    case 1:
         //...
}
function Thing (name) {
    this.Name = name;
    this.LoseOpponents = new Array ();
}
Thing.prototype.AddLoseOpponent = function (obj) {
    this.LoseOpponents.push(obj);
}
Thing.prototype.WinsAgainst = function (obj) {
    for (var i = 0; i < LoseOpponents.length; i++) {
        if (LoseOpponents[i] === obj) {
            return false;
        }
    }
    return true;
}
Thing.prototype.IsDraw = function (obj) {
    if (this.Name == obj.Name)
         return true;
    return false;
}

var paper = new Thing ('paper');
var scissors = new Thing ('scissors');
var rock = new Thing ('rock');

paper.AddLoseOpponent(scissors);
scissors.AddLoseOpponent(rock);
rock.AddLoseOpponent(paper);

//...

var things = [rock, paper, scissors];

var random1 = Math.floor((Math.random()*things.length));
var random2 = Math.floor((Math.random()*things.length));

var player1 = things[random1];
var player2 = things[random2];

document.getElementById("test").innerHTML=player1.Name;
document.getElementById("test1").innerHTML=player2.Name;

//...

if (player1.IsDraw(player2)) {
    //draw
} else {
    if (player1.WinsAgainst(player2)) {
         // player1 wins
    } else {
        // player2 wins
    }
}
function play() {
    var ROCK = 0;
    var PAPER = 1;
    var SCISSORS = 2;

    var choices = ['rock', 'paper', 'scissors'];

    var yourRoll = Math.floor(Math.random() * choices.length);
    var opponentRoll = Math.floor(Math.random() * choices.length);

    $('#test').text(choices[yourRoll]);
    $('#test1').text(choices[opponentRoll]);
    $('#test2').text('');
    $('#test3').text('');

    if (yourRoll == opponentRoll) {
        $('#test2').text("It's a draw!");
        return
    }

    /*    Rock beats scissors
     *    Paper beats rock
     *    Scissors beats paper
     */
    switch (yourRoll) {
        case ROCK:
            $('#test3').text(opponentRoll == SCISSORS ? 'You win!' : 'You lose!');
            return;
        case PAPER:
            $('#test3').text(opponentRoll == ROCK ? 'You win!' : 'You lose!');
            return;
        case SCISSORS:
            $('#test3').text(opponentRoll == PAPER ? 'You win!' : 'You lose!');
            return;
    }
}

$(document).ready(function () {
    $('#play').click(function () {
        play();
    });
});