From ed50b90678df386d62ccd579ab02a941dbf5e948 Mon Sep 17 00:00:00 2001 From: jagadeesh-18-bot Date: Sat, 22 Feb 2025 19:30:19 +0530 Subject: [PATCH 1/6] completer js-basics --- 1-js-basics/solution.md | 166 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 1-js-basics/solution.md diff --git a/1-js-basics/solution.md b/1-js-basics/solution.md new file mode 100644 index 0000000..d819f19 --- /dev/null +++ b/1-js-basics/solution.md @@ -0,0 +1,166 @@ +# Shopping Cart in JavaScript + +## Introduction + +When building a **shopping cart** in JavaScript, we use different data types to handle various aspects efficiently.Here i'll explain the **JavaScript data types** used in a shopping cart and their purposes, along with some of the examples. + +--- + +## 1. Number + +### **Purpose of using Number :** + +Here i use the `Number` data type to store some of the numerical values for **product prices, quantities, and total amounts** in the shopping cart. + +### **Example of using Number data type :** + +```javascript +let price = 299.99; // price of the single product +let quantity = 2; // count for the no of items added to the cart +let totalAmount = price * quantity; // this calculate the total cost + +console.log(totalAmount); // here we get the total cost +``` + +--- + +## 2. String + +### **Purpose of using Strings in the cart :** + +Here i'll use the `String` data type to store some **textual data**, such as **product names, descriptions, and categories**. + +### **Example usage :** + +```javascript +let productName = "Wireless Headphones"; +let productDescription = "Noise-canceling Bluetooth headphoes with long battery life."; + +console.log(productName + " - " + productDescription); +// Output: Wireless Headphones - Noise-canceling Bluetooth headphones with long battery life. +``` + +--- + +## 3. Boolean + +### **Purpose of using Boolean data type:** + +I use the The `Boolean` data type for **true/false values** to check product **availability, stock status, and discounts**. + +### **Example of using Booleans:** + +```javascript +let instock = true; // here , this means that the product is available +let onsale = false; // this means the product Product is not on sale + +console.log(inStock); // Output: true +console.log(onSale); // Output: false +``` + +--- + +## 4. Array + +### **Purpose of using Array:** + +I use `Array` data type to store **multiple items** in the shopping cart. + +### **Example:** + +```javascript +let cart = ["Laptop", "Mouse", "Keyboard"]; + +console.log(cart[0]); // Output: Laptop +console.log(cart.length); // Output: 3 +``` + +--- + +## 5. Object + +### **Purpose of Object :** + +`Object` data type is used to store multiple **properties** of a product, such as its **name, price, quantity, and category**. + +### **Example:** + +```javascript +let product = { + name: "Laptop", + price: 75000, + quantity: 1, + category: "Electronics" +}; + +console.log(product.name + " costs " + product.price); +// Output: Laptop costs 75000 +``` + +--- + + +## 6. Undefined + +### **Purpose of using undefined :** + +The `undefined` value is used when a **variable is declared but has no assigned value**. + +### **Example:** + +```javascript +let discount; // value for discount is not yet set + +console.log(discount); // Output: undefined +``` + +--- + +## 7. BigInt + +### **Purpose:** + +The `BigInt` data type is use for **very large numbers**, such as **unique order IDs**. + +### **Example of using Bigint:** + +```javascript +let orderId = 9876543210123456789; // Large order ID + +console.log(orderId); // Output: 9876543210123456789 +``` + +--- + +## 8. Symbol + +### **Purpose:** + +The `Symbol` data type here is used to create **unique product symbols**. + +### **Example:** + +```javascript +let productID = Symbol("Laptop"); // Unique symbol for a product + +console.log(productID); // Output: Symbol(Laptop) +``` + +--- + +## Conclusion + +In a **shopping cart system**, JavaScript data types help in handling different kinds of data efficiently: + +| **Data Type** | **Usage in Shopping Cart** | +| ------------- | ------------------------------------------------- | +| **Number** | Store prices, quantities, total amount of the items | +| **String** | Store product names, descriptions, categories | +| **Boolean** | Tracks the stock status, discounts, and availability | +| **Array** | To Store multiple products in the cart | +| **Object** | Store product details in a structured format | +| **Undefined** | for handling variables that are not initialized | +| **BigInt** | Store large numerical values like order IDs | +| **Symbol** | Ensure unique product identifiers | + +By using **these data types appropriately**, we can build a **efficient** shopping cart system in JavaScript! 🚀 From 26149ed6c03ad22bfd44ff35beac15f468f6c6f5 Mon Sep 17 00:00:00 2001 From: jagadeesh-18-bot Date: Sat, 22 Feb 2025 19:33:36 +0530 Subject: [PATCH 2/6] completed js-basics --- 1-js-basics/solution.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js-basics/solution.md b/1-js-basics/solution.md index d819f19..b460df8 100644 --- a/1-js-basics/solution.md +++ b/1-js-basics/solution.md @@ -1,4 +1,4 @@ -# Shopping Cart in JavaScript +#Shopping Cart in JavaScript ## Introduction From 531aa39c0155234faba95d1c2ec2389b95162394 Mon Sep 17 00:00:00 2001 From: jagadeesh-18-bot Date: Sat, 22 Feb 2025 21:36:28 +0530 Subject: [PATCH 3/6] completed js-basics --- 1-js-basics/solution.md | 82 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 80 insertions(+), 2 deletions(-) diff --git a/1-js-basics/solution.md b/1-js-basics/solution.md index b460df8..e1754e1 100644 --- a/1-js-basics/solution.md +++ b/1-js-basics/solution.md @@ -1,4 +1,4 @@ -#Shopping Cart in JavaScript +# Shopping Cart in JavaScript ## Introduction @@ -163,4 +163,82 @@ In a **shopping cart system**, JavaScript data types help in handling different | **BigInt** | Store large numerical values like order IDs | | **Symbol** | Ensure unique product identifiers | -By using **these data types appropriately**, we can build a **efficient** shopping cart system in JavaScript! 🚀 +By using **these data types appropriately**, we can build a **efficient** shopping cart system in JavaScript! + +## Second Assignment: JavaScript Functions + +### 1. Function That Returns a Value +```javascript +function calculateTotal(price, quantity) { + return price * quantity; // This returns the total cost +} + +let total = calculateTotal(100, 2); +console.log("Total Price:", total); // Output: Total Price: 200 +``` + +### 2. Function That Doesn't Return Anything +This function performs an action but doesn't return a value: +```javascript +function displayMessage(message) { + console.log("Message:", message); +} + +displayMessage("Welcome to our store!"); // Output: Message: Welcome to our store! +``` + +### 3. Function with a Mix of Parameters and Default Values +```javascript +function placeOrder(product, quantity = 1, discount = 0) { + let pricePerItem = 500; // Assuming the price per item is 500 + let total = (pricePerItem * quantity) - discount; + console.log(`Order placed for ${quantity} ${product}(s). Total: ₹${total}`); +} + +placeOrder("Laptop"); // Uses default values (quantity=1, discount=0) +placeOrder("Headphones", 2); // Uses default discount (₹0) +placeOrder("Smartphone", 3, 500); // Custom quantity and discount +``` + +--- + +## Third Assignment: If-Else Statement + +```javascript +let allStudents = ['A', 'B-', 1, 4, 5, 2]; // Grades taken from the given assignment +let studentsPassed = []; // This stores the passing students + +for (let i = 0; i < allStudents.length; i++) { + let grade = allStudents[i]; + + if (grade === 'A') { + studentsPassed.push(grade); + } else if (grade === 'A-') { + studentsPassed.push(grade); + } else if (grade === 'B') { + studentsPassed.push(grade); + } else if (grade === 'B-') { + studentsPassed.push(grade); + } else if (grade === 'C') { + studentsPassed.push(grade); + } else if (grade === 'C-') { + studentsPassed.push(grade); + } else if (grade >= 3) { + studentsPassed.push(grade); + } +} + +console.log(studentsPassed); // Output: ['A', 'B-', 4, 5] +``` + +--- + +## Fourth Assignment: Looping Every 3rd Number Between 1-20 + +```javascript +for (let i = 1; i <= 20; i += 3) { + console.log(i); +} // This prints every 3rd number from 1 to 20 +``` + + From 80c9bc410881625375b46a52c33ecd6e82ce498e Mon Sep 17 00:00:00 2001 From: jagadeesh-18-bot Date: Wed, 26 Feb 2025 23:53:13 +0530 Subject: [PATCH 4/6] This PR is the solution to the 'terrarium' #2 --- 2-terrarium/solution.md | 424 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 424 insertions(+) create mode 100644 2-terrarium/solution.md diff --git a/2-terrarium/solution.md b/2-terrarium/solution.md new file mode 100644 index 0000000..723d62e --- /dev/null +++ b/2-terrarium/solution.md @@ -0,0 +1,424 @@ +# SOLUTION-1 : +### As part of my assignment in the html and css i have done my simple "PORTFOLIO" : + +This is the `HTML` code wrote for the webpage : + +``` + + + + + + My Portfolio + + + + +
+

WELCOME TO MY PORTFOLIO

+
+ +
+ + My Pic +

About Me

+

Hello! I am K. Jagadeeshwar Reddy from Andhra Pradesh. My mother tongue is Telugu. I am an MPC student in Intermediate. My hobbies include listening to music, playing mobile games, badminton, and chess, which I deeply enjoy. In my leisure time, I watch movies to unwind. I have a strong passion for coding and enjoy working on computers for extended periods, constantly seeking to improve my skills.

+
+ +
+

Personal Details

+
    +
  • Name: Jagadeesh Kota
  • +
  • Birthplace: Kurnool
  • +
  • Mother Tongue: Telugu
  • +
  • Nationality: India
  • +
  • Email: kota.jagadesh123@gmail.com
  • +
  • Phone: +91 7013631730
  • +
+
+ +
+

Education Details

+
    +
  • College: Amrita Viswa Vidyapeetham
  • +
  • State: Kerala
  • +
  • Branch: AI & DS
  • +
  • Roll No: AM.SC.U4AID24019
  • +
  • Email: am.sc.u4aid24019@am.students.amrita.edu
  • +
  • Semester: 2
  • +
  • SGPA: 8.1
  • +
+
+ + + + + + +``` +here, the list of funnctions i used are `header`,`section`,`li`,`ul` these are some of the new tags i used here : + +1) `section` : section tag here is used to group together the related elements . +2) `header` : this i used here for the heading we can also use h1 tag , but for the heading it is better to use heade tag because this makes some difference from h1 to h6 tags +3) `li` : list tags aare used here to display them in the form of lists and in a decent way if there are no `li` tag that wont be in a proper order. +4) `b` : this is a bold tag mean it differs the main parameters and make them appear in abold manner. +5) `ul` : without this unordered list we get a bullet points for each list . + +--- + +## The `css` styling for the code goes as follows : + +#### style.css : + +``` +/* General Styles */ +body { + background-color: #0f0f0f; + color: white; + font-family: 'Poppins', sans-serif; + text-align: center; +} + + +header { + background: linear-gradient(90deg, #ff0080, #8000ff); + padding: 15px; + +} +.welcome { + font-size: 2em; + font-weight: bold; + color: white; +} + +/*this contains the profile section */ +.profile { + margin: 30px auto; /*here as this property is shorthanded to top-bottom and left-right */ + max-width: 600px; + padding: 20px; + border-radius: 10px; + background: rgba(255, 255, 255, 0.1); + box-shadow: 0px 0px 20px #ee02021a; /*horiz vertical offset blurradius */ +} +.profile-pic { + display: block; + margin: 0 auto 15px; /* top right-left bottom */ + width: 150px; + height: 150px; + border-radius: 0%; + border: 3px solid #fff; +} + +/* Sections */ +.details, .education { + margin: 20px auto; + max-width: 500px; + padding: 20px; + border-radius: 10px; + background: rgba(255, 255, 255, 0.1); +} +.details h2, .education h2 { + color: #ffcc00; +} +.details ul, .education ul { + list-style-type: none; + padding: 0; +} +.details li, .education li { + font-size: 1.2em; + padding: 5px; +} + +/* Social Media Section */ +.social-media { + margin: 30px auto; + padding: 20px; +} +.social-links { + display: flex; + flex-direction:row; + justify-content: center; + gap: 15px; +} +.btn { + background: #ff0080; + padding: 10px 20px; + color: white; + border-radius: 5px; + font-size: 1.2em; + transition: 0.1s ; +} +.btn:hover { + background: #8000ff; + transform: scale(2); +} + +``` +This is a simple css styling i used to make my web page attractive . + +--- + +# 2ND SOLUTION : + +- For this assignment the task is to make the terrarium using flex-box or css grid . Here i used Flexboxes and restyled the css , so that it looks exactly same as the Terrarium . For the code part implementation i gave the code below : + +``` + +/*

My Terrarium

*/ +h1 { + color:blue; +} +body { + font-family: helvetica, arial, sans-serif; + background-color: #0a9a84;} +h1 { + color: #3a241d; + text-align: center; +} +#left-container { + background-color: #000000; + width: 15%; + left: 0px; + top: 0px; + position: absolute; + height: 100%; + padding: 10px; + +} + +#right-container { + background-color: #000000; + width: 15%; + right: 0px; + top: 0px; + position: absolute; + height: 100%; + padding: 10px; +} +.plant-holder { + position: relative; + height: 13%; + left: -10px; +} + +.plant { + position: absolute; + max-width: 150%; + max-height: 150%; + z-index: 2; +} +#terrarium { + display: flex; + flex-direction: column; /* Stack elements in a column */ + align-items: center; /* Center items horizontally */ + width: 700px; + height: 600px; + background-color: #0a9a84; + position: relative; + padding: 10px; + border-radius: 10px; + margin-left: 25%; +} + +/* Jar Top */ +.jar-top { + width: 80%; + height: 5%; + background: #ffffff; + opacity: 0.7; +} + +/* Jar Walls */ +.jar-walls { + display: flex; + flex-direction: column; + justify-content: center; + position: relative; + height: 80%; + width: 100%; + background: #ffffff; + border-radius: 1rem 1rem 0 0; + opacity: 0.5; +} + +.jar-glossy-long, +.jar-glossy-short { + width: 3%; + background: #ffffff; + border-radius: 10px; + align-self: flex-start; /* Align to the left side */ + margin-left: 5%; +} + +.jar-glossy-long { + height: 15%; + margin-top: 20%; +} + +.jar-glossy-short { + height: 10%; + margin-top: 5%; +} + +/* Dirt */ +.dirt { + width: 100%; + height: 5%; + background: #650e72; + border-radius: 10% 10% 20rem 20rem; + opacity: 0.7; + +} + +/* Jar Bottom */ +.jar-bottom { + width: 80%; + height: 1%; + background: #e00782; + opacity: 0.7; +} + +/* .reset { + color: black; + display: flex; +} */ +``` + +-------------- +- So, this is the code which i have implemented for restyling the terrarium + +## Image of my terrarium: + +![Terrarium Image](https://github.com/user-attachments/assets/c59ca443-2ea9-485e-a279-85487b469be1) + + + +--- + +# 3RD SOLUTION : +## DOM assignment : +### Firstly `DOM` stands for Document Object Model +So, DOM is a programming interface that represents the structure of the web page and this is used to change the pages's style , structure and content in the page . + +--- + +- Dom represents the document as a logical tree of objects and content +- here each part of the branch ends in a node and each node further have another branch again. +- this DOM method allows programmatic access to the tree +- we can use DOM method to change the documents structure and style +- So, this is how the DOM works ... + +`DOM also helps the scripting languages like javascript to interact with the webpage`s + +--- + +There are 3 types in DOM : +- CORE DOM this is the standard Model for any structured document +- XML DOM this is the standard Model for XML documents +- HTML DOM and this is the model for HTML documents + + +### So, as part of my assignment from the list of DOM interfaces i choosed HTMLCollection as my choise : + +The `HTMLcollection` represents an ordered collection of elements . It automatically updates to reflect changes in the Document structure + +- Some of the common methods that return html elements are : + + +1) **getElementId()** - this is used to get the elements with id mean to work with the elements in javascript which should be applied only for the requred "id" elements and here it access the first element with the specified id +2) **getElementsByTagName()** - this method allows us to search all the elements with the specified tagname in our page. +3) **getElementByClassName()** - this returns the collection of all the elements that has the class name as specified in the function +4) **querySelectorAll()** - this returns the list of the elements that matches a specified group of selectors +5) **querySelector()** - this method returns the element that matches with the specified css selector + +Example : + +``` + + + + HTMLCollection Example + + +
First Content
+
Second Content
+
Third Content
+ + + +``` +- here , on using `document.getElementByClassName("content")` +- this method returns a HTMLcollection of elements which has the class "content". + +### Updating the code witha new div tag : + +``` + +const newdiv = document.getElement("div"); + +newdiv.classname = "content"; +newdiv.textcontent = "Fourth Content"; + +document.body.appendchild(newdiv); + +``` +## One real website example +- Think of a shopping website where when we go to the photo of the item we get the details of thet , Here that we can do by adding event listeners . + +``` + + + + Product Listing + + + +
Product 1
+
Product 2
+
Product 3
+ + + + + +``` + +- We attach eventlisteners mouseout and mouseover to each product . +- When a user hovers on a product the `.highlight` class is added this causes changing the backgroung color and when the mouse is removed it come backs to its original style . + + + + + + + + From 07514f0697030e3302d7e48e9f264602f51c641e Mon Sep 17 00:00:00 2001 From: jagadeesh-18-bot Date: Sat, 15 Mar 2025 03:19:31 +0530 Subject: [PATCH 5/6] Completed typing game --- 3-typing-game/My_typing_game/index.html | 26 +++++++ 3-typing-game/My_typing_game/script.js | 93 +++++++++++++++++++++++++ 3-typing-game/My_typing_game/style.css | 77 ++++++++++++++++++++ 3 files changed, 196 insertions(+) create mode 100644 3-typing-game/My_typing_game/index.html create mode 100644 3-typing-game/My_typing_game/script.js create mode 100644 3-typing-game/My_typing_game/style.css diff --git a/3-typing-game/My_typing_game/index.html b/3-typing-game/My_typing_game/index.html new file mode 100644 index 0000000..d9f1cfd --- /dev/null +++ b/3-typing-game/My_typing_game/index.html @@ -0,0 +1,26 @@ + + + + + Snake Game JavaScript + + + + + +
+
+ Score: 0 + High Score: 0 +
+
+
+ + + + +
+
+ + + \ No newline at end of file diff --git a/3-typing-game/My_typing_game/script.js b/3-typing-game/My_typing_game/script.js new file mode 100644 index 0000000..d2c0d21 --- /dev/null +++ b/3-typing-game/My_typing_game/script.js @@ -0,0 +1,93 @@ +const playBoard = document.querySelector(".play-board"); +const scoreElement = document.querySelector(".score"); +const highScoreElement = document.querySelector(".high-score"); +const controls = document.querySelectorAll(".controls i"); + +let gameOver = false +let foodX, foodY; +let snakeX = 5, snakeY = 5; +let velocityX = 0, velocityY = 0; +let snakeBody = []; +let setIntervalId; +let score = 0; + +// used for getting high score from the local storage +let highScore = localStorage.getItem("high-score") || 0; +highScoreElement.innerText = `High Score: ${highScore}`; + +const updateFoodPosition = () => { + // passes a random 1 to 30 for food position + foodX = Math.floor(Math.random() * 30) + 1; + foodY = Math.floor(Math.random() * 30) + 1; +} + +const handleGameOver = () => { + // clears the timer and reloading the page on game over + clearInterval(setIntervalId); + alert("Game Over! Press OK to replay..."); + location.reload(); +} + +const changeDirection = e => { + // changes velocity value based on key press + if(e.key === "ArrowUp" && velocityY != 1) { + velocityX = 0; + velocityY = -1; + } else if(e.key === "ArrowDown" && velocityY != -1) { + velocityX = 0; + velocityY = 1; + } else if(e.key === "ArrowLeft" && velocityX != 1) { + velocityX = -1; + velocityY = 0; + } else if(e.key === "ArrowRight" && velocityX != -1) { + velocityX = 1; + velocityY = 0; + } +} + +// calling the changeDirection on each key click and passing key dataset value as an object +controls.forEach(button => button.addEventListener("click", () => changeDirection({ key: button.dataset.key }))); + +const initGame = () => { + if(gameOver) return handleGameOver(); + let html = `
`; + + // checking if the snake hit the food + if(snakeX === foodX && snakeY === foodY) { + updateFoodPosition(); + snakeBody.push([foodY, foodX]); // pushign the food position to snake body array + score++; // increment the score by 1 + highScore = score >= highScore ? score : highScore; + localStorage.setItem("high-score", highScore); + scoreElement.innerText = `Score: ${score}`; + highScoreElement.innerText = `High Score: ${highScore}`; + } + // used to update the snake's head position based on the current velocity + snakeX += velocityX; + snakeY += velocityY; + + // Shifting forward the values of the elements in the snake body by one + for (let i = snakeBody.length - 1; i > 0; i--) { + snakeBody[i] = snakeBody[i - 1]; + } + snakeBody[0] = [snakeX, snakeY]; // Setting first element of snake body to current snake position + + // Checking if the snake's head is out of wall, if so setting gameOver to true + if(snakeX <= 0 || snakeX > 30 || snakeY <= 0 || snakeY > 30) { + return gameOver = true; + } + + for (let i = 0; i < snakeBody.length; i++) { + // adds a div for each part of the snake's body + html += `
`; + // checking if the snake head hit the body, if so set game is Over to true + if (i !== 0 && snakeBody[0][1] === snakeBody[i][1] && snakeBody[0][0] === snakeBody[i][0]) { + gameOver = true; + } + } + playBoard.innerHTML = html; +} + +updateFoodPosition(); +setIntervalId = setInterval(initGame, 100); +document.addEventListener("keyup", changeDirection); \ No newline at end of file diff --git a/3-typing-game/My_typing_game/style.css b/3-typing-game/My_typing_game/style.css new file mode 100644 index 0000000..4ecf15a --- /dev/null +++ b/3-typing-game/My_typing_game/style.css @@ -0,0 +1,77 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: 'Open Sans', sans-serif; +} +body { + display: flex; + align-items: center; + justify-content: center; + min-height: 100vh; + background: #E3F2FD; +} +.wrapper { + width: 65vmin; + height: 70vmin; + display: flex; + overflow: hidden; + flex-direction: column; + justify-content: center; + border-radius: 5px; + background: #ce13b8; + box-shadow: 10px 20px 40px rgb(21, 150, 36); +} +.game-details { + color: #B8C6DC; + font-weight: 500; + font-size: 1.2rem; + padding: 20px 27px; + display: flex; + justify-content: space-between; +} +.play-board { + height: 100%; + width: 100%; + display: grid; + background: #000000; + grid-template: repeat(30, 1fr) / repeat(30, 1fr); +} +.play-board .food { + background: #8ebc22; +} +.play-board .head { + background: #60CBFF; +} + +.controls { + display: none; + justify-content: space-between; +} +.controls i { + padding: 25px 0; + text-align: center; + font-size: 1.3rem; + color: #B8C6DC; + width: calc(100% / 4); + cursor: pointer; + border-right: 1px solid #171B26; +} + +@media screen and (max-width: 800px) { + .wrapper { + width: 90vmin; + height: 115vmin; + } + .game-details { + font-size: 1rem; + padding: 15px 27px; + } + .controls { + display: flex; + } + .controls i { + padding: 15px 0; + font-size: 1rem; + } +} \ No newline at end of file From bd9b3b9f7085ccbe757f0747441916697300fee8 Mon Sep 17 00:00:00 2001 From: jagadeesh-18-bot Date: Sat, 15 Mar 2025 03:51:28 +0530 Subject: [PATCH 6/6] completed typing game task --- 3-typing-game/typing-game/demo.gif | Bin 0 -> 126392 bytes 3-typing-game/typing-game/index.html | 35 ++++++++++ 3-typing-game/typing-game/script.js | 101 +++++++++++++++++++++++++++ 3-typing-game/typing-game/style.css | 96 +++++++++++++++++++++++++ 4 files changed, 232 insertions(+) create mode 100644 3-typing-game/typing-game/demo.gif create mode 100644 3-typing-game/typing-game/index.html create mode 100644 3-typing-game/typing-game/script.js create mode 100644 3-typing-game/typing-game/style.css diff --git a/3-typing-game/typing-game/demo.gif b/3-typing-game/typing-game/demo.gif new file mode 100644 index 0000000000000000000000000000000000000000..171388ee1a11d821a18ec881a2280e8b6d105b79 GIT binary patch literal 126392 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 LuBsuyhok-vTy30O literal 0 HcmV?d00001 diff --git a/3-typing-game/typing-game/index.html b/3-typing-game/typing-game/index.html new file mode 100644 index 0000000..7c1ae0b --- /dev/null +++ b/3-typing-game/typing-game/index.html @@ -0,0 +1,35 @@ + + + + + + Typing Game + + + + +

Typing Game!

+

Practice your typing skills with a quote from Sherlock Holmes. Click Start to begin!

+ +

+

+ +
+ + +
+ +

Best Time: --

+ + + + + + + + diff --git a/3-typing-game/typing-game/script.js b/3-typing-game/typing-game/script.js new file mode 100644 index 0000000..5a03ce4 --- /dev/null +++ b/3-typing-game/typing-game/script.js @@ -0,0 +1,101 @@ +// qquotes for the game +const quotes = [ + 'When you have eliminated the impossible, whatever remains, however improbable, must be the truth.', + 'There is nothing more deceptive than an obvious fact.', + 'I never make exceptions. An exception disproves the rule.', + 'What one man can invent another can discover.', + 'Nothing clears up a case so much as stating it to another person.', + 'Education never ends, Watson. It is a series of lessons, with the greatest for the last.', +]; + +let words = []; +let wordIndex = 0; +let startTime = null; + +// dom Elements +const quoteElement = document.getElementById('quote'); +const messageElement = document.getElementById('message'); +const typedValueElement = document.getElementById('typed-value'); +const startButton = document.getElementById('start'); +const modal = document.getElementById('modal'); +const modalMessage = document.getElementById('modal-message'); +const closeModal = document.getElementById('close-modal'); +const highScoreElement = document.getElementById('high-score'); + +// stores and displays the highest score using local storage +let highScore = localStorage.getItem('highScore'); +if (highScore) { + highScoreElement.innerText = `Best Time: ${highScore} sec`; +} + +// starts the game event +startButton.addEventListener('click', () => { + // picks a random quote + const quoteIndex = Math.floor(Math.random() * quotes.length); + const quote = quotes[quoteIndex]; + + // resets the game variables + words = quote.split(' '); + wordIndex = 0; + + // displays quote with highlighting + quoteElement.innerHTML = words.map(word => `${word} `).join(''); + quoteElement.childNodes[0].className = 'highlight'; + + // clear the previous messages + messageElement.innerText = ''; + + // this reenables input field when we reload + typedValueElement.disabled = false; + typedValueElement.value = ''; + typedValueElement.focus(); + + // Start timer + startTime = new Date().getTime(); +}); + +// Typing event +typedValueElement.addEventListener('input', () => { + const currentWord = words[wordIndex]; + const typedValue = typedValueElement.value; + + if (typedValue === currentWord && wordIndex === words.length - 1) { + // Game completed + const elapsedTime = (new Date().getTime() - startTime) / 1000; + messageElement.innerText = `You finished in ${elapsedTime.toFixed(2)} seconds!`; + + // if we break our own high score it gets updated + if (!highScore || elapsedTime < parseFloat(highScore)) { + localStorage.setItem('highScore', elapsedTime.toFixed(2)); + highScoreElement.innerText = `Best Time: ${elapsedTime.toFixed(2)} sec`; + } + + // after completing the typing we cant type further , input is disabled + typedValueElement.disabled = true; + // popup message + modalMessage.innerText = `Congratulations! You finished in ${elapsedTime.toFixed(2)} seconds.`; + modal.style.display = 'block'; + + } else if (typedValue.endsWith(' ') && typedValue.trim() === currentWord) { + // Correct word typed + typedValueElement.value = ''; + wordIndex++; + + // reseting highlights + for (const wordElement of quoteElement.childNodes) { + wordElement.className = ''; + } + quoteElement.childNodes[wordIndex].className = 'highlight'; + + } else if (currentWord.startsWith(typedValue)) { + typedValueElement.className = ''; + } else { + // for wrong inputs + typedValueElement.className = 'error'; + } +}); + +// closed popup on clicking ok +closeModal.addEventListener('click', () => { + modal.style.display = 'none'; +}); diff --git a/3-typing-game/typing-game/style.css b/3-typing-game/typing-game/style.css new file mode 100644 index 0000000..c714de7 --- /dev/null +++ b/3-typing-game/typing-game/style.css @@ -0,0 +1,96 @@ +/* General Styling */ +body { + background: linear-gradient(to right, #4facfe, #00f2fe); + text-align: center; + font-family: 'Arial', sans-serif; + color: white; + padding: 20px; +} + +/* Heading */ +h1 { + font-size: 50px; + color: #ffeb3b; +} + +/* Quote Text */ +p { + font-size: 24px; +} + +/* Quote Highlight */ +.highlight { + background-color: yellow; + font-weight: bold; +} + +/* Error Highlight */ +.error { + background-color: red; + color: white; +} + +/* Input & Button Styling */ +input { + font-size: 20px; + padding: 10px; + width: 300px; + border: 3px solid #ffeb3b; + border-radius: 10px; + text-align: center; +} + +button { + font-size: 18px; + padding: 10px 20px; + margin: 10px; + background-color: #ff9800; + color: white; + border: none; + border-radius: 10px; + cursor: pointer; +} + +button:hover { + background-color: #e65100; +} + +/* High Score Display */ +#high-score { + font-size: 20px; + margin-top: 10px; + font-weight: bold; +} + +/* Modal Styling */ +.modal { + display: none; + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + background: white; + padding: 20px; + border-radius: 10px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); + text-align: center; + color: black; + z-index: 1000; +} + +.modal-content { + padding: 20px; +} + +#close-modal { + margin-top: 10px; + padding: 10px 20px; + background-color: #4CAF50; + color: white; + border: none; + cursor: pointer; +} + +#close-modal:hover { + background-color: #388E3C; +}