Javascript 我的石头、布、剪刀的功能不起作用
我有一个函数,用来决定游戏的胜利者。出于某种原因,它将始终打印第一条if语句,即使它不正确 我试着把它们都做成if语句,改变括号,我把所有其他if语句分开,而不是只有3个,什么都不起作用Javascript 我的石头、布、剪刀的功能不起作用,javascript,function,if-statement,Javascript,Function,If Statement,我有一个函数,用来决定游戏的胜利者。出于某种原因,它将始终打印第一条if语句,即使它不正确 我试着把它们都做成if语句,改变括号,我把所有其他if语句分开,而不是只有3个,什么都不起作用 function getElem(id) { return document.getElementById(id); } var rounds; function startGame() { rounds = getElem("ROUNDS_TO_PLAY"); rounds
function getElem(id) {
return document.getElementById(id);
}
var rounds;
function startGame() {
rounds = getElem("ROUNDS_TO_PLAY");
rounds = parseInt(rounds.value);
document.roundsRemaining = rounds;
getElem("ROUNDS_REMAINING").value = rounds;
}
/* Responds to user choice button click. */
function userChoice(userButton) {
updateStats();
displayUserChoice(userButton);
var compChoice = getComputerChoice();
getElem("COMPUTER_CHOICE_OUTPUT").value = compChoice;
displayComputerChoice(compChoice);
}
function updateStats() {
rounds=document.roundsRemaining;
rounds--;
document.roundsRemaining = rounds;
getElem("ROUNDS_REMAINING").value = document.roundsRemaining;
if (document.roundsRemaining < 1) {
alert("Game over");
getElem("ROCK_CHOICE").disabled=true;
//alert(getWinner(userButton, compChoice));
}
//alert(getWinner());
alert (determineWinner());
}
function getComputerChoice() {
var r = Math.floor(Math.random() * 3)
switch (r) {
case 0: return "ROCK";
case 1: return "PAPER";
case 2: return "SCISSORS";
default: console.log(r + " is not a valid computer choice.");
}
}
function displayUserChoice(userButton) {
var uco = getElem("USER_CHOICE_OUTPUT");
if (userButton == "ROCK") {
uco.value = "ROCK";
} else if (userButton == "PAPER") {
uco.value = "PAPER";
} else if (userButton == "SCISSORS") {
uco.value = "SCISSORS";
} else {
conosole.log(userButton + " is invalid!!");
}
}
function determineWinner(userButton,compChoice) {
if (userButton === compChoice) {
return 'It\'s a tie!';
}
else if (userButton === "ROCK" && compChoice === "PAPER") {
return 'Computer wins!';
}
else if (userButton === 'PAPER' && compChoice === 'SCISSORS') {
return 'Computer wins!';
}
else if (userButton === 'SCISSORS' && compChoice === 'ROCK') {
return 'Computer wins!';
}
else if (userButton === 'PAPER' && compChoice === 'ROCK')
{
return 'You win!';
}
else if (userButton === 'SCISSORS' && compChoice === 'PAPER') {
return 'You win!';
}
else {
return 'You win!';
}
}
函数getElem(id){
返回文档.getElementById(id);
}
var轮数;
函数startName(){
轮次=轮次(“轮次到轮次玩”);
rounds=parseInt(rounds.value);
document.roundsRemaining=轮数;
getElem(“剩余的轮数”)。值=轮数;
}
/*响应用户选择按钮单击*/
函数userChoice(userButton){
updateStats();
显示用户选择(用户按钮);
var compChoice=getComputerChoice();
getElem(“计算机选择输出”)。值=compChoice;
显示计算机选择(compChoice);
}
函数updateStats(){
轮数=文件。轮数保留;
轮--;
document.roundsRemaining=轮数;
getElem(“剩余的轮数”).value=document.roundsRemaining;
if(文件轮维护<1){
警报(“游戏结束”);
getElem(“ROCK_CHOICE”).disabled=true;
//警报(getWinner(用户按钮,compChoice));
}
//警报(getWinner());
警报(determineWinner());
}
函数getComputerChoice(){
var r=Math.floor(Math.random()*3)
开关(r){
案例0:返回“ROCK”;
案例1:退回“文件”;
案例2:返回“剪刀”;
默认值:console.log(r+“不是有效的计算机选项。”);
}
}
函数displayUserChoice(用户按钮){
var uco=getElem(“用户选择输出”);
如果(userButton==“ROCK”){
uco.value=“岩石”;
}else if(用户按钮==“纸张”){
uco.value=“纸张”;
}else if(用户按钮==“剪刀”){
uco.value=“剪刀”;
}否则{
日志(userButton+“无效!!”);
}
}
函数确定浏览器(用户按钮,组件选择){
if(userButton==compChoice){
返回“这是平局!”;
}
否则如果(userButton==“ROCK”和&compChoice==“PAPER”){
返回“计算机获胜!”;
}
else if(用户按钮==='PAPER'和&compChoice==='SCISSORS'){
返回“计算机获胜!”;
}
否则如果(userButton=='SCISSORS'和&compChoice=='ROCK'){
返回“计算机获胜!”;
}
否则如果(userButton=='PAPER'和&compChoice=='ROCK')
{
返回“你赢了!”;
}
else if(用户按钮===‘剪刀’和&compChoice===‘纸’){
返回“你赢了!”;
}
否则{
返回“你赢了!”;
}
}
//Html分离文件
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"><meta charset="UTF-8">
<title>my game</title>
<script src="rsp.js" type="text/javascript"></script>
</head>
<body>
Rounds to Play: <input id="ROUNDS_TO_PLAY"><br>
<input type="button" id="START_GAME" value="Start!" onclick="startGame()">
Rounds Remaining: <input id="ROUNDS_REMAINING"><br><br><br>
<input type="button" id="ROCK_CHOICE" value="Rock" onclick="userChoice('ROCK')">
<input type="button" id="PAPER_CHOICE" value="Paper" onclick="userChoice('PAPER')">
<input type="button" id="SCISSORS_CHOICE" value="Scissors" onclick="userChoice('SCISSORS')">
<br>
User Chose: <input id="USER_CHOICE_OUTPUT" type="text" disabled="true"><br>
Computer Chose: <input id="COMPUTER_CHOICE_OUTPUT" type="text" disabled="true">
</body></html>
我的游戏
要玩的回合数:
剩余轮数:
用户选择:
计算机选择:
假设输出显示计算机赢、您赢或是平局。它每一次都显示出一条领带。
函数getElem(id){
返回文档.getElementById(id);
}
函数userChoice(userButton){
显示用户选择(用户按钮);
var compChoice=getComputerChoice();
getElem(“计算机选择输出”)。值=compChoice;
updateStats();
}
函数updateStats(){
log(determineWinner((document.getElementById(“用户选择输出”).value),(document.getElementById(“计算机选择输出”).value));
}
函数getComputerChoice(){
var r=Math.floor(Math.random()*3)
开关(r){
案例0:返回“ROCK”;
案例1:退回“文件”;
案例2:返回“剪刀”;
默认值:console.log(r+“不是有效的计算机选项。”);
}
}
函数displayUserChoice(用户按钮){
var uco=getElem(“用户选择输出”);
如果(userButton==“ROCK”){
uco.value=“岩石”;
}else if(用户按钮==“纸张”){
uco.value=“纸张”;
}else if(用户按钮==“剪刀”){
uco.value=“剪刀”;
}否则{
日志(userButton+“无效!!”);
}
}
函数确定浏览器(用户按钮,组件选择){
if(userButton==compChoice){
返回“这是平局!”;
}
否则如果(userButton==“ROCK”和&compChoice==“PAPER”){
返回“计算机获胜!”;
}
else if(用户按钮==='PAPER'和&compChoice==='SCISSORS'){
返回“计算机获胜!”;
}
否则如果(userButton=='SCISSORS'和&compChoice=='ROCK'){
返回“计算机获胜!”;
}
否则如果(userButton=='PAPER'和&compChoice=='ROCK')
{
返回“你赢了!”;
}
else if(用户按钮===‘剪刀’和&compChoice===‘纸’){
返回“你赢了!”;
}
否则{
返回“你赢了!”;
}
}
我的游戏
用户选择:
计算机选择:
如果不查看调用了什么determineWinner
,就不可能确切地说出问题的根源,但看起来这两个参数总是相同的。请将问题编辑为可运行的警报(determineWinner())
您没有用任何东西调用DeterminateWinner
…您可以使用alert()
——但实际上,您应该知道如何使用console.log()
。浏览器有控制台。了解如何访问它们。非常适合调试。@某些性能已经确定了问题的根源。您将determineWinner()
定义为一个接受两个值的函数,但您调用它时没有值。这意味着缺少的值是隐式的undefined
,并且由于undefined===undefined
是true
,因此函数将其作为平分。您需要将相关的值传递给函数。然后--您需要进行更多的调试。你的问题开始演变成一个完全不同的问题。