2015-07-05 17:12:52 -07:00
{
"name" : "Basic JavaScript" ,
2015-08-05 11:57:58 -07:00
"order" : 0.005 ,
2015-07-05 17:12:52 -07:00
"challenges" : [
2015-07-09 00:26:16 +01:00
{
2015-07-24 16:08:45 -07:00
"id" : "bd7123c9c441eddfaeb4bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Comment your JavaScript Code" ,
2015-07-09 00:26:16 +01:00
"difficulty" : "9.98" ,
"description" : [
2015-08-14 14:40:02 -07:00
"Comments are lines of code that your computer will intentionally ignore. Comments are a great way to leave notes to yourself and to other people who will later need to figure out what it does." ,
"Let's take a look at the two ways you can write comments in JavaScript." ,
"The double-slash comment will comment out the remainder of the text on the current line:" ,
"<code>// This is a comment.</code>" ,
"The slash-star-star-slash comment will comment out everything between the <code>/*</code> and the <code>*/</code> characters:" ,
"<code>/* This is also a comment */</code>" ,
2015-08-13 22:07:54 -07:00
"Try creating one of each."
2015-07-09 00:26:16 +01:00
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert(editor.getValue().match(/(\\/\\/)...../g), 'Create a <code>\\/\\/</code> style comment that contains at least five letters');" ,
"assert(editor.getValue().match(/(\\/\\*)...../g), 'Create a <code>\/\\* \\*\/</code> style comment that contains at least five letters.');" ,
"assert(editor.getValue().match(/(\\*\\/)/g), 'Make sure that you close the comment with a <code>\\*\/</code>');"
2015-07-09 00:26:16 +01:00
] ,
"challengeSeed" : [
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-09 00:26:16 +01:00
"challengeType" : 1
} ,
2015-07-05 17:12:52 -07:00
{
2015-07-23 16:14:45 -07:00
"id" : "bd7123c9c441eddfaeb5bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Understand Boolean Values" ,
2015-07-09 00:26:16 +01:00
"difficulty" : "9.98001" ,
2015-07-05 17:12:52 -07:00
"description" : [
2015-08-13 22:07:54 -07:00
"In computer science, \"data structures\" are variables that hold data. JavaScript has seven of these. For example, the <code>Number</code> data structure holds numbers." ,
"Let's learn about the most basic data structure of all: the <code>Boolean</code>. Booleans can only hold the value of either true or false. They are basically little on-off switches." ,
"Let's modify our <code>welcomeToBooleans</code>function so that it will return <code>true</code>instead of <code>false</code>when the run button is clicked."
2015-07-05 17:12:52 -07:00
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert(typeof(welcomeToBooleans()) === 'boolean', 'The <code>welcomeToBooleans()</code> function should return a boolean (true/false) value.');" ,
"assert(welcomeToBooleans() === true, '<code>welcomeToBooleans()</code> should return true.');"
2015-07-05 17:12:52 -07:00
] ,
"challengeSeed" : [
"function welcomeToBooleans() {" ,
2015-08-13 22:07:54 -07:00
"" ,
"// don't change code above here" ,
"" ,
2015-07-05 17:12:52 -07:00
"return false;" ,
2015-08-13 22:07:54 -07:00
"" ,
"// don't change code below here" ,
2015-07-05 17:12:52 -07:00
"}" ,
"" ,
"welcomeToBooleans();"
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-05 17:12:52 -07:00
"challengeType" : 1
} ,
{
2015-07-23 16:14:45 -07:00
"id" : "bd7123c9c443eddfaeb5bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Declare JavaScript Variables" ,
2015-07-05 17:12:52 -07:00
"difficulty" : "9.9801" ,
"description" : [
2015-08-13 22:07:54 -07:00
"When we store data in a <code>data structure</code>, we call it a <code>variables</code>. These variables are no different from the x and y variables you use in basic math." ,
"Let's create our first variable and call it \"myName\"." ,
"You'll notice that in <code>myName</code>, we didn't use a space, and that the \"N\" is capitalized. JavaScript variables are written in <code>camel case</code>. An example of camel case is: camelCase." ,
"Now, use the <code>var</code> keyword to create a variable called <code>myName</code>. Set its value to your name, in double quotes." ,
2015-07-05 17:12:52 -07:00
"Look at the <code>ourName</code> example if you get stuck."
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert((function(){/**/if(typeof(myName) !== \"undefined\" && typeof(myName) === \"string\" && myName.length > 0){return(true);}else{return(false);}/**/})(), 'myName should be a string that contains at least one character in it');"
2015-07-05 17:12:52 -07:00
] ,
"challengeSeed" : [
2015-07-09 00:26:16 +01:00
"// var ourName = \"Free Code Camp\";" ,
"" ,
2015-08-13 22:07:54 -07:00
"" ,
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
"// You'll learn about functions soon." ,
2015-07-09 00:26:16 +01:00
"" ,
2015-08-13 15:32:40 -07:00
"if(typeof(myName) !== \"undefined\"){(function(v){return(v);})(myName);}"
2015-07-05 17:12:52 -07:00
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-05 17:12:52 -07:00
"challengeType" : 1
} ,
{
2015-07-23 16:14:45 -07:00
"id" : "bd7123c9c444eddfaeb5bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Declare String Variables" ,
2015-07-13 21:55:36 +01:00
"difficulty" : "9.9802" ,
2015-07-05 17:12:52 -07:00
"description" : [
2015-08-13 23:44:13 -07:00
"In the previous challenge, we used the code <code>var myName = \"your name\"</code>. This is what we call a <code>String</code> variable. It is nothing more than a \"string\" of characters. JavaScript strings are always wrapped in quotes." ,
"Now let's create two new string variables: <code>myFirstName</code>and <code>myLastName</code> and assign them the values of your first and last name, respectively."
2015-07-05 17:12:52 -07:00
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert((function(){if(typeof(myFirstName) !== \"undefined\" && typeof(myFirstName) === \"string\" && myFirstName.length > 0){return(true);}else{return(false);}})(), 'myFirstName should be a string with a least one character in it');" ,
"assert((function(){if(typeof(myLastName) !== \"undefined\" && typeof(myLastName) === \"string\" && myLastName.length > 0){return(true);}else{return(false);}})(), 'myLastName should be a string with a least one character in it');"
2015-07-05 17:12:52 -07:00
] ,
"challengeSeed" : [
2015-07-09 00:26:16 +01:00
"// ourName = \"Free Code Camp\";" ,
2015-07-05 17:12:52 -07:00
"// var ourFirstName = \"Free\";" ,
"// var ourLastName = \"Code Camp\";" ,
"" ,
2015-07-09 00:26:16 +01:00
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
"// You'll learn about functions soon." ,
2015-08-13 15:32:40 -07:00
"if(typeof(myFirstName) !== \"undefined\" && typeof(myLastName) !== \"undefined\"){(function(y,z){return(y + ', ' + z);})(myFirstName, myLastName);}"
2015-07-05 17:12:52 -07:00
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-05 17:12:52 -07:00
"challengeType" : 1
} ,
{
2015-07-23 16:14:45 -07:00
"id" : "bd7123c9c448eddfaeb5bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Check the Length Property of a String Variable" ,
2015-07-05 17:12:52 -07:00
"difficulty" : "9.9809" ,
"description" : [
"Use the <code>.length</code> property to count the number of characters in the <code>lastNameLength</code> variable." ,
2015-08-13 23:44:13 -07:00
"For example, if we created a variable <code>var firstName = \"Charles\"</code>, we could find out how long the string \"Charles\" is by using the <code>firstName.length</code> property."
2015-07-05 17:12:52 -07:00
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert((function(){if(typeof(lastNameLength) !== \"undefined\" && typeof(lastNameLength) === \"number\" && lastNameLength === 8){return(true);}else{return(false);}})(), 'lastNameLength should be equal to eight.');" ,
"assert((function(){if(editor.getValue().match(/\\.length/gi) && editor.getValue().match(/\\.length/gi).length >= 2 && editor.getValue().match(/var lastNameLength \\= 0;/gi) && editor.getValue().match(/var lastNameLength \\= 0;/gi).length >= 1){return(true);}else{return(false);}})(), 'You should be getting the length of <code>lastName</code> by using <code>.length</code> like this: <code>lastName.length</code>');"
2015-07-05 17:12:52 -07:00
] ,
"challengeSeed" : [
2015-08-03 17:01:27 +01:00
"var firstNameLength = 0;" ,
"var lastNameLength = 0;" ,
2015-08-13 23:44:13 -07:00
"var firstName = \"Ada\";" ,
2015-07-05 17:12:52 -07:00
"" ,
2015-08-03 17:01:27 +01:00
"firstNameLength = firstName.length;" ,
2015-07-05 17:12:52 -07:00
"" ,
2015-08-13 23:44:13 -07:00
"var lastName = \"Lovelace\";" ,
2015-07-05 17:12:52 -07:00
"" ,
2015-08-03 17:01:27 +01:00
"lastNameLength = lastName;" ,
2015-07-05 17:12:52 -07:00
"" ,
"" ,
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
"// You'll learn about functions soon." ,
2015-08-14 01:13:07 -07:00
"if(typeof(lastNameLength) !== \"undefined\"){(function(v){return(v);})(lastNameLength);}"
2015-07-05 17:12:52 -07:00
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-05 17:12:52 -07:00
"challengeType" : 1
} ,
{
2015-07-23 16:14:45 -07:00
"id" : "bd7123c9c549eddfaeb5bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Use Bracket Notation to Find the First Character in a String" ,
2015-07-05 17:12:52 -07:00
"difficulty" : "9.9810" ,
"description" : [
"<code>Bracket notation</code> is a way to get a character at a specific <code>index</code> within a string." ,
"Computers don't start counting at 1 like humans do. They start at 0." ,
2015-08-13 23:44:13 -07:00
"For example, the character at index 0 in the word \"Charles\" is \"C\". So if <code>var firstName = \"Charles\"</code>, you can get the value of the first letter of the string by using <code>firstName[0]</code>." ,
"Use <code>bracket notation</code> to find the first character in a the <code>firstLetterOfLastName</code> variable." ,
2015-07-05 17:12:52 -07:00
"Try looking at the <code>firstLetterOfFirstName</code> variable declaration if you get stuck."
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert((function(){if(typeof(firstLetterOfLastName) !== \"undefined\" && editor.getValue().match(/\\[0\\]/gi) && typeof(firstLetterOfLastName) === \"string\" && firstLetterOfLastName === \"L\"){return(true);}else{return(false);}})(), 'The first letter of firstLetterOfLastName should be a L');"
2015-07-05 17:12:52 -07:00
] ,
"challengeSeed" : [
2015-08-03 20:43:23 +01:00
"var firstLetterOfLastName = \"\"" ,
"var firstLetterOfLastName = \"\"" ,
"" ,
2015-08-13 23:44:13 -07:00
"var firstName = \"Ada\";" ,
2015-07-05 17:12:52 -07:00
"" ,
2015-08-03 20:43:23 +01:00
"firstLetterOfFirstName = firstName[0];" ,
2015-07-05 17:12:52 -07:00
"" ,
2015-08-13 23:44:13 -07:00
"var lastName = \"Lovelace\";" ,
2015-07-05 17:12:52 -07:00
"" ,
2015-08-03 20:43:23 +01:00
"firstLetterOfLastName = lastName;" ,
2015-07-05 17:12:52 -07:00
"" ,
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
"// You'll learn about functions soon." ,
2015-07-09 00:26:16 +01:00
"(function(v){return(v);})(firstLetterOfLastName);"
2015-07-05 17:12:52 -07:00
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-05 17:12:52 -07:00
"challengeType" : 1
} ,
{
2015-07-23 16:14:45 -07:00
"id" : "bd7123c9c450eddfaeb5bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Use Bracket Notation to Find the Nth Character in a String" ,
2015-07-05 17:12:52 -07:00
"difficulty" : "9.9811" ,
"description" : [
2015-08-13 23:44:13 -07:00
"You can also use <code>bracket Notation</code>to get the character at other positions within a string." ,
"Remember that computers start counting at 0, so the first character is actually the zeroth character." ,
"Let's try to set <code>thirdLetterOfLastName</code>to equal the <code>third letter</code> of the <code>lastName</code> variable." ,
2015-07-05 17:12:52 -07:00
"Try looking at the <code>secondLetterOfFirstName</code> variable declaration if you get stuck."
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert(thirdLetterOfLastName === 'v', 'The third last letter of lastName should be a \"v\"');"
2015-07-05 17:12:52 -07:00
] ,
"challengeSeed" : [
2015-08-13 23:44:13 -07:00
"var firstName = \"Ada\";" ,
2015-07-05 17:12:52 -07:00
"" ,
"var secondLetterOfFirstName = firstName[1];" ,
"" ,
2015-08-13 23:44:13 -07:00
"var lastName = \"Lovelace\";" ,
2015-07-05 17:12:52 -07:00
"" ,
"var thirdLetterOfLastName = lastName;" ,
"" ,
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
"// You'll learn about functions soon." ,
2015-07-09 00:26:16 +01:00
"(function(v){return(v);})(thirdLetterOfLastName);"
2015-07-05 17:12:52 -07:00
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-05 17:12:52 -07:00
"challengeType" : 1
} ,
{
2015-07-23 16:14:45 -07:00
"id" : "bd7123c9c451eddfaeb5bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Use Bracket Notation to Find the Last Character in a String" ,
2015-07-05 17:12:52 -07:00
"difficulty" : "9.9812" ,
"description" : [
"In order to get the last letter of a string, you can subtract one from the string's length." ,
2015-08-13 23:44:13 -07:00
"For example, if <code>var firstName = \"Charles\"</code>, you can get the value of the last letter of the string by using <code>firstName[firstName.length - 1]</code>." ,
"Use <code>bracket notation</code> to find the last character in the <code>lastName</code> variable." ,
2015-07-05 17:12:52 -07:00
"Try looking at the <code>lastLetterOfLastName</code> variable declaration if you get stuck."
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert(lastLetterOfLastName === \"e\", 'lastLetterOfLastName should be \"e\"');" ,
"assert(editor.getValue().match(/\\.length/g), 'You have to use <code>.length</code> to get the last letter');"
2015-07-05 17:12:52 -07:00
] ,
"challengeSeed" : [
2015-08-13 23:44:13 -07:00
"var firstName = \"Ada\";" ,
2015-07-05 17:12:52 -07:00
"" ,
"var lastLetterOfFirstName = firstName[firstName.length - 1];" ,
"" ,
2015-08-13 23:44:13 -07:00
"var lastName = \"Lovelace\";" ,
2015-07-05 17:12:52 -07:00
"" ,
"var lastLetterOfLastName = lastName;" ,
"" ,
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
"// You'll learn about functions soon." ,
2015-07-09 00:26:16 +01:00
"(function(v){return(v);})(lastLetterOfLastName);"
2015-07-05 17:12:52 -07:00
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-05 17:12:52 -07:00
"challengeType" : 1
} ,
{
2015-07-23 16:14:45 -07:00
"id" : "bd7123c9c452eddfaeb5bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Use Bracket Notation to Find the Nth-to-Last Character in a String" ,
2015-07-05 17:12:52 -07:00
"difficulty" : "9.9813" ,
"description" : [
"In order to get the last letter of a string, you can subtract one from the string's length." ,
2015-08-13 23:44:13 -07:00
"For example, you can get the value of the third-to-last letter of the <code>var firstName = \"Charles\"</code> string by using <code>firstName[firstName.length - 3]</code>." ,
"Use <code>bracket notation</code> to find the second-to-last character in the <code>lastName</code> string." ,
2015-07-05 17:12:52 -07:00
"Try looking at the <code>lastLetterOfLastName</code> variable declaration if you get stuck."
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert(secondToLastLetterOfLastName === 'c', 'secondToLastLetterOfLastName should be \"c\".');" ,
"assert(editor.getValue().match(/\\.length/g), 'You have to use .length to get the third last letter.');"
2015-07-05 17:12:52 -07:00
] ,
"challengeSeed" : [
2015-08-13 23:44:13 -07:00
"var firstName = \"Ada\";" ,
2015-07-05 17:12:52 -07:00
"" ,
2015-08-05 17:31:42 +01:00
"var thirdToLastLetterOfFirstName = firstName[firstName.length - 3];" ,
2015-07-05 17:12:52 -07:00
"" ,
2015-08-13 23:44:13 -07:00
"var lastName = \"Lovelace\";" ,
2015-07-05 17:12:52 -07:00
"" ,
"var secondToLastLetterOfLastName = lastName;" ,
"" ,
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
"// You'll learn about functions soon." ,
2015-07-09 00:26:16 +01:00
"(function(v){return(v);})(secondToLastLetterOfLastName);"
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-09 00:26:16 +01:00
"challengeType" : 1
} ,
{
2015-07-24 16:08:45 -07:00
"id" : "cf1111c1c11feddfaeb3bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Add Two Numbers with JavaScript" ,
2015-07-13 21:55:36 +01:00
"difficulty" : "9.98141" ,
2015-07-09 00:26:16 +01:00
"description" : [
2015-08-13 23:44:13 -07:00
"Let's try to add two numbers using JavaScript." ,
"JavaScript uses the <code>+</code> symbol for addition." ,
2015-08-14 01:13:07 -07:00
"Replace the <code>0</code> with the correct number so you can get the result mentioned in the comment."
2015-07-13 21:55:36 +01:00
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert((function(){if(sum === 20 && editor.getValue().match(/\\+/g)){return(true);}else{return(false);}})(), 'Make the variable <code>sum</code> equal 20');"
2015-07-13 21:55:36 +01:00
] ,
"challengeSeed" : [
2015-08-13 23:44:13 -07:00
"var sum = 10 + 0; //make this equal to 20 by changing the 0 into the appropriate number." ,
2015-07-13 21:55:36 +01:00
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
"// You'll learn about functions soon." ,
2015-08-13 23:44:13 -07:00
"(function(z){return('sum='+z);})(sum);"
2015-07-13 21:55:36 +01:00
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-13 21:55:36 +01:00
"challengeType" : 1
} ,
{
2015-07-24 16:08:45 -07:00
"id" : "cf1111c1c11feddfaeb4bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Subtract One Number from Another with JavaScript" ,
2015-07-13 21:55:36 +01:00
"difficulty" : "9.98142" ,
"description" : [
2015-08-13 23:44:13 -07:00
"We can also subtract one number from another." ,
"JavaScript uses use the <code>-</code> symbol for subtraction." ,
2015-08-14 01:13:07 -07:00
"Replace the <code>0</code> with the correct number so you can get the result mentioned in the comment."
2015-07-13 21:55:36 +01:00
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert((function(){if(difference === 12 && editor.getValue().match(/\\-/g)){return(true);}else{return(false);}})(), 'Make the variable <code>difference</code> equal 12');"
2015-07-13 21:55:36 +01:00
] ,
"challengeSeed" : [
2015-08-13 23:44:13 -07:00
"var difference = 45 - 0; //make this equal to 12 by changing the 0 into the appropriate number." ,
2015-07-13 21:55:36 +01:00
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
"// You'll learn about functions soon." ,
2015-08-13 23:44:13 -07:00
"(function(z){return('difference='+z);})(difference);"
2015-07-13 21:55:36 +01:00
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-13 21:55:36 +01:00
"challengeType" : 1
} ,
{
2015-07-25 20:22:13 -07:00
"id" : "cf1231c1c11feddfaeb5bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Multiply Two Numbers with JavaScript" ,
2015-07-13 21:55:36 +01:00
"difficulty" : "9.98143" ,
"description" : [
2015-08-13 23:44:13 -07:00
"We can also multiply one number by another." ,
"JavaScript uses use the <code>*</code> symbol for multiplication." ,
2015-08-14 01:13:07 -07:00
"Replace the <code>0</code> with the correct number so you can get the result mentioned in the comment."
2015-07-13 21:55:36 +01:00
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert((function(){if(product === 80 && editor.getValue().match(/\\*/g)){return(true);}else{return(false);}})(), 'Make the variable <code>product</code> equal 80.');"
2015-07-13 21:55:36 +01:00
] ,
"challengeSeed" : [
2015-08-13 23:44:13 -07:00
"var product = 8 * 0; //make this equal to 80 by changing the 0 into the appropriate number." ,
2015-07-13 21:55:36 +01:00
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
"// You'll learn about functions soon." ,
2015-08-13 23:44:13 -07:00
"(function(z){return('product='+z);})(product)"
2015-07-13 21:55:36 +01:00
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-13 21:55:36 +01:00
"challengeType" : 1
} ,
{
2015-07-24 16:08:45 -07:00
"id" : "cf1111c1c11feddfaeb6bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Divide One Number by Another with JavaScript" ,
2015-07-13 21:55:36 +01:00
"difficulty" : "9.9814" ,
"description" : [
2015-08-13 23:44:13 -07:00
"We can also divide one number by another." ,
"JavaScript uses use the <code>/</code> symbol for division." ,
2015-08-14 01:13:07 -07:00
"Replace the <code>0</code> with the correct number so you can get the result mentioned in the comment."
2015-07-13 21:55:36 +01:00
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert((function(){if(quotient === 2 && editor.getValue().match(/\\//g)){return(true);}else{return(false);}})(), 'Make the variable <code>quotient</code> equal 2.');"
2015-07-13 21:55:36 +01:00
] ,
"challengeSeed" : [
2015-08-13 23:44:13 -07:00
"var quotient = 66 / 0; //make this equal to 2 by changing the 0 into the appropriate number." ,
2015-07-13 21:55:36 +01:00
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
"// You'll learn about functions soon." ,
2015-08-13 23:44:13 -07:00
"(function(z){return('quotient='+z);})(quotient);"
2015-07-13 21:55:36 +01:00
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-13 21:55:36 +01:00
"challengeType" : 1
} ,
{
2015-07-25 20:22:13 -07:00
"id" : "cf1391c1c11feddfaeb4bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Create Decimal Numbers with JavaScript" ,
2015-07-13 21:55:36 +01:00
"difficulty" : "9.9815" ,
"description" : [
2015-08-13 23:44:13 -07:00
"JavaScript number variables can also have decimals." ,
2015-08-02 21:15:39 +01:00
"Let's create a variable <code>myDecimal</code> and give it a decimal value."
2015-07-09 00:26:16 +01:00
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert((function(){if(typeof(myDecimal) !== \"undefined\" && typeof(myDecimal) === \"number\" && editor.getValue().match(/\\./g).length >=2){return(true);}else{return(false);}})(), 'myDecimal should be a decimal point number.');"
2015-07-09 00:26:16 +01:00
] ,
"challengeSeed" : [
2015-08-14 01:13:07 -07:00
"// var ourDecimal = 5.7;" ,
2015-08-13 23:44:13 -07:00
"// Create a number with a decimal point here called myDecimal" ,
2015-07-09 00:26:16 +01:00
"" ,
"" ,
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
"// You'll learn about functions soon." ,
2015-08-14 01:13:07 -07:00
"(function(){if(typeof(myDecimal) !== \"undefined\"){return(myDecimal);}})();"
2015-07-09 00:26:16 +01:00
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-09 00:26:16 +01:00
"challengeType" : 1
} ,
{
2015-07-23 16:14:45 -07:00
"id" : "bd7993c9c69feddfaeb7bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Perform Arithmetic Operations on Decimals with JavaScript" ,
2015-07-13 21:55:36 +01:00
"difficulty" : "9.98151" ,
2015-07-09 00:26:16 +01:00
"description" : [
2015-08-14 01:13:07 -07:00
"In JavaScript, you can also perform calculations with decimal numbers, just like whole numbers." ,
"Replace the <code>0.0</code> with the correct number so that you get the result mentioned in the comments."
2015-07-09 00:26:16 +01:00
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert((function(){if(product === 5.0 && editor.getValue().match(/\\*/g)){return(true);}else{return(false);}})(), 'Make the variable <code>product</code> equal 5.0.');"
2015-07-09 00:26:16 +01:00
] ,
"challengeSeed" : [
2015-08-14 01:13:07 -07:00
"var quotient = 4.4 / 2.0; // equals 2.2" ,
"var product = 2.0 * 0.0; // equals 5.0" ,
2015-07-09 00:26:16 +01:00
"" ,
"" ,
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
"// You'll learn about functions soon." ,
2015-08-14 01:13:07 -07:00
"(function(y){return('product='+y);})(product);"
2015-07-09 00:26:16 +01:00
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-09 00:26:16 +01:00
"challengeType" : 1
} ,
{
2015-07-23 16:14:45 -07:00
"id" : "bd7993c9c69feddfaeb8bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Store Multiple Values in one Variable using JavaScript Arrays" ,
2015-07-09 00:26:16 +01:00
"difficulty" : "9.9816" ,
"description" : [
2015-08-14 01:13:07 -07:00
"With JavaScript <code>array</code> variables, we can store several pieces of data in one place." ,
"You start an array declaration with an opening bracket, end it with a closing bracket, and put a comma between each entry, like this: <code>var sandwich = [\"peanut butter\", \"jelly\", \"bread\"]</code>." ,
"Now let's create a new array called <code>myArray</code> that contains both a <code>string</code> and a <code>number</code>." ,
"Refer to the comments if you get stuck."
2015-07-09 00:26:16 +01:00
] ,
"tests" : [
2015-08-14 01:13:07 -07:00
"assert(typeof(myArray) == 'object', 'myArray should be an array');" ,
"assert(typeof(myArray[0]) !== 'undefined' && typeof(myArray[0]) == 'string', 'The first item in myArray should be a string');" ,
"assert(typeof(myArray[1]) !== 'undefined' && typeof(myArray[1]) == 'number', 'The second item in myArray should be a number');"
2015-07-09 00:26:16 +01:00
] ,
"challengeSeed" : [
2015-08-13 15:32:40 -07:00
"//var array = [\"John\", 23];" ,
2015-07-09 00:26:16 +01:00
"" ,
"var myArray = [];" ,
"" ,
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
"// You'll learn about functions soon." ,
2015-07-09 00:26:16 +01:00
"(function(z){return(z);})(myArray);"
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-09 00:26:16 +01:00
"challengeType" : 1
} ,
2015-07-13 21:55:36 +01:00
{
2015-07-24 16:08:45 -07:00
"id" : "cf1111c1c11feddfaeb7bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Nest one Array within Another Array" ,
2015-07-13 21:55:36 +01:00
"difficulty" : "9.98161" ,
"description" : [
2015-08-14 01:13:07 -07:00
"You can also nest arrays within other arrays, like this: <code>[[\"Bulls\", 43], \"Jordan\"]</code>." ,
"Let's now go create a nested array called <code>myArray</code>."
2015-07-13 21:55:36 +01:00
] ,
"tests" : [
2015-08-14 20:26:05 +01:00
"assert((function(){if(typeof(myArray) !== \"undefined\" && typeof(myArray) === \"object\" && typeof(myArray[0]) !== \"undefined\" && typeof(myArray[0]) === \"object\" && editor.getValue().match(/\\[\\s?\\[/g).length >= 1 && editor.getValue().match(/\\]\\s?\\]/g).length >= 1){return(true);}else{return(false);}})(), 'myArray should contain at least one array');"
2015-07-13 21:55:36 +01:00
] ,
"challengeSeed" : [
2015-08-14 01:13:07 -07:00
"var ourArray = [[\"the universe\", \"everything\"], 42];" ,
2015-07-13 21:55:36 +01:00
"var myArray = [];" ,
"" ,
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
"// You'll learn about functions soon." ,
2015-08-13 15:32:40 -07:00
"if(typeof(myArray) !== \"undefined\"){(function(){return(myArray);})();}"
2015-07-13 21:55:36 +01:00
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-13 21:55:36 +01:00
"challengeType" : 1
} ,
{
2015-07-24 16:08:45 -07:00
"id" : "bg9997c9c79feddfaeb9bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Access Array Data with Indexes" ,
2015-07-13 21:55:36 +01:00
"difficulty" : "9.9817" ,
"description" : [
2015-08-14 13:50:20 -07:00
"We can access the data inside arrays using <code>indexes</code>." ,
"Array indexes are written in the same bracket notation that strings use, except that instead of specifying a character, they are specifying an entry in the array." ,
"For example:" ,
"<code>var array = [1,2,3];</code>" ,
"<code>array[0]; //equals 1</code>" ,
"<code>var data = array[1];</code>" ,
"Create a variable called <code>myData</code> and set it to equal the first value of <code>myArray</code>."
2015-07-13 21:55:36 +01:00
] ,
"tests" : [
2015-08-14 13:50:20 -07:00
"assert((function(){if(typeof(myArray) != 'undefined' && typeof(myData) != 'undefined' && myArray[0] == myData){return(true);}else{return(false);}})(), 'The variable <code>myData</code> should equal the first value of myArray');"
2015-07-13 21:55:36 +01:00
] ,
"challengeSeed" : [
2015-08-14 01:13:07 -07:00
"//var ourArray = [1,2,3];" ,
"//var ourData = ourArray[0]; // equals 1" ,
2015-07-13 21:55:36 +01:00
"" ,
"var myArray = [1,2,3];" ,
"" ,
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
"// You'll learn about functions soon." ,
2015-08-14 01:13:07 -07:00
"if(typeof(myArray) !== \"undefined\" && typeof(data) !== \"undefined\"){(function(y,z){return('myArray = ' + JSON.stringify(y) + ', data = ' + JSON.stringify(z));})(myArray, data);}"
2015-07-13 21:55:36 +01:00
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-13 21:55:36 +01:00
"challengeType" : 1
} ,
{
2015-07-24 16:08:45 -07:00
"id" : "cf1111c1c11feddfaeb8bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Modify Array Data With Indexes" ,
2015-07-13 21:55:36 +01:00
"difficulty" : "9.98171" ,
"description" : [
2015-08-14 13:50:20 -07:00
"We can also modify the data stored in arrays by using indexes." ,
"For example:" ,
"<code>var ourArray = [3,2,1];</code>" ,
"<code>ourArray[0] = 1; // equals [1,2,1]</code>" ,
"Now modify the data stored at index 0 of <code>myArray</code> to the value of 3."
2015-07-13 21:55:36 +01:00
] ,
"tests" : [
2015-08-14 13:50:20 -07:00
"assert((function(){if(typeof(myArray) != 'undefined' && myArray[0] == 3 && myArray[1] == 2 && myArray[2] == 3){return(true);}else{return(false);}})(), 'myArray should now be [3,2,3]');" ,
"assert((function(){if(editor.getValue().match(/[0]/g).length >= 2 && editor.getValue().match(/=/g).length >= 2){return(true);}else{return(false);}})(), 'You should be using indexes to modify the values in myArray');"
2015-07-13 21:55:36 +01:00
] ,
"challengeSeed" : [
2015-08-14 13:50:20 -07:00
"var ourArray = [1,2,3];" ,
"ourArray[1] = 3;" ,
"// ourArray[1] now equals [1,3,3]." ,
2015-07-13 21:55:36 +01:00
"var myArray = [1,2,3];" ,
"" ,
"" ,
"" ,
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
"// You'll learn about functions soon." ,
2015-08-14 01:13:07 -07:00
"if(typeof(myArray) !== \"undefined\"){(function(){return(myArray);})();}"
2015-07-13 21:55:36 +01:00
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-13 21:55:36 +01:00
"challengeType" : 1
} ,
2015-07-09 00:26:16 +01:00
{
2015-07-23 16:14:45 -07:00
"id" : "bg9994c9c69feddfaeb9bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Manipulate Arrays With pop()" ,
2015-07-13 21:55:36 +01:00
"difficulty" : "9.9818" ,
2015-07-09 00:26:16 +01:00
"description" : [
2015-08-14 13:50:20 -07:00
"Another way to change the data in an array is with the <code>.pop()</code> function." ,
"<code>.pop()</code>is used to \"pop\" a value off of the end of an array. We can retrieve this value by performing <code>pop()</code> in a variable declaration." ,
"Any type of variable can be \"popped\" off of an array." ,
"Use the <code>.pop()</code> function to remove the last item from myArray."
2015-07-09 00:26:16 +01:00
] ,
"tests" : [
2015-08-14 13:50:20 -07:00
"assert((function(d){if(d[0] == 'John' && d[1] == 23 && d[2] == undefined){return(true);}else{return(false);}})(myArray), 'myArray should only have the first two values left([\"John\", 23])');" ,
"assert((function(d){if(d[0] == 'cat' && d[1] == 2 && d[2] == undefined){return(true);}else{return(false);}})(removed), 'myArray should only have the first two values left([\"cat\"], 2)');"
2015-07-09 00:26:16 +01:00
] ,
"challengeSeed" : [
"//var numbers = [1,2,3];" ,
2015-08-14 01:13:07 -07:00
"//console.log(numbers); // logs [1,2,3]" ,
2015-07-09 00:26:16 +01:00
"//var removed = numbers.pop();" ,
2015-08-14 01:13:07 -07:00
"//console.log(numbers); // logs [1,2]" ,
"//console.log(removed); // logs 3" ,
2015-07-09 00:26:16 +01:00
"" ,
2015-08-13 15:32:40 -07:00
"var myArray = [\"John\", 23, [\"cat\", 2]];" ,
2015-08-14 13:50:20 -07:00
"var removed = myArray; // This should be [\"cat\", 2] and myArray should now be [\"John\", 23]" ,
2015-07-09 00:26:16 +01:00
"" ,
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
"// You'll learn about functions soon." ,
2015-07-09 00:26:16 +01:00
"(function(y, z){return('myArray = ' + JSON.stringify(y) + ' & removed = ' + JSON.stringify(z));})(myArray, removed);"
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-09 00:26:16 +01:00
"challengeType" : 1
} ,
{
2015-07-23 16:14:45 -07:00
"id" : "bg9995c9c69feddfaeb9bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Manipulate Arrays With push()" ,
2015-07-09 00:26:16 +01:00
"difficulty" : "9.9818" ,
"description" : [
2015-08-14 13:50:20 -07:00
"Not only can you <code>pop()</code> data off of the end of an array, you can also <code>push()</code> data onto the end of an array." ,
"Take the myArray array and <code>push()</code> this value to the end of it: <code>[\"dog\", 3]</code>."
2015-07-09 00:26:16 +01:00
] ,
"tests" : [
2015-08-14 13:50:20 -07:00
"assert((function(d){if(d[2] != undefined && d[0] == 'John' && d[1] == 23 && d[2][0] == 'dog' && d[2][1] == 3 && d[2].length == 2){return(true);}else{return(false);}})(myArray), 'myArray should only have the first two values left([\"John\", 23, [\"dog\", 3]])');"
2015-07-09 00:26:16 +01:00
] ,
"challengeSeed" : [
2015-08-14 13:50:20 -07:00
"var ourArray = [\"Stimpson\", \"J\", [\"cat\"]];" ,
"ourArray.pop();" ,
"ourArray.push([\"happy\", \"joy\"]);" ,
"// ourArray now equals [\"Stimpson\", \"J\", [\"happy\", \"joy\"]]" ,
"" ,
2015-08-13 15:32:40 -07:00
"var myArray = [\"John\", 23, [\"cat\", 2]];" ,
2015-08-14 13:50:20 -07:00
"myArray.pop();" ,
2015-08-14 01:13:07 -07:00
"//Add a [\"dog\", 3] to the end of myArray using push()" ,
2015-07-09 00:26:16 +01:00
"" ,
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
"// You'll learn about functions soon." ,
2015-07-09 00:26:16 +01:00
"(function(z){return('myArray = ' + JSON.stringify(z));})(myArray);"
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-09 00:26:16 +01:00
"challengeType" : 1
} ,
{
2015-07-23 16:14:45 -07:00
"id" : "bg9996c9c69feddfaeb9bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Manipulate Arrays With shift()" ,
2015-07-09 00:26:16 +01:00
"difficulty" : "9.9817" ,
"description" : [
2015-08-14 13:50:20 -07:00
"<code>pop()</code> always removes the last element of an array. What if you want to remove the first? That's where <code>.shift()</code> comes in." ,
"Take the myArray array and <code>shift()</code> the first value off of it."
2015-07-09 00:26:16 +01:00
] ,
"tests" : [
2015-08-14 13:50:20 -07:00
"assert((function(d){if(d[0] == 23 && d[1][0] == 'dog' && d[1][1] == 3 && d[2] == undefined){return(true);}else{return(false);}})(myArray), 'myArray should only have the first two values left([\"John\", 23])');" ,
"assert((function(d){if(d === 'John' && typeof(myRemoved) === 'string'){return(true);}else{return(false);}})(myRemoved), 'myRemoved should contain \"John\"');"
2015-07-09 00:26:16 +01:00
] ,
"challengeSeed" : [
2015-08-14 13:50:20 -07:00
"var ourArray = [\"Stimpson\", \"J\", [\"cat\"]];" ,
"ourRemoved = ourArray.shift();" ,
"// ourArray now equals [\"J\", [\"cat\"]]" ,
"" ,
2015-08-13 15:32:40 -07:00
"var myArray = [\"John\", 23, [\"dog\", 3]];" ,
2015-08-14 13:50:20 -07:00
"var myRemoved = myArray; // This should be [\"John\"] and myArray should now be [23, [\"dog\", 3]]" ,
2015-07-09 00:26:16 +01:00
"" ,
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
"// You'll learn about functions soon." ,
2015-08-14 13:50:20 -07:00
"(function(y, z){return('myArray = ' + JSON.stringify(y) + ' & myRemoved = ' + JSON.stringify(z));})(myArray, myRemoved);"
2015-07-09 00:26:16 +01:00
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-09 00:26:16 +01:00
"challengeType" : 1
} ,
{
2015-07-23 16:14:45 -07:00
"id" : "bg9997c9c69feddfaeb9bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Manipulate Arrays With unshift()" ,
2015-07-09 00:26:16 +01:00
"difficulty" : "9.9818" ,
"description" : [
2015-08-06 02:06:53 -07:00
"Now that we've learned how to <code>shift</code>things from the start of the array, we need to learn how to <code>unshift</code>stuff back to the start" ,
2015-08-13 15:32:40 -07:00
"Let's take the code we had last time and <code>unshift</code>this value to the end: <code>\"Paul\" </code>"
2015-07-09 00:26:16 +01:00
] ,
"tests" : [
2015-08-14 13:50:20 -07:00
"assert((function(d){if(d[0].toLowerCase() == 'paul' && d[1] == 23 && d[2][0] != undefined && d[2][0] == 'dog' && d[2][1] != undefined && d[2][1] == 3){return(true);}else{return(false);}})(myArray), 'myArray should now have [\"Paul\", 23, [\"dog\", 3]])');"
2015-07-09 00:26:16 +01:00
] ,
"challengeSeed" : [
2015-08-14 13:50:20 -07:00
"var ourArray = [\"Stimpson\", \"J\", [\"cat\"]];" ,
"ourArray.shift();" ,
"ourArray.unshift([\"happy\", \"joy\"]);" ,
"// ourArray now equals [[\"happy\", \"joy\"], \"Stimpson\", \"J\"]" ,
"" ,
2015-08-13 15:32:40 -07:00
"var myArray = [\"John\", 23, [\"dog\", 3]];" ,
2015-08-14 13:50:20 -07:00
"myArray.shift();" ,
"// Add \"Paul\" to the start of myArray" ,
2015-07-09 00:26:16 +01:00
"" ,
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
"// You'll learn about functions soon." ,
2015-07-09 00:26:16 +01:00
"(function(y, z){return('myArray = ' + JSON.stringify(y));})(myArray);"
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-09 00:26:16 +01:00
"challengeType" : 1
} ,
{
2015-07-24 16:08:45 -07:00
"id" : "bg9997c9c89feddfaeb9bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Write Reusable JavaScript with Functions" ,
2015-07-09 00:26:16 +01:00
"difficulty" : "9.9819" ,
"description" : [
2015-08-14 13:50:20 -07:00
"In JavaScript, we can divide up our code into reusable parts called <code>functions</code>." ,
"Here's an example of a function:" ,
"<code>function functionName (a, b) {</code>" ,
2015-08-14 14:40:02 -07:00
"<code>  return(a + b);</code>" ,
2015-08-14 13:50:20 -07:00
"<code>}</code>" ,
"We can \"call\" our function like this: <code>functionName();</code>, and it will run and return it's <code>return</code> value to us." ,
"Create and call a function called <code>myFunction</code>."
2015-07-09 00:26:16 +01:00
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert((function(){if(typeof(f) !== \"undefined\" && typeof(f) === \"number\" && f === a + b && editor.getValue().match(/return/gi).length >= 1 && editor.getValue().match(/a/gi).length >= 1 && editor.getValue().match(/b/gi).length >= 1 && editor.getValue().match(/\\+/gi).length >= 1){return(true);}else{return(false);}})(), 'Your function should return the value of a + b');"
2015-07-09 00:26:16 +01:00
] ,
"challengeSeed" : [
2015-07-13 21:55:36 +01:00
"var a = 4;" ,
"var b = 5;" ,
2015-08-14 13:50:20 -07:00
"" ,
"ourFunction = function() {" ,
" return a - b;" ,
2015-08-14 14:40:02 -07:00
"};" ,
2015-08-14 13:50:20 -07:00
"" ,
"//Don't modify above this line" ,
"//Create a function called myFunction that returns the value of a plus b." ,
2015-07-09 00:26:16 +01:00
"" ,
"" ,
"" ,
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
"// You'll learn about functions soon." ,
2015-08-14 01:13:07 -07:00
"if(typeof(myFunction) !== \"undefined\"){" ,
2015-07-13 21:55:36 +01:00
"var f=myFunction(a,b);" ,
"(function(){return(f);})();" ,
"}"
2015-07-09 00:26:16 +01:00
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-09 00:26:16 +01:00
"challengeType" : 1
} ,
{
2015-07-24 16:08:45 -07:00
"id" : "bg9998c9c99feddfaeb9bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Build JavaScript Objects" ,
2015-07-09 00:26:16 +01:00
"difficulty" : "9.9822" ,
"description" : [
2015-08-14 13:50:20 -07:00
"You may have heard the term <code>object</code> before." ,
"Objects are similar to <code>arrays</code>, except that instead of using indexes to access and modify their data, you access the data in objects through what are called <code>properties</code>." ,
"Here's a sample object:" ,
"<code>var cat = {</code>" ,
"<code> \"name\": \"Whiskers\",</code>" ,
"<code> \"legs\": 4,</code>" ,
"<code> \"tails\": 1,</code>" ,
"<code> \"enemies\": [\"Water\", \"Dogs\"]</code>" ,
"<code>};</code>" ,
2015-07-09 00:26:16 +01:00
"</code>" ,
2015-08-14 13:50:20 -07:00
"Objects are useful for storing data in a structured way, and can represents real world objects, like a cats." ,
2015-08-06 09:03:03 +02:00
"Let's try to make an Object that represents a dog called myDog!"
2015-07-09 00:26:16 +01:00
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert((function(z){if(z.hasOwnProperty(\"name\") && z.name !== undefined && typeof(z.name) === \"string\"){return(true);}else{return(false);}})(myDog), 'myDog should contain the property name and it should be a string');" ,
"assert((function(z){if(z.hasOwnProperty(\"legs\") && z.legs !== undefined && typeof(z.legs) === \"number\"){return(true);}else{return(false);}})(myDog), 'myDog should contain the property legs and it should be a number');" ,
"assert((function(z){if(z.hasOwnProperty(\"tails\") && z.tails !== undefined && typeof(z.tails) === \"number\"){return(true);}else{return(false);}})(myDog), 'myDog should contain the property tails and it should be a number');" ,
"assert((function(z){if(z.hasOwnProperty(\"friends\") && z.friends !== undefined && Array.isArray(z.friends)){return(true);}else{return(false);}})(myDog), 'myDog should contain the property friends and it should be an array');"
2015-07-09 00:26:16 +01:00
] ,
"challengeSeed" : [
"//var ourDog = {" ,
2015-07-10 00:56:30 +01:00
"// \"name\": \"Camper\"" ,
"// \"legs\": 4" ,
"// \"tails\": 1" ,
2015-08-13 15:32:40 -07:00
"// \"friends\": [\"everything!\"]" ,
2015-07-09 00:26:16 +01:00
"//};" ,
"" ,
2015-08-14 13:50:20 -07:00
"// add the name(string), legs(number), tails(number) and friends(array) properties to myDog." ,
"// You can set them to whatever you want." ,
2015-07-09 00:26:16 +01:00
"" ,
"var myDog = {" ,
" " ,
"};" ,
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
2015-07-09 00:26:16 +01:00
"(function(z){return(z);})(myDog);"
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-09 00:26:16 +01:00
"challengeType" : 1
} ,
{
2015-07-24 16:08:45 -07:00
"id" : "bg9999c9c99feddfaeb9bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Manipulate JavaScript Objects" ,
2015-07-09 00:26:16 +01:00
"difficulty" : "9.9823" ,
"description" : [
2015-08-14 13:50:20 -07:00
"There are many ways to add and add and remove properties from objects." ,
"For example, we can add properties to objects like this:" ,
2015-08-05 17:31:42 +01:00
"<code>myObject.myProperty = \"myValue\";</code>" ,
2015-08-14 13:50:20 -07:00
"We can also delete them like this:" ,
2015-08-05 17:31:42 +01:00
"<code>delete(myObject.myProperty);</code>" ,
2015-08-14 13:50:20 -07:00
"Let's add the property \"bark\", and delete the property \"tails\"."
2015-07-09 00:26:16 +01:00
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert(myDog.bark !== undefined, 'Add the property \"bark\" to myDog.');" ,
"assert(myDog.tails === undefined, 'Delete the property \"tails\" from myDog.');"
2015-07-09 00:26:16 +01:00
] ,
"challengeSeed" : [
2015-07-10 00:56:30 +01:00
"//var ourDog = {" ,
"//\"name\": \"Camper\"" ,
"//\"legs\": 4" ,
"//\"tails\": 1" ,
"//\"friends\": [\"everything!\"]" ,
"//};" ,
"" ,
"//Re-create myDog" ,
"" ,
"var myDog = {" ,
2015-08-13 15:32:40 -07:00
" \"name\": \"Camper\"," ,
2015-08-01 00:47:39 +01:00
" \"legs\": 4," ,
" \"tails\": 1," ,
2015-07-10 00:56:30 +01:00
" \"friends\": []" ,
"};" ,
"" ,
2015-08-05 15:38:54 +01:00
"//Let's add the property bark to myDog" ,
2015-07-10 00:56:30 +01:00
"" ,
"" ,
"//Now delete the property tails" ,
"" ,
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
2015-07-10 00:56:30 +01:00
"(function(z){return(z);})(myDog);"
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-10 00:56:30 +01:00
"challengeType" : 1
} ,
{
2015-07-24 16:08:45 -07:00
"id" : "cf1111c1c11feddfaeb5bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Iterate with JavaScript For Loops" ,
2015-07-10 00:56:30 +01:00
"difficulty" : "9.9824" ,
"description" : [
2015-08-14 13:50:20 -07:00
"You can run the same code multiple times by using a loop." ,
"The most common type of JavaScript loop is called a \"for loop\" because it runs \"for\" a specific number of times." ,
"<code>var ourArray = [];</code>" ,
"<code>for(var i = 0; i < 5; i++) {</code>" ,
"<code> ourArray.push(i);</code>" ,
"<code>}</code>" ,
"<code>ourArray</code> will now contain [0,1,2,3,4] " ,
"Let's try getting a for loop to work by pushing values to an array."
2015-07-10 00:56:30 +01:00
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert(editor.getValue().match(/for\\(/g), 'You should be using a for loop for this.');" ,
"assert.deepEqual(myArray, [0,1,2,3,4], 'myArray should equal [0,1,2,3,4]');"
2015-07-10 00:56:30 +01:00
] ,
"challengeSeed" : [
"var myArray = [];" ,
2015-08-14 13:50:20 -07:00
"//Push the numbers zero through four to myArray using a \"for loop\" like above." ,
2015-07-10 00:56:30 +01:00
"" ,
""
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-10 00:56:30 +01:00
"challengeType" : 1
} ,
{
2015-07-24 16:08:45 -07:00
"id" : "cf1111c1c11feddfaeb1bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Iterate with JavaScript While Loops" ,
2015-07-10 00:56:30 +01:00
"difficulty" : "9.9825" ,
"description" : [
2015-08-14 13:50:20 -07:00
"You can run the same code multiple times by using a loop." ,
"Another type of JavaScript loop is called a \"while loop\" because it runs \"while\" something is true, and stops once that something is no longer true." ,
"<code>var ourArray = [];</code>" ,
"<code>var i = 0;</code>" ,
"<code>while(i < 5) {</code>" ,
"<code> ourArray.push(i);</code>" ,
"<code> i++;</code>" ,
"<code>}</code>" ,
"Let's try getting a for loop to work by pushing values to an array."
2015-07-10 00:56:30 +01:00
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert(editor.getValue().match(/while\\(/g), 'You should be using a while loop for this.');" ,
"assert.deepEqual(myArray, [0,1,2,3,4], 'myArray should equal [0,1,2,3,4]');"
2015-07-10 00:56:30 +01:00
] ,
"challengeSeed" : [
"var myArray = [];" ,
2015-08-14 01:13:07 -07:00
"//Push the numbers zero through four to myArray" ,
2015-07-10 00:56:30 +01:00
"" ,
""
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-10 00:56:30 +01:00
"challengeType" : 1
} ,
{
2015-07-24 16:08:45 -07:00
"id" : "cf1111c1c11feddfaeb9bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Generate Random Fractions with JavaScript" ,
2015-07-10 00:56:30 +01:00
"difficulty" : "9.9827" ,
"description" : [
2015-08-14 13:50:20 -07:00
"Random numbers are useful for creating random behaviours and games." ,
"JavaScript has a <code>Math.random()</code> function that generates a random decimal number." ,
"Use <code>Math.random()</code> to get <code>myFunction</code> to return a random number."
2015-07-16 11:06:04 +01:00
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert(typeof(myFunction()) === \"number\", 'myFunction should return a random number');" ,
"assert((myFunction()+''). match(/\\./g), 'The number returned by myFunction should be a decimal');" ,
"assert(editor.getValue().match(/Math\\.random/g).length >= 2, 'You should be using Math.random to generate the random decimal number');"
2015-07-16 11:06:04 +01:00
] ,
"challengeSeed" : [
"" ,
2015-08-14 01:13:07 -07:00
"function myFunction() {" ,
" //Change the 0 to Math.random()" ,
" return(0);" ,
2015-07-10 00:56:30 +01:00
"}" ,
2015-07-16 11:06:04 +01:00
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
2015-07-16 11:06:04 +01:00
"(function(){return(myFunction());})();"
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-16 11:06:04 +01:00
"challengeType" : 1
} ,
{
2015-07-24 16:08:45 -07:00
"id" : "cf1111c1c12feddfaeb1bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Generate Random Whole Numbers with JavaScript" ,
2015-07-16 11:06:04 +01:00
"difficulty" : "9.9828" ,
"description" : [
2015-08-14 13:50:20 -07:00
"It's great that we can create random decimal numbers, but it's even more useful if we lot more useful to generate a random whole number." ,
2015-07-16 11:06:04 +01:00
"To achieve this we can multiply the random number by ten and use the <code>Math.floor()</code> to convert the decimal number to a whole number" ,
"This technique gives us a whole number between zero and nine" ,
2015-07-24 00:38:13 +01:00
"Example:" ,
"<code>Math.floor(Math.random()*10);</code>" ,
2015-07-16 11:06:04 +01:00
"Let's give this technique a go now"
2015-07-10 00:56:30 +01:00
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert(typeof(myFunction()) === \"number\", 'The result of myFunction should be a number');" ,
"assert(editor.getValue().match(/Math.random/g), 'You should be using Math.random to create a random number');" ,
"assert(!(''+myFunction()).match(/\\./g), 'You should have multiplied the result of Math.random but 10 to make it a number that\\'s greater then zero');" ,
"assert(editor.getValue().match(/Math.floor/g), 'You should use Math.floor to remove the decimal part of the number');"
2015-07-10 00:56:30 +01:00
] ,
"challengeSeed" : [
2015-07-16 11:06:04 +01:00
"function myFunction(){" ,
2015-08-14 01:13:07 -07:00
" // Make myFunction return a random number between zero and nine instead of a decimal" ,
" return(Math.random());" ,
2015-07-16 11:06:04 +01:00
"}" ,
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
2015-07-16 11:06:04 +01:00
"(function(){return(myFunction());})();"
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-16 11:06:04 +01:00
"challengeType" : 1
} ,
{
2015-07-24 16:08:45 -07:00
"id" : "cf1111c1c12feddfaeb2bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Generate Random Whole Numbers within a Range" ,
2015-07-16 11:06:04 +01:00
"difficulty" : "9.9829" ,
"description" : [
2015-07-24 00:38:13 +01:00
"We can use a certain mathematical expression to get a random number between between twp numbers." ,
"<code>Math.floor(Math.random() * (max - min + 1)) + min</code>" ,
2015-08-14 01:13:07 -07:00
"By using this we can control the output of the random number."
2015-07-24 00:38:13 +01:00
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert(myFunction() >= min, 'The random number that\\'s generated by myFunction should be greater than or equal to the minimum number');" ,
"assert(myFunction() <= max, 'The random number that\\'s generated by myFunction should be less than or equal to the maximum number');" ,
"assert((function(){if(editor.getValue().match(/max/g).length >= 2 && editor.getValue().match(/min/g).length >= 3 && editor.getValue().match(/Math.floor/g) && editor.getValue().match(/Math.random/g)){return(true);}else{return(false);}})(), 'You should be using the function given in the description to calculate the random in number in a range');"
2015-07-24 00:38:13 +01:00
] ,
"challengeSeed" : [
" var min = 0;" ,
" var max = 12;" ,
2015-08-14 01:13:07 -07:00
"function myFunction() {" ,
" // Make myFunction return a random number between zero and nine instead of a decimal" ,
" return(Math.random());" ,
2015-07-24 00:38:13 +01:00
"}" ,
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
2015-07-24 00:38:13 +01:00
"(function(){return(myFunction());})();"
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-24 00:38:13 +01:00
"challengeType" : 1
} ,
{
2015-07-24 16:08:45 -07:00
"id" : "cf1111c1c12feddfaeb3bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Use Conditional Logic with If-Else Statements" ,
2015-07-24 00:38:13 +01:00
"difficulty" : "9.983" ,
"description" : [
"We can use if statements in JavaScript to only execute code if a certain condition is met" ,
"if statements require some sort of boolean condition evaluate" ,
"Example:" ,
"<code>if(1==2){" ,
" return(true);" ,
"}" ,
"else{" ,
" return(false);" ,
"}</code>" ,
"Let's have a go of using if statements now by making a coin-flip game" ,
"Create an if else statement to return <code>heads</code> if the flip var is zero and to return <code>tails</code> if it's not"
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert((function(){if(myFunction() === \"heads\" || myFunction() === \"tails\"){return(true);}else{return(false);}})(), 'myFunction should either return heads or tails');" ,
"assert(editor.getValue().match(/if/g).length >= 3, 'You should have created a new if statement');" ,
"assert(editor.getValue().match(/else/g).length >= 2, 'You should have created a new else statement');"
2015-07-24 00:38:13 +01:00
] ,
"challengeSeed" : [
"function myFunction(){" ,
2015-08-14 01:13:07 -07:00
" var flip = Math.floor(Math.random() * (1 - 0 + 1)) + 0;" ,
" // Create and if else statement here to return heads if flip is 0 otherwise return false" ,
2015-07-24 00:38:13 +01:00
" " ,
"}" ,
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
2015-07-24 00:38:13 +01:00
"(function(){return(myFunction());})();"
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-24 00:38:13 +01:00
"challengeType" : 1
} ,
{
2015-07-24 16:08:45 -07:00
"id" : "cf1111c1c12feddfaeb6bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Sift through Text with Regular Expressions" ,
2015-07-24 00:38:13 +01:00
"difficulty" : "9.984" ,
"description" : [
"RegEx is a powerful tool we can use to find certain words or patterns in strings" ,
"RegEx can look difficult at first but there's not much to getting it working" ,
"If we wanted to find the number of times the word \"the\" occured in the string \"The dog chased the cat\" We could use the following RegEx:" ,
"<code>\/the+\/gi</code>" ,
"Let's break this down a bit" ,
"\"The\" is the pattern we want to match" ,
"\"+\" means we are looking for one or more occurrences of this pattern" ,
"\"g\" means that it searhces the whole string" ,
"\"i\" means that we are ignoring the case(upper or lower) of what we are looking for" ,
"Let's try finding the word and in the string \"John and Alan went to the shop and got some milk\" by replacing the <code>.+</code> in the currnet RegEx with something that will find the word \"and\" and count how many times it occurs"
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert(test==2, 'You\\'re RegEx should have found two occurances of the word \"and\"');" ,
"assert(editor.getValue().match(/\\/and\\+\\/gi/), 'You should have used this RegEx to find the word \"and\"');"
2015-07-24 00:38:13 +01:00
] ,
"challengeSeed" : [
2015-08-14 01:13:07 -07:00
"var test = (function() {" ,
" var testString = \"John and Alan went to the shop and got some milk\";" ,
2015-07-24 00:38:13 +01:00
"" ,
2015-08-14 01:13:07 -07:00
" //Do not modify above this line." ,
2015-07-24 00:38:13 +01:00
"" ,
2015-08-14 01:13:07 -07:00
" var expression = /.+/gi;" ,
2015-07-24 00:38:13 +01:00
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
2015-07-24 00:38:13 +01:00
" return(testString.match(expression).length);" ,
"})();(function(){return(test);})();"
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-24 00:38:13 +01:00
"challengeType" : 1
} ,
{
2015-07-24 16:08:45 -07:00
"id" : "cf1111c1c12feddfaeb7bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Find Numbers with Regular Expressions" ,
2015-07-24 00:38:13 +01:00
"difficulty" : "9.985" ,
"description" : [
"We can use special selectors in RegEx to select a particular type of value" ,
"One such selector is the digit selector <code>\\d</code> which is used to grab the numbers in a string" ,
"It is used like this:" ,
2015-08-06 02:06:53 -07:00
"<code>/\\d+/g</code>"
2015-07-24 00:38:13 +01:00
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert(test === 2, 'Your RegEx should have found two numbers in the testString');" ,
"assert(editor.getValue().match(/\\/\\\\d\\+\\//gi), 'You should be using the following expression /\\d+/gi to find the numbers in the testString');"
2015-07-24 00:38:13 +01:00
] ,
"challengeSeed" : [
2015-08-14 01:13:07 -07:00
"var test = (function() {" ,
" var testString = \"There's 3 cats but 4 dogs.\"" ,
2015-07-24 00:38:13 +01:00
"" ,
"//Do Not Modify Above" ,
"" ,
2015-08-14 01:13:07 -07:00
" var expression = /.+/gi;" ,
2015-07-24 00:38:13 +01:00
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
2015-07-24 00:38:13 +01:00
" return(testString.match(expression).length);" ,
"})();(function(){return(test);})();"
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-24 00:38:13 +01:00
"challengeType" : 1
} ,
{
2015-07-24 16:08:45 -07:00
"id" : "cf1111c1c12feddfaeb8bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Find White Space with Regular Expressions" ,
2015-08-01 16:10:21 +01:00
"difficulty" : "9.986" ,
2015-07-24 00:38:13 +01:00
"description" : [
"We can also use selectors like <code>\\s</code> to find spaces in a string" ,
"It is used like this:" ,
2015-08-06 02:06:53 -07:00
"<code>/\\s+/g</code>"
2015-07-10 00:56:30 +01:00
] ,
2015-07-24 00:38:13 +01:00
"tests" : [
2015-08-14 14:48:59 -07:00
"assert(test === 7, 'Your RegEx should have found seven spaces in the testString');" ,
"assert(editor.getValue().match(/\\/\\\\s\\+\\//gi), 'You should be using the following expression /\\s+/gi to find the spaces in the testString');"
2015-07-24 00:38:13 +01:00
] ,
"challengeSeed" : [
"var test = (function(){" ,
2015-08-14 01:13:07 -07:00
" var testString = \"How many spaces are there in this sentance.\";" ,
2015-07-24 00:38:13 +01:00
"" ,
2015-08-14 01:13:07 -07:00
" //Do Not Modify Above" ,
2015-07-24 00:38:13 +01:00
"" ,
2015-08-14 01:13:07 -07:00
" var expression = /.+/gi;" ,
2015-07-24 00:38:13 +01:00
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
2015-07-24 00:38:13 +01:00
" return(testString.match(expression).length);" ,
"})();(function(){return(test);})();"
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-10 00:56:30 +01:00
"challengeType" : 1
2015-07-30 20:58:02 +01:00
} ,
2015-08-01 19:12:44 +01:00
{
"id" : "cf1111c1c13feddfaeb3bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Invert Regular Expression Matches with JavaScript" ,
2015-08-01 19:12:44 +01:00
"difficulty" : "9.987" ,
"description" : [
2015-08-06 14:51:26 +01:00
"Use <code>/\\S/gi;</code> to match everything that isn't a space in the string" ,
2015-08-01 19:12:44 +01:00
"You can invert any match by using the uppercase version of the selector <code>\\s</code> versus <code>\\S</code> for example"
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert(test === 36, 'Your RegEx should have found seven spaces in the testString');" ,
"assert(editor.getValue().match(/\\/\\\\S\\/gi/gi), 'You should be using the following expression /\\S+/gi to find the spaces in the testString');"
2015-08-01 19:12:44 +01:00
] ,
"challengeSeed" : [
"var test = (function(){" ,
2015-08-14 01:13:07 -07:00
" var testString = \"How many spaces are there in this sentance.\";" ,
2015-08-01 19:12:44 +01:00
"" ,
2015-08-14 01:13:07 -07:00
" // Do Not Modify Above" ,
2015-08-01 19:12:44 +01:00
"" ,
2015-08-14 01:13:07 -07:00
" var expression = /.+/gi;" ,
2015-08-01 19:12:44 +01:00
"" ,
2015-08-13 22:07:54 -07:00
"// You can ignore everything below this line." ,
"// We use this function to show you the value of your variable in your output box." ,
2015-08-01 19:12:44 +01:00
" return(testString.match(expression).length);" ,
"})();(function(){return(test);})();"
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-08-01 19:12:44 +01:00
"challengeType" : 1
} ,
2015-07-30 20:58:02 +01:00
{
"id" : "cf1111c1c12feddfaeb9bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Create a JavaScript Slot Machine" ,
2015-08-01 16:10:21 +01:00
"difficulty" : "9.988" ,
2015-07-30 20:58:02 +01:00
"description" : [
2015-08-10 18:05:07 -07:00
"We are now going to try and combine some of the stuff we've just learned and create the logic for a slot machine game" ,
2015-07-30 20:58:02 +01:00
"For this we will need to generate three random numbers between <code>1</code> and <code>5</code> to represent the possible values of each individual slot" ,
"Store the three random numbers in <code>slotOne</code>, <code>slotTwo</code> and <code>slotThree</code>" ,
"Generate the random numbers by using the system we used earlier in /challenges/random-whole-numbers-in-a-range" ,
2015-08-06 02:06:53 -07:00
"<code>Math.floor(Math.random() * (5 - 1 + 1)) + 1; </code>"
2015-07-30 20:58:02 +01:00
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert(typeof(runSlots($(\".slot\"))[0]) === \"number\", 'slotOne should be a random number');" ,
"assert(typeof(runSlots($(\".slot\"))[1]) === \"number\", 'slotTwo should be a random number');" ,
"assert(typeof(runSlots($(\".slot\"))[2]) === \"number\", 'slotThree should be a random number');" ,
"assert((function(){if(editor.match(/Math\\.floor\\(\\s?Math\\.random\\(\\)\\s?\\*\\s?\\(\\s?5\\s?\\-\\s?1\\s?\\+\\s?1\\s?\\)\\s?\\)\\s?\\+\\s?1;/gi) !== null){return(editor.match(/Math\\.floor\\(\\s?Math\\.random\\(\\)\\s?\\*\\s?\\(\\s?5\\s?\\-\\s?1\\s?\\+\\s?1\\s?\\)\\s?\\)\\s?\\+\\s?1;/gi).length >= 3);}else{return(false);}})(), 'You should have used Math.floor(Math.random() * (5 - 1 + 1)) + 1; three times to generate your random numbers');"
2015-07-30 20:58:02 +01:00
] ,
"challengeSeed" : [
"fccss" ,
2015-08-01 00:47:39 +01:00
" function runSlots(){" ,
2015-07-30 20:58:02 +01:00
" var slotOne;" ,
" var slotTwo;" ,
" var slotThree;" ,
" " ,
2015-08-13 15:32:40 -07:00
" var images = [\"https://bit.ly/fcc-relaxing-cat\",\"https://bit.ly/fcc-relaxing-cat\",\"https://bit.ly/fcc-relaxing-cat\",\"https://bit.ly/fcc-relaxing-cat\",\"https://bit.ly/fcc-relaxing-cat\"];" ,
2015-07-30 23:46:47 +01:00
" " ,
2015-08-14 01:13:07 -07:00
" //Don't modify above this line" ,
2015-07-30 23:46:47 +01:00
" " ,
" " ,
" " ,
2015-08-14 01:13:07 -07:00
" //Don't modify below this line" ,
2015-07-30 23:46:47 +01:00
" " ,
2015-08-13 15:32:40 -07:00
" $(\".logger\").html(\"\");" ,
" $(\".logger\").html(\"Not A Win\")" ,
2015-08-01 16:10:21 +01:00
" " ,
2015-07-30 23:46:47 +01:00
" if(slotOne !== undefined && slotTwo !== undefined && slotThree !== undefined){" ,
2015-08-13 15:32:40 -07:00
" $(\".logger\").html(slotOne + \" \" + slotTwo + \" \" + slotThree);" ,
2015-07-30 23:46:47 +01:00
" }" ,
" return([slotOne, slotTwo, slotThree]);" ,
" }" ,
"" ,
" $(document).ready(function(){" ,
2015-08-13 15:32:40 -07:00
" $(\".go\").click(function(){" ,
2015-08-01 00:47:39 +01:00
" runSlots();" ,
2015-07-30 23:46:47 +01:00
" });" ,
" });" ,
"fcces" ,
" " ,
"<div>" ,
2015-08-13 15:32:40 -07:00
" <div class = \"container inset\">" ,
" <div class = \"header inset\">" ,
" <img src=\"https://s3.amazonaws.com/freecodecamp/freecodecamp_logo.svg.gz\" alt=\"learn to code javascript at Free Code Camp logo\" class=\"img-responsive nav-logo\">" ,
2015-07-30 23:46:47 +01:00
" <h2>FCC Slot Machine</h2>" ,
" </div>" ,
2015-08-13 15:32:40 -07:00
" <div class = \"slots inset\">" ,
" <div class = \"slot inset\">" ,
2015-07-30 23:46:47 +01:00
" " ,
" </div>" ,
2015-08-13 15:32:40 -07:00
" <div class = \"slot inset\">" ,
2015-07-30 23:46:47 +01:00
" " ,
" </div>" ,
2015-08-13 15:32:40 -07:00
" <div class = \"slot inset\">" ,
2015-07-30 23:46:47 +01:00
" " ,
" </div>" ,
" </div>" ,
" <br/>" ,
2015-08-13 15:32:40 -07:00
" <div class = \"outset\">" ,
" <button class = \"go inset\">" ,
2015-07-30 23:46:47 +01:00
" Go" ,
" </button>" ,
" </div>" ,
" <br/>" ,
2015-08-13 15:32:40 -07:00
" <div class = \"foot inset\">" ,
" <span class = \"logger\"></span>" ,
2015-07-30 23:46:47 +01:00
" </div>" ,
" </div>" ,
"</div>" ,
"" ,
"<style>" ,
" .container {" ,
2015-08-01 16:10:21 +01:00
" background-color: #4a2b0f;" ,
2015-07-30 23:46:47 +01:00
" height: 400px;" ,
" width: 260px;" ,
" margin: 50px auto;" ,
" border-radius: 4px;" ,
" }" ,
" .header {" ,
2015-08-01 16:10:21 +01:00
" border: 2px solid #fff;" ,
2015-07-30 23:46:47 +01:00
" border-radius: 4px;" ,
2015-08-01 16:10:21 +01:00
" height: 55px;" ,
2015-07-30 23:46:47 +01:00
" margin: 14px auto;" ,
2015-08-01 16:10:21 +01:00
" background-color: #457f86" ,
" }" ,
" .header h2 {" ,
" height: 30px;" ,
" margin: auto;" ,
2015-07-30 23:46:47 +01:00
" }" ,
" .header h2 {" ,
2015-08-01 16:10:21 +01:00
" font-size: 14px;" ,
" margin: 0 0;" ,
2015-07-30 23:46:47 +01:00
" padding: 0;" ,
2015-08-01 16:10:21 +01:00
" color: #fff;" ,
" text-align: center;" ,
2015-07-30 23:46:47 +01:00
" }" ,
" .slots{" ,
" display: flex;" ,
2015-08-01 16:10:21 +01:00
" background-color: #457f86;" ,
2015-07-30 23:46:47 +01:00
" border-radius: 6px;" ,
2015-08-01 16:10:21 +01:00
" border: 2px solid #fff;" ,
2015-07-30 23:46:47 +01:00
" }" ,
" .slot{" ,
" flex: 1 0 auto;" ,
" background: white;" ,
" height: 75px;" ,
" margin: 8px;" ,
2015-08-01 16:10:21 +01:00
" border: 2px solid #215f1e;" ,
2015-07-30 23:46:47 +01:00
" border-radius: 4px;" ,
" }" ,
" .go {" ,
" width: 100%;" ,
2015-08-01 16:10:21 +01:00
" color: #fff;" ,
" background-color: #457f86;" ,
" border: 2px solid #fff;" ,
2015-07-30 23:46:47 +01:00
" border-radius: 2px;" ,
" box-sizing: none;" ,
" outline: none!important;" ,
" }" ,
" .foot {" ,
" height: 150px;" ,
2015-08-01 16:10:21 +01:00
" background-color: 457f86;" ,
" border: 2px solid #fff;" ,
2015-07-30 23:46:47 +01:00
" }" ,
" " ,
" .logger {" ,
" color: white;" ,
" margin: 10px;" ,
" }" ,
" " ,
" .outset {" ,
" -webkit-box-shadow: 0px 0px 15px -2px rgba(0,0,0,0.75);" ,
" -moz-box-shadow: 0px 0px 15px -2px rgba(0,0,0,0.75);" ,
" box-shadow: 0px 0px 15px -2px rgba(0,0,0,0.75);" ,
" }" ,
" " ,
" .inset {" ,
" -webkit-box-shadow: inset 0px 0px 15px -2px rgba(0,0,0,0.75);" ,
" -moz-box-shadow: inset 0px 0px 15px -2px rgba(0,0,0,0.75);" ,
" box-shadow: inset 0px 0px 15px -2px rgba(0,0,0,0.75);" ,
" }" ,
"</style>"
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-30 23:46:47 +01:00
"challengeType" : 0
} ,
{
"id" : "cf1111c1c13feddfaeb1bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Add your JavaScript Slot Machine Slots" ,
2015-08-01 16:10:21 +01:00
"difficulty" : "9.989" ,
2015-07-30 23:46:47 +01:00
"description" : [
"Now that we have our random numbers we need to go and check for when they are all the same that means we should count it as a win" ,
2015-07-31 00:22:56 +01:00
"Different numbers will have different values so we need to return the matched number or null" ,
"If we get a match we should change the value of win to the number that we have three of or leave it as null" ,
2015-08-01 16:10:21 +01:00
"Let's create an if statement with multiple conditions to check that all the numbers are equal" ,
2015-08-06 02:06:53 -07:00
"<code>if(slotOne !== slotTwo || slotTwo !== slotThree){</code>" ,
"<code> return(null);</code>" ,
"<code>}</code>"
2015-07-30 23:46:47 +01:00
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert((function(){var data = runSlots();if(data === null){return(true)}else{if(data[0] === data[1] && data[1] === data[2]){return(true);}else{return(false);}}})(), 'If all three of our random numbers are the same we should return that number. Otherwise we should return null');"
2015-07-30 23:46:47 +01:00
] ,
"challengeSeed" : [
"fccss" ,
2015-08-01 16:10:21 +01:00
" function runSlots(){" ,
2015-07-30 23:46:47 +01:00
" var slotOne;" ,
" var slotTwo;" ,
" var slotThree;" ,
" " ,
2015-08-13 15:32:40 -07:00
" var images = [\"https://bit.ly/fcc-relaxing-cat\",\"https://bit.ly/fcc-relaxing-cat\",\"https://bit.ly/fcc-relaxing-cat\",\"https://bit.ly/fcc-relaxing-cat\",\"https://bit.ly/fcc-relaxing-cat\"];" ,
2015-07-30 23:46:47 +01:00
" " ,
" slotOne = Math.floor(Math.random() * (5 - 1 + 1)) + 1;" ,
" slotTwo = Math.floor(Math.random() * (5 - 1 + 1)) + 1;" ,
" slotThree = Math.floor(Math.random() * (5 - 1 + 1)) + 1;" ,
" " ,
2015-08-13 15:32:40 -07:00
" $(\".logger\").html(\"\");" ,
" $(\".logger\").html(\"Not A Win\")" ,
2015-07-31 19:53:21 +01:00
" " ,
2015-08-14 01:13:07 -07:00
" //Don't modify above this line" ,
2015-07-30 20:58:02 +01:00
" " ,
" " ,
" " ,
2015-08-14 01:13:07 -07:00
" //Don't modify below this line" ,
2015-07-30 20:58:02 +01:00
" " ,
" if(slotOne !== undefined && slotTwo !== undefined && slotThree !== undefined){" ,
2015-08-13 15:32:40 -07:00
" $(\".logger\").html(slotOne);" ,
" $(\".logger\").append(\" \" + slotTwo);" ,
" $(\".logger\").append(\" \" + slotThree);" ,
2015-07-30 20:58:02 +01:00
" }" ,
" return([slotOne, slotTwo, slotThree]);" ,
" }" ,
"" ,
" $(document).ready(function(){" ,
2015-08-13 15:32:40 -07:00
" $(\".go\").click(function(){" ,
2015-08-01 16:10:21 +01:00
" runSlots();" ,
2015-07-31 19:53:21 +01:00
" });" ,
" });" ,
"fcces" ,
" " ,
"<div>" ,
2015-08-13 15:32:40 -07:00
" <div class = \"container inset\">" ,
" <div class = \"header inset\">" ,
" <img src=\"https://s3.amazonaws.com/freecodecamp/freecodecamp_logo.svg.gz\" alt=\"learn to code javascript at Free Code Camp logo\" class=\"img-responsive nav-logo\">" ,
2015-07-31 19:53:21 +01:00
" <h2>FCC Slot Machine</h2>" ,
" </div>" ,
2015-08-13 15:32:40 -07:00
" <div class = \"slots inset\">" ,
" <div class = \"slot inset\">" ,
2015-07-31 19:53:21 +01:00
" " ,
" </div>" ,
2015-08-13 15:32:40 -07:00
" <div class = \"slot inset\">" ,
2015-07-31 19:53:21 +01:00
" " ,
" </div>" ,
2015-08-13 15:32:40 -07:00
" <div class = \"slot inset\">" ,
2015-07-31 19:53:21 +01:00
" " ,
" </div>" ,
" </div>" ,
" <br/>" ,
2015-08-13 15:32:40 -07:00
" <div class = \"outset\">" ,
" <button class = \"go inset\">" ,
2015-07-31 19:53:21 +01:00
" Go" ,
" </button>" ,
" </div>" ,
" <br/>" ,
2015-08-13 15:32:40 -07:00
" <div class = \"foot inset\">" ,
" <span class = \"logger\"></span>" ,
2015-07-31 19:53:21 +01:00
" </div>" ,
" </div>" ,
"</div>" ,
"" ,
"<style>" ,
" .container {" ,
2015-08-01 16:10:21 +01:00
" background-color: #4a2b0f;" ,
2015-07-31 19:53:21 +01:00
" height: 400px;" ,
" width: 260px;" ,
" margin: 50px auto;" ,
" border-radius: 4px;" ,
" }" ,
" .header {" ,
2015-08-01 16:10:21 +01:00
" border: 2px solid #fff;" ,
2015-07-31 19:53:21 +01:00
" border-radius: 4px;" ,
2015-08-01 16:10:21 +01:00
" height: 55px;" ,
2015-07-31 19:53:21 +01:00
" margin: 14px auto;" ,
2015-08-01 16:10:21 +01:00
" background-color: #457f86" ,
" }" ,
" .header h2 {" ,
" height: 30px;" ,
" margin: auto;" ,
2015-07-31 19:53:21 +01:00
" }" ,
" .header h2 {" ,
2015-08-01 16:10:21 +01:00
" font-size: 14px;" ,
" margin: 0 0;" ,
2015-07-31 19:53:21 +01:00
" padding: 0;" ,
2015-08-01 16:10:21 +01:00
" color: #fff;" ,
" text-align: center;" ,
2015-07-31 19:53:21 +01:00
" }" ,
" .slots{" ,
" display: flex;" ,
2015-08-01 16:10:21 +01:00
" background-color: #457f86;" ,
2015-07-31 19:53:21 +01:00
" border-radius: 6px;" ,
2015-08-01 16:10:21 +01:00
" border: 2px solid #fff;" ,
2015-07-31 19:53:21 +01:00
" }" ,
" .slot{" ,
" flex: 1 0 auto;" ,
" background: white;" ,
" height: 75px;" ,
" margin: 8px;" ,
2015-08-01 16:10:21 +01:00
" border: 2px solid #215f1e;" ,
2015-07-31 19:53:21 +01:00
" border-radius: 4px;" ,
" }" ,
" .go {" ,
" width: 100%;" ,
2015-08-01 16:10:21 +01:00
" color: #fff;" ,
" background-color: #457f86;" ,
" border: 2px solid #fff;" ,
2015-07-31 19:53:21 +01:00
" border-radius: 2px;" ,
" box-sizing: none;" ,
" outline: none!important;" ,
" }" ,
" .foot {" ,
" height: 150px;" ,
2015-08-01 16:10:21 +01:00
" background-color: 457f86;" ,
" border: 2px solid #fff;" ,
2015-07-31 19:53:21 +01:00
" }" ,
" " ,
" .logger {" ,
" color: white;" ,
" margin: 10px;" ,
" }" ,
" " ,
" .outset {" ,
" -webkit-box-shadow: 0px 0px 15px -2px rgba(0,0,0,0.75);" ,
" -moz-box-shadow: 0px 0px 15px -2px rgba(0,0,0,0.75);" ,
" box-shadow: 0px 0px 15px -2px rgba(0,0,0,0.75);" ,
" }" ,
" " ,
" .inset {" ,
" -webkit-box-shadow: inset 0px 0px 15px -2px rgba(0,0,0,0.75);" ,
" -moz-box-shadow: inset 0px 0px 15px -2px rgba(0,0,0,0.75);" ,
" box-shadow: inset 0px 0px 15px -2px rgba(0,0,0,0.75);" ,
" }" ,
"</style>"
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-31 19:53:21 +01:00
"challengeType" : 0
} ,
{
"id" : "cf1111c1c13feddfaeb2bdef" ,
2015-08-07 23:37:32 -07:00
"title" : "Bring your JavaScript Slot Machine to Life" ,
2015-08-01 16:10:21 +01:00
"difficulty" : "9.990" ,
2015-07-31 19:53:21 +01:00
"description" : [
"Now we can detect a win let's get the slot machine to look like it works" ,
2015-08-13 15:32:40 -07:00
"We're going to use the jQuery selector <code>$(\".slot\")</code> to select all of the slots" ,
2015-07-31 19:53:21 +01:00
"Once they are all selected we can use bracket notation to access each individual one like this" ,
2015-08-13 15:39:30 -07:00
"<code>$($(\".slot\")[0]).html(\"\")</code>" ,
2015-07-31 19:53:21 +01:00
"This will grab the the first slot so that we can add the numbers we generate to them" ,
"Use the above selector to display each number in the corresponding slot"
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert((function(){runSlots();if($($(\".slot\")[0]).html().replace(/\\s/gi, \"\") !== \"\" && $($(\".slot\")[1]).html().replace(/\\s/gi, \"\") !== \"\" && $($(\".slot\")[2]).html().replace(/\\s/gi, \"\") !== \"\"){return(true);}else{return(false);}})(), 'You should be displaying the result of the slot numbers in the corresponding slots');" ,
"assert((function(){if(editor.match( /\\$\\(\\$\\(\\\"\\.slot\\\"\\)\\[\\d\\]\\)/gi )){if(editor.match( /\\$\\(\\$\\(\\\"\\.slot\\\"\\)\\[\\d\\]\\)/gi ).length >= 3 && editor.match( /\\.html\\(slotOne\\);/gi ) && editor.match( /\\.html\\(slotTwo\\);/gi ) && editor.match( /\\.html\\(slotThree\\);/gi )){return(true);}else{return(false);}}else{return(false);}})(), 'You should have used the the selector given in the description to select each slot and assign it the value of slotOne, slotTwo and slotThree respectively');"
2015-07-31 19:53:21 +01:00
] ,
"challengeSeed" : [
"fccss" ,
2015-08-01 16:10:21 +01:00
" function runSlots(){" ,
2015-07-31 19:53:21 +01:00
" var slotOne;" ,
" var slotTwo;" ,
" var slotThree;" ,
" " ,
2015-07-31 19:56:11 +01:00
" //Placeholder" ,
2015-08-13 15:32:40 -07:00
" var images = [\"https://bit.ly/fcc-relaxing-cat\",\"https://bit.ly/fcc-relaxing-cat\",\"https://bit.ly/fcc-relaxing-cat\",\"https://bit.ly/fcc-relaxing-cat\",\"https://bit.ly/fcc-relaxing-cat\"];" ,
2015-07-31 19:53:21 +01:00
" " ,
" slotOne = Math.floor(Math.random() * (5 - 1 + 1)) + 1;" ,
" slotTwo = Math.floor(Math.random() * (5 - 1 + 1)) + 1;" ,
" slotThree = Math.floor(Math.random() * (5 - 1 + 1)) + 1;" ,
" " ,
2015-08-13 15:32:40 -07:00
" $(\".logger\").html(\"\");" ,
" $(\".logger\").html(\"Not A Win\")" ,
2015-07-31 19:53:21 +01:00
" " ,
2015-08-14 01:13:07 -07:00
" // Don't modify above this line" ,
2015-07-31 19:53:21 +01:00
" " ,
2015-07-30 20:58:02 +01:00
" " ,
2015-07-31 19:53:21 +01:00
" " ,
2015-08-14 01:13:07 -07:00
" // Don't modify below this line" ,
2015-07-31 19:53:21 +01:00
" " ,
2015-08-14 01:13:07 -07:00
" if(slotOne !== slotTwo || slotTwo !== slotThree){" ,
2015-08-01 16:10:21 +01:00
" return(null);" ,
" }" ,
" " ,
2015-07-31 19:53:21 +01:00
" if(slotOne !== undefined && slotTwo !== undefined && slotThree !== undefined){" ,
2015-08-13 15:32:40 -07:00
" $(\".logger\").html(slotOne);" ,
" $(\".logger\").append(\" \" + slotTwo);" ,
" $(\".logger\").append(\" \" + slotThree);" ,
2015-07-31 19:53:21 +01:00
" }" ,
2015-08-01 16:10:21 +01:00
" " ,
2015-07-31 19:53:21 +01:00
" return([slotOne, slotTwo, slotThree]);" ,
" }" ,
"" ,
" $(document).ready(function(){" ,
2015-08-13 15:32:40 -07:00
" $(\".go\").click(function(){" ,
2015-08-01 16:10:21 +01:00
" runSlots();" ,
2015-07-30 20:58:02 +01:00
" });" ,
" });" ,
"fcces" ,
" " ,
"<div>" ,
2015-08-13 15:32:40 -07:00
" <div class = \"container inset\">" ,
" <div class = \"header inset\">" ,
" <img src=\"https://s3.amazonaws.com/freecodecamp/freecodecamp_logo.svg.gz\" alt=\"learn to code javascript at Free Code Camp logo\" class=\"img-responsive nav-logo\">" ,
2015-07-30 20:58:02 +01:00
" <h2>FCC Slot Machine</h2>" ,
" </div>" ,
2015-08-13 15:32:40 -07:00
" <div class = \"slots inset\">" ,
" <div class = \"slot inset\">" ,
2015-07-30 20:58:02 +01:00
" " ,
" </div>" ,
2015-08-13 15:32:40 -07:00
" <div class = \"slot inset\">" ,
2015-07-30 20:58:02 +01:00
" " ,
" </div>" ,
2015-08-13 15:32:40 -07:00
" <div class = \"slot inset\">" ,
2015-07-30 20:58:02 +01:00
" " ,
" </div>" ,
" </div>" ,
" <br/>" ,
2015-08-13 15:32:40 -07:00
" <div class = \"outset\">" ,
" <button class = \"go inset\">" ,
2015-07-30 20:58:02 +01:00
" Go" ,
" </button>" ,
" </div>" ,
" <br/>" ,
2015-08-13 15:32:40 -07:00
" <div class = \"foot inset\">" ,
" <span class = \"logger\"></span>" ,
2015-07-30 20:58:02 +01:00
" </div>" ,
" </div>" ,
"</div>" ,
2015-07-30 23:46:47 +01:00
"" ,
"<style>" ,
" .container {" ,
2015-08-01 16:10:21 +01:00
" background-color: #4a2b0f;" ,
2015-07-30 23:46:47 +01:00
" height: 400px;" ,
" width: 260px;" ,
" margin: 50px auto;" ,
" border-radius: 4px;" ,
" }" ,
" .header {" ,
2015-08-01 16:10:21 +01:00
" border: 2px solid #fff;" ,
2015-07-30 23:46:47 +01:00
" border-radius: 4px;" ,
2015-08-01 16:10:21 +01:00
" height: 55px;" ,
2015-07-30 23:46:47 +01:00
" margin: 14px auto;" ,
2015-08-01 16:10:21 +01:00
" background-color: #457f86" ,
2015-07-30 23:46:47 +01:00
" }" ,
" .header h2 {" ,
2015-08-01 16:10:21 +01:00
" height: 30px;" ,
" margin: auto;" ,
" }" ,
" .header h2 {" ,
" font-size: 14px;" ,
" margin: 0 0;" ,
2015-07-30 23:46:47 +01:00
" padding: 0;" ,
2015-08-01 16:10:21 +01:00
" color: #fff;" ,
" text-align: center;" ,
2015-07-30 23:46:47 +01:00
" }" ,
" .slots{" ,
" display: flex;" ,
2015-08-01 16:10:21 +01:00
" background-color: #457f86;" ,
2015-07-30 23:46:47 +01:00
" border-radius: 6px;" ,
2015-08-01 16:10:21 +01:00
" border: 2px solid #fff;" ,
2015-07-30 23:46:47 +01:00
" }" ,
" .slot{" ,
" flex: 1 0 auto;" ,
" background: white;" ,
" height: 75px;" ,
" margin: 8px;" ,
2015-08-01 16:10:21 +01:00
" border: 2px solid #215f1e;" ,
2015-07-30 23:46:47 +01:00
" border-radius: 4px;" ,
2015-07-31 19:53:21 +01:00
" text-align: center;" ,
" padding-top: 25px;" ,
2015-07-30 23:46:47 +01:00
" }" ,
" .go {" ,
" width: 100%;" ,
2015-08-01 16:10:21 +01:00
" color: #fff;" ,
" background-color: #457f86;" ,
" border: 2px solid #fff;" ,
2015-07-30 23:46:47 +01:00
" border-radius: 2px;" ,
" box-sizing: none;" ,
" outline: none!important;" ,
" }" ,
" .foot {" ,
" height: 150px;" ,
2015-08-01 16:10:21 +01:00
" background-color: 457f86;" ,
" border: 2px solid #fff;" ,
2015-07-30 23:46:47 +01:00
" }" ,
" " ,
" .logger {" ,
" color: white;" ,
" margin: 10px;" ,
" }" ,
" " ,
" .outset {" ,
" -webkit-box-shadow: 0px 0px 15px -2px rgba(0,0,0,0.75);" ,
" -moz-box-shadow: 0px 0px 15px -2px rgba(0,0,0,0.75);" ,
" box-shadow: 0px 0px 15px -2px rgba(0,0,0,0.75);" ,
" }" ,
" " ,
" .inset {" ,
" -webkit-box-shadow: inset 0px 0px 15px -2px rgba(0,0,0,0.75);" ,
" -moz-box-shadow: inset 0px 0px 15px -2px rgba(0,0,0,0.75);" ,
" box-shadow: inset 0px 0px 15px -2px rgba(0,0,0,0.75);" ,
" }" ,
"</style>"
] ,
2015-08-07 23:37:32 -07:00
"type" : "waypoint" ,
2015-07-30 20:58:02 +01:00
"challengeType" : 0
2015-08-12 00:11:56 +01:00
} ,
{
"id" : "cf1111c1c11feddfaeb1bdff" ,
"title" : "Give your JavaScript Slot Machine some stylish images" ,
"difficulty" : "9.9901" ,
"description" : [
"Now that we can detect when the player wins we are going to add an image to each slot depending on the random values we generate" ,
"<code>$($('.slot')[0]).html('<img src = \"' + images[slotOne-1] + '\">');<code>"
] ,
"tests" : [
2015-08-14 14:48:59 -07:00
"assert(editor.match(/\\$\\(\\$\\(\\'\\.slot\\'\\)\\[\\d\\]\\)\\.html\\(\\'\\<img\\s?src\\s?=\\s?\"\\'\\s?\\+\\s?images\\[\\w+\\-1\\]\\s?\\+\\s?\\'\"\\>\\'\\);/gi) && editor.match(/\\$\\(\\$\\(\\'\\.slot\\'\\)\\[\\d\\]\\)\\.html\\(\\'\\<img\\s?src\\s?=\\s?\"\\'\\s?\\+\\s?images\\[\\w+\\-1\\]\\s?\\+\\s?\\'\"\\>\\'\\);/gi).length >= 3, 'Use the provided code three times. One for each slot');" ,
"assert(editor.match(/slotOne/gi) && editor.match(/slotOne/gi).length >= 7, 'You should have used the slotOne value at least once');" ,
"assert(editor.match(/slotTwo/gi) && editor.match(/slotTwo/gi).length >=8, 'You should have used the slotTwo value at least once');" ,
"assert(editor.match(/slotThree/gi) && editor.match(/slotThree/gi).length >= 7, 'You should have used the slotThree value at least once');"
2015-08-12 00:11:56 +01:00
] ,
"challengeSeed" : [
2015-08-13 22:07:54 -07:00
"fccss" ,
" function runSlots(){" ,
" var slotOne;" ,
" var slotTwo;" ,
" var slotThree;" ,
" " ,
" //Placeholder" ,
" var images = ['https://www.evernote.com/l/AlxaOC8QrXlBjpTdGMe3mBwLN3Yjm-KB5yQB/image.png','https://www.evernote.com/l/AlyXbeIS8axEspbwXD8RzmsaCUIf10snmzgB/image.png','https://www.evernote.com/l/AlxMveeWtopKaajUmTVrnv92mqA_s2uzW-8B/image.png','https://www.evernote.com/l/AlyyRP_Kh_dCG7t8b4JRnwMNCa1JThI_5gQB/image.png', 'https://www.evernote.com/l/Alx64952qUxEhJnBteZvJgxib1qlwQcw9G0B/image.png'];" ,
" " ,
" slotOne = Math.floor(Math.random() * (5 - 1 + 1)) + 1;" ,
" slotTwo = Math.floor(Math.random() * (5 - 1 + 1)) + 1;" ,
" slotThree = Math.floor(Math.random() * (5 - 1 + 1)) + 1;" ,
" " ,
2015-08-14 14:48:59 -07:00
" $('.logger').html('');" ,
" $('.logger').html('Not A Win');" ,
2015-08-13 22:07:54 -07:00
" " ,
2015-08-14 01:13:07 -07:00
" // Don't modify above this line" ,
2015-08-13 22:07:54 -07:00
" " ,
" " ,
" " ,
2015-08-14 01:13:07 -07:00
" // Don't modify below this line" ,
2015-08-13 22:07:54 -07:00
" " ,
2015-08-14 01:13:07 -07:00
" if(slotOne !== slotTwo || slotTwo !== slotThree){" ,
2015-08-13 22:07:54 -07:00
" return(null);" ,
" }" ,
" " ,
" if(slotOne !== undefined && slotTwo !== undefined && slotThree !== undefined){" ,
" $('.logger').html(slotOne);" ,
" $('.logger').append(' ' + slotTwo);" ,
" $('.logger').append(' ' + slotThree);" ,
" }" ,
" " ,
" return([slotOne, slotTwo, slotThree]);" ,
" }" ,
"" ,
" $(document).ready(function(){" ,
" $('.go').click(function(){" ,
" runSlots();" ,
" });" ,
" });" ,
"fcces" ,
" " ,
"<div>" ,
" <div class = 'container inset'>" ,
" <div class = 'header inset'>" ,
" <img src='https://s3.amazonaws.com/freecodecamp/freecodecamp_logo.svg.gz' alt='learn to code javascript at Free Code Camp logo' class='img-responsive nav-logo'>" ,
" <h2>FCC Slot Machine</h2>" ,
" </div>" ,
" <div class = 'slots inset'>" ,
" <div class = 'slot inset'>" ,
" " ,
" </div>" ,
" <div class = 'slot inset'>" ,
" " ,
" </div>" ,
" <div class = 'slot inset'>" ,
" " ,
" </div>" ,
" </div>" ,
" <br/>" ,
" <div class = 'outset'>" ,
" <button class = 'go inset'>" ,
" Go" ,
" </button>" ,
" </div>" ,
" <br/>" ,
" <div class = 'foot inset'>" ,
" <span class = 'logger'></span>" ,
" </div>" ,
" </div>" ,
"</div>" ,
"" ,
"<style>" ,
" .slot > img {" ,
" margin: 0!important;" ,
" height: 71px;" ,
" width: 50px;" ,
" }" ,
" .container {" ,
" background-color: #4a2b0f;" ,
" height: 400px;" ,
" width: 260px;" ,
" margin: 50px auto;" ,
" border-radius: 4px;" ,
" }" ,
" .header {" ,
" border: 2px solid #fff;" ,
" border-radius: 4px;" ,
" height: 55px;" ,
" margin: 14px auto;" ,
" background-color: #457f86" ,
" }" ,
" .header h2 {" ,
" height: 30px;" ,
" margin: auto;" ,
" }" ,
" .header h2 {" ,
" font-size: 14px;" ,
" margin: 0 0;" ,
" padding: 0;" ,
" color: #fff;" ,
" text-align: center;" ,
" }" ,
" .slots{" ,
" display: flex;" ,
" background-color: #457f86;" ,
" border-radius: 6px;" ,
" border: 2px solid #fff;" ,
" }" ,
" .slot{" ,
" flex: 1 0 auto;" ,
" background: white;" ,
" height: 75px;" ,
" width: 50px;" ,
" margin: 8px;" ,
" border: 2px solid #215f1e;" ,
" border-radius: 4px;" ,
" text-align: center;" ,
" }" ,
" .go {" ,
" width: 100%;" ,
" color: #fff;" ,
" background-color: #457f86;" ,
" border: 2px solid #fff;" ,
" border-radius: 2px;" ,
" box-sizing: none;" ,
" outline: none!important;" ,
" }" ,
" .foot {" ,
" height: 150px;" ,
" background-color: 457f86;" ,
" border: 2px solid #fff;" ,
" }" ,
" " ,
" .logger {" ,
" color: white;" ,
" margin: 10px;" ,
" }" ,
" " ,
" .outset {" ,
" -webkit-box-shadow: 0px 0px 15px -2px rgba(0,0,0,0.75);" ,
" -moz-box-shadow: 0px 0px 15px -2px rgba(0,0,0,0.75);" ,
" box-shadow: 0px 0px 15px -2px rgba(0,0,0,0.75);" ,
" }" ,
" " ,
" .inset {" ,
" -webkit-box-shadow: inset 0px 0px 15px -2px rgba(0,0,0,0.75);" ,
" -moz-box-shadow: inset 0px 0px 15px -2px rgba(0,0,0,0.75);" ,
" box-shadow: inset 0px 0px 15px -2px rgba(0,0,0,0.75);" ,
" }" ,
"</style>"
2015-08-12 00:11:56 +01:00
] ,
"type" : "waypoint" ,
"challengeType" : 0
2015-07-05 17:12:52 -07:00
}
]
}