Javascript 如何决定石头、布、剪刀的胜利者?
我正在尝试编程游戏“石头、布、剪刀”,到目前为止,它是有效的,但当我想显示赢家,我似乎不知道如何。如果你看一下我的javascript,你就会知道我尝试了什么 HTML: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
<!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();
});
});