9/9 next steps


#1

var userChoice = prompt("Do you choose rock, paper or scissors?");
var checkChoice = function (userChoice)
{
do
{
userChoice = prompt("Do you choose rock, paper or scissors?");
} while(userChoice !== "rock" && userChoice !== "paper" && userChoice !== "scissors");
};

console.log("User: " + userChoice);
var computerChoice = Math.random();
if (computerChoice < 0.34) {
computerChoice = "rock";
} else if(computerChoice <= 0.67) {
computerChoice = "paper";
} else {
computerChoice = "scissors";
}
console.log("Computer: " + computerChoice);
var compare = function (userChoise, computerChoice)
{
if(userChoise === computerChoice)
{
return "The result is a tie!";
}
else if(userChoise === "rock")
{
if(computerChoice === "scissors")
{
return "rock wins";
}
else
{
return "paper wins";
}
}
else if(userChoise === "paper")
{
if(computerChoice === "rock")
{
return "paper wins";
}
else
{
return "scissors wins";
}
}
else
{
if(computerChoice === "rock")
{
return "rock wins";
}
else
{
return "scissors wins";
}
}
};
compare(userChoice, computerChoice);

when I want to check that the user is making the right choice it doesn't work


#2

@intidharessefi,

var getUserChoice = function() { 
    var theChoice;
    do {
      theChoice = prompt("Do you choose rock, paper or scissors?");
    } while(theChoice !== "rock" &&
          theChoice !== "paper" &&
          theChoice !== "scissors");
    return theChoice;

};
var userChoice = getUserChoice();
console.log("userChoice: "+userChoice);

What if a user makes an inappropriate choice like 'dog'? How can we extend the function to handle that?
#3

+++ function talk

the FUNCTION talk

var myFunc = function( param1, param2) {
       //Begin of  anonymous FUNCTION-BODY
       //VARIABLE -myFunc- has an -anonymous function- assigned
       //this -anonymous function- has 2 PARAMETERS param1 and param2
       //param1 and param2 PARAMETERS are used 
       //as -local- VARIABLES throughout the FUNCTION-BODY

      console.log( param1 + " and " + param2 ) ;

      //End of anonymous FUNCTION-BODY
};

If you want to call/execute the anonymous function
you will have to add a pair of parentheses to the variable myFunc
like
myFunc();
As the anonymous function was defined
as having 2 parameters
you have to provide 2 arguments
in our case 2 string VALUES "Alena" and "Lauren"
like
myFunc("Alena","Lauren");

some quotes from the outer-world:

**argument is the value/variable/reference being passed in,
parameter is the receiving variable used within the function/block**

OR

**"parameters" are called "formal parameters",
while "arguments" are called "actual parameters".**


#4

++++ function with 1 parameter using return-statement

var myFunction = function( param1 ) {
       //Begin of FUNCTION-BODY
       //myFunction =function= has 1 PARAMETER param1
       //this param1 PARAMETER is used as a -local- VARIABLE
       //throughout the FUNCTION-BODY

      return param1;

      //End of FUNCTION-BODY
      };

you have defined a myFunction function
which takes 1 parameter param1
this param1 parameter is used
as a variable throughout the FUNCTION-BODY.

If you want to call/execute this myFunction function
and this myFunction function was defined
as having 1 parameter param1
you will have to provide 1 argument
in our case a "number VALUE" 4
myFunction( 4 );

some quotes from the outer-world:

**argument is the value/variable/reference being passed in,
parameter is the receiving variable used within the function/block**

OR

**"parameters" are called "formal parameters",
while "arguments" are called "actual parameters".**


#5

The do while loop is ok, the problem is that you use userChoice two often. To be more precise. By making userChoice a parameter of your checkChoice function you create a second variable userChoice that is independet from the global one and only exists inside of your function. The problem is now that this makes you're redefinition of userChoice pretty pointless.

The two options I could think of are easier to make a choose function something like this:

var chooseOption = function(){
    var choice;
    do
    {
        choice = prompt("Do you choose rock, paper or scissors?");
    } while(userChoice !== "rock" && userChoice !== "paper" && userChoice !== "scissors");
    return choice;
}
userChoice = chooseOption();

or that you let the user pick and then veryfy it e.g.

var checkChoice = function(choice){
    //returns either true or false
    return userChoice !== "rock" && userChoice !== "paper" && userChoice !== "scissors"
}

do
{
    userChoice = prompt("Do you choose rock, paper or scissors?");
} while(checkChoice(userChoice));

#6

Your compare function
has a missing ELSE-IF ....

Please read
http://www.codecademy.com/forum_questions/559dcb4be39efe550f00006b


#7

Thank you for helping.


#8

Nice code
i was looking for this kind a code :smile:love it :smile: