2016-06-30 4 views
0
var gameFunction = function() 
{ 
    var userChoice = prompt("What do you choose: rock, paper, or scissors?") 

    var computerChoice = Math.random(); 

    if (0 < computerChoice < 0.33) 
    { 
     computerChoice = "rock"; 
    } 
    else if (0.33 < computerChoice < 0.67) 
    { 
     computerChoice = "scissors"; 
    } 
    else 
    { 
     computerChoice = "paper"; 
    } 

    console.log("Computer choice: ",computerChoice) 

    if (userChoice === computerChoice) 
    { 
     return "The result is a tie! Enter a new result?" 
     gameFunction(); 
    } 

    else if (userChoice === "rock") 
    { 
     if (computerChoice === "scissors") 
     { 
      return "rock wins" 
     } 
     else if (computerChoice === "paper") 
     { 
     return "paper wins" 
     } 
    } 

    else if (userChoice === "paper") 
    { 
     if (computerChoice === "rock") 
     { 
      return "paper wins" 
     } 
     else if (computerChoice === "scissors") 
     { 
      return "scissors win" 
     } 
    } 

    else if (userChoice === "scissors") 
    { 
     if (computerChoice === "paper") 
     { 
      return "scissors wins" 
     } 
     else if (computerChoice === "rock") 
     { 
      return "rock win" 
     } 
    } 
} 

gameFunction(); 

Это 9/9 часть игры «Скальные бумажные ножницы» от Codecademy: Javascript.Функция Javascript не запускается при вызове

Моя проблема заключается в следующем:

Когда пользователь и компьютерных связей, он должен повторно запустить всю функцию «gameFunction», то есть он должен задать новый ввод от пользователя и получить новый вход от компьютер.

Однако программа просто распечатывает «Результат - это галстук!». без повторного запуска «gameFunction». Как я могу это исправить? не

+0

', если (0 ', если (0 Tushar

+1

После return', не более код запускается внутри функции – Reeno

ответ

1

Нет строки выполняется после оператора возврата .. попробовать

gameFunction(); 
return "The result is a tie! Enter a new result?" 
+0

Но тогда он в конечном итоге отобразит результат исходной привязанной игры * после завершения второй игры. Не будет ли это путать игрока? – nnnnnn

+0

u может дать задержку функцией setTimeout. логика и требования –

0

Изменить возврат для предупреждения(), как показано ниже:

От:

return "The result is a tie! Enter a new result?" 

To:

alert("The result is a tie! Enter a new result?"); 
1

Возвратный стат ement выходит из функции «gameFunction», поэтому не выполняет следующую строку. Попробуйте использовать строку вместо того, чтобы, как это:

if (userChoice === computerChoice) 
{ 
    prompt("The result is a tie! Enter a new result?"); 
    gameFunction(); 
} 

Таким образом, пользователь может ответить на вашу строку, и вы можете использовать его, чтобы решить, если игра продолжится. Вы всегда можете просто использовать предупреждение, а :)

0

что по этому поводу: https://jsfiddle.net/41gcfL6g/

Дело здесь при добавлении параметра в функцию, так что вы можете определить, был галстук в последний раз вы играли. И тогда в случае равенства, вместо вызова функции после возвращения, вы возвращаете результат метода gameFunction

1

возвратных степенные gameFunction() внутри gameFunction() потому что управления возвращается к первой вызывающей функции.

if (userChoice === computerChoice) 
{ 
    return "The result is a tie! Enter a new result?" 
    gameFunction(); 
} 

Так что вместо возврата вы можете распечатать сообщение там, где есть галстук.

if (userChoice === computerChoice) 
{ 
    alert("The result is a tie! Enter a new result?") 
    gameFunction(); 
} 

и когда вышеуказанное условие не выполняется, оно просто возвращается в зону вызова и останавливается.

0

см скрипку, не используйте возврат, console.log https://jsfiddle.net/o62vda05/

var userChoice; 

function startGame() 
{ 
    userChoice = prompt("What do you choose: rock, paper, or scissors?"); 
    gameFunction(); 
} 

function gameFunction() 
{ 
    var computerChoice = Math.random(); 

    if (0 < computerChoice < 0.33) 
    { 
     computerChoice = "rock"; 
    } 
    else if (0.33 < computerChoice < 0.67) 
    { 
     computerChoice = "scissors"; 
    } 
    else 
    { 
     computerChoice = "paper"; 
    } 

    console.log("Computer choice: ",computerChoice) 

    if (userChoice === computerChoice) { 
     console.log("The result is a tie! Enter a new result?"); 
     startGame(); 
    } else if (userChoice === "rock") { 
     if (computerChoice === "scissors") 
     { 
      console.log("rock wins"); 
     } 
     else if (computerChoice === "paper") 
     { 
      console.log("paper wins"); 
     } 
    } else if (userChoice === "paper") { 
     if (computerChoice === "rock") { 
      console.log("paper wins"); 
     } else if (computerChoice === "scissors") { 
      console.log ("scissors win"); 
     } 
    } else if (userChoice === "scissors") { 
     if (computerChoice === "paper") { 
      console.log ("scissors wins"); 
     } else if (computerChoice === "rock") { 
      console.log("rock win"); 
     } 
    } 
} 

startGame(); 
Смежные вопросы