剪刀石头布有更好的写法吗?

你只是看起来很努力 2017-05-05 11:28:51
在CODECADEMY上 练习写的 剪刀石头布。我觉得应该有更简单的方法吧???

var userChoice = prompt("Do you choose rock, paper or scissors?");
var computerChoice = Math.random();
if (computerChoice < 0.34) {
computerChoice = "rock";
} else if (computerChoice <= 0.67) {
computerChoice = "paper";
} else {
computerChoice = "scissors";
}
console.log("Computer: " + computerChoice);

function compare(choice1, choice2) {
if (choice1 === choice2) {
return "The result is a tie!";
} else if (choice1 === "rock") {
if (choice2 === "scissors") {
return "rock wins";
} else {
return "paper wins";
}
} else if (choice1 === "paper") {
if (choice2 === "rock") {
return "paper wins";
} else {
return "scissors wins";
}
} else {
if (choice2 === "rock") {
return "rock wins";
} else if (choice2 === "paper") {
return "scissors wins";
}
}
}

compare(userChoice, computerChoice);
...全文
266 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2017-05-07
  • 打赏
  • 举报
回复
引用 7 楼 m0_38019068 的回复:
第一句 应该位运算? var str = user==ai?"平手":(user+1)%3==ai?"电脑赢了":"用户赢了"; 这一句是啥意思 ,完全没看懂啊。
>> 是位运算,由于位运算只能操作整数,不是整数也会自动转换成整数,利用这一特点可以方便的对数值取整。 user==ai?"平手":(user+1)%3==ai?"电脑赢了":"用户赢了" 是两个三目运算符?:嵌套 js中的三目运算符详解 http://blog.csdn.net/sysuzhyupeng/article/details/54934159
  • 打赏
  • 举报
回复
第一句 应该位运算? var str = user==ai?"平手":(user+1)%3==ai?"电脑赢了":"用户赢了"; 这一句是啥意思 ,完全没看懂啊。
天际的海浪 2017-05-06
  • 打赏
  • 举报
回复
引用 5 楼 m0_38019068 的回复:
var ai = Math.random()*3>>0;     var str = user==ai?"平手":(user+1)%3==ai?"电脑赢了":"用户赢了"; 这两句能否注释一下。。。 [quote=引用 3 楼 jslang 的回复:]

<input type="button" value="用户出剪刀" onclick="cq(0);" />
<input type="button" value="用户出石头" onclick="cq(1);" />
<input type="button" value="用户出布" onclick="cq(2);" />
<script type="text/javascript">
function cq(user) {
	var arr = ['剪刀','石头','布'];
	var ai = Math.random()*3>>0;
	var str = user==ai?"平手":(user+1)%3==ai?"电脑赢了":"用户赢了";
	alert("用户出"+arr[user]+", 电脑出"+arr[ai]+", "+str);
}

[/quote] 你哪里不明白
  • 打赏
  • 举报
回复
var ai = Math.random()*3>>0;     var str = user==ai?"平手":(user+1)%3==ai?"电脑赢了":"用户赢了"; 这两句能否注释一下。。。
引用 3 楼 jslang 的回复:

<input type="button" value="用户出剪刀" onclick="cq(0);" />
<input type="button" value="用户出石头" onclick="cq(1);" />
<input type="button" value="用户出布" onclick="cq(2);" />
<script type="text/javascript">
function cq(user) {
	var arr = ['剪刀','石头','布'];
	var ai = Math.random()*3>>0;
	var str = user==ai?"平手":(user+1)%3==ai?"电脑赢了":"用户赢了";
	alert("用户出"+arr[user]+", 电脑出"+arr[ai]+", "+str);
}

  • 打赏
  • 举报
回复
引用 2 楼 cn00439805 的回复:

var arr = ['剪刀','石头','布']
var userChoice = arr.indexOf(prompt("请输入剪刀,石头或布")) * 3;
if(userChoice === -3){console.log("输入错误,请重新输入")}
var computerChoice = (Math.floor(Math.random()*3) + 3) * 10;
function compare(uChose, cChose){
	var resule = uChose + cChose;
	switch(resule){
		case 30:case 43:case 56:
			console.log("平手");
			break;
		case 36:case 40:case 53:
			console.log("电脑赢了");
			break;
		case 33:case 46:case 50:
			console.log("你赢了");
			break;
	}
}
compare(userChoice, computerChoice);
感觉逻辑上不理解啊。能解释下吗?
文盲老顾 2017-05-05
  • 打赏
  • 举报
回复

var items = ['rock','paper','scissors']
var userChoice = prompt("Do you choose rock(0), paper(1) or scissors(2)?");
var computerChoice = Math.random()*3;
console.log("Computer: " + items[computerChoice]);
function compare(choice1, choice2){
  // 无论用户输入什么内容,都将其转换成数字以对应 items 数组,然后比较
}
compare(userChoice, computerChoice);
天际的海浪 2017-05-05
  • 打赏
  • 举报
回复

<input type="button" value="用户出剪刀" onclick="cq(0);" />
<input type="button" value="用户出石头" onclick="cq(1);" />
<input type="button" value="用户出布" onclick="cq(2);" />
<script type="text/javascript">
function cq(user) {
	var arr = ['剪刀','石头','布'];
	var ai = Math.random()*3>>0;
	var str = user==ai?"平手":(user+1)%3==ai?"电脑赢了":"用户赢了";
	alert("用户出"+arr[user]+", 电脑出"+arr[ai]+", "+str);
}

cn00439805 2017-05-05
  • 打赏
  • 举报
回复

var arr = ['剪刀','石头','布']
var userChoice = arr.indexOf(prompt("请输入剪刀,石头或布")) * 3;
if(userChoice === -3){console.log("输入错误,请重新输入")}
var computerChoice = (Math.floor(Math.random()*3) + 3) * 10;
function compare(uChose, cChose){
	var resule = uChose + cChose;
	switch(resule){
		case 30:case 43:case 56:
			console.log("平手");
			break;
		case 36:case 40:case 53:
			console.log("电脑赢了");
			break;
		case 33:case 46:case 50:
			console.log("你赢了");
			break;
	}
}
compare(userChoice, computerChoice);

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧