From 01ece7845e0f0b1d4e75f853ad0fbdf87d70097f Mon Sep 17 00:00:00 2001 From: Hossein Date: Tue, 17 Oct 2023 10:36:43 -0700 Subject: [PATCH 001/184] set css for the App.js --- react-front-end/src/App.css | 33 ----------- react-front-end/src/style/App.css | 67 +++++++++++++++++++++++ react-front-end/src/{ => style}/index.css | 0 3 files changed, 67 insertions(+), 33 deletions(-) delete mode 100644 react-front-end/src/App.css create mode 100644 react-front-end/src/style/App.css rename react-front-end/src/{ => style}/index.css (100%) diff --git a/react-front-end/src/App.css b/react-front-end/src/App.css deleted file mode 100644 index b41d297cab..0000000000 --- a/react-front-end/src/App.css +++ /dev/null @@ -1,33 +0,0 @@ -.App { - text-align: center; -} - -.App-logo { - animation: App-logo-spin infinite 20s linear; - height: 40vmin; - pointer-events: none; -} - -.App-header { - background-color: #282c34; - min-height: 100vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: calc(10px + 2vmin); - color: white; -} - -.App-link { - color: #61dafb; -} - -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/react-front-end/src/style/App.css b/react-front-end/src/style/App.css new file mode 100644 index 0000000000..560a8ceb25 --- /dev/null +++ b/react-front-end/src/style/App.css @@ -0,0 +1,67 @@ +.rectangle-button { + width: 300px; + height: 100px; + background-color: #ffff00; + color: #000000; + border: 8px solid #000000; + border-radius: 5px; + font-size: 30px; + font-family: "Pixelify Sans", sans-serif; + margin: 10px; + cursor: pointer; +} + +.rectangle-button:hover { + background-color: #e0e000; +} + +.score-box { + background-color: #ffff00; + color: #000000; + border: 8px solid #000000; + border-radius: 5px; /* Add rounded corners */ + width: 800px; + padding: 40px; + font-family: "YourFontFamily", sans-serif; + font-size: 18px; + text-align: center; +} + +.score-columns { + display: flex; + justify-content: space-between; + margin-top: 20px; + flex-direction: column; + flex-wrap: wrap; + max-height: 140px; + gap: 5px; +} + +.score-column { + width: 30%; +} + +.score-row { + display: flex; + justify-content: space-around; + align-items: center; +} + +.player-name { + /* width: 50%; */ + text-align: left; +} + +.player-score { + /* width: 40%; */ + text-align: right; +} + +.div-style { + background-color: purple; + height: 100vh; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; +} diff --git a/react-front-end/src/index.css b/react-front-end/src/style/index.css similarity index 100% rename from react-front-end/src/index.css rename to react-front-end/src/style/index.css From 7bc6befab73225c565e1136bcdeecb257d63759d Mon Sep 17 00:00:00 2001 From: Hossein Date: Tue, 17 Oct 2023 10:51:26 -0700 Subject: [PATCH 002/184] add new font --- react-front-end/public/index.html | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/react-front-end/public/index.html b/react-front-end/public/index.html index 75980d58e2..a5da99ef5a 100644 --- a/react-front-end/public/index.html +++ b/react-front-end/public/index.html @@ -2,12 +2,17 @@ - + + + + + + - + JYDaT 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 { const shuffledArray = [...array]; @@ -79,15 +80,25 @@ const QuizComponent = () => { const correct = answers[currentQuestionIndex][1]; const [hintUsed, setHintUsed] = useState(false); + const [showDudeImage, setShowDudeImage] = useState(false); const handleAnswerClick = (selectedAnswer) => { if (selectedAnswer === correct) { console.log('Correct answer!'); setScore((prevScore) => prevScore + 20); + setShowDudeImage(true); + + // Set a timeout to hide the dude image and move to the next question + setTimeout(() => { + setShowDudeImage(false); + // handleNextClick(); + }, 800); + } else { console.log('Wrong answer!'); setLives((prevLives) => prevLives - 1); setScore((prevScore) => prevScore); + setShowDudeImage(false); } handleNextClick(); }; @@ -130,6 +141,7 @@ const QuizComponent = () => { return (
quizjs +

Round {currentRound}

{questions[currentQuestionIndex]}

@@ -140,8 +152,10 @@ const QuizComponent = () => { {getAnswerLabel(index)}. {answer} + ))} + {showDudeImage && Dude}

Lives: {Array.from({ length: lives }, (_, index) => '❤️').join(' ')}

Score: {score}

{showHint &&

Hint: {hints[currentQuestionIndex]}

} diff --git a/react-front-end/src/style/quiz.css b/react-front-end/src/style/quiz.css index 638119fa19..2e6fed7988 100644 --- a/react-front-end/src/style/quiz.css +++ b/react-front-end/src/style/quiz.css @@ -52,3 +52,7 @@ font-size: 30px; } +.dude { + width: 200px; + +} \ No newline at end of file From 067f657d808f6afe5c5d8f93bf3a804b2346d244 Mon Sep 17 00:00:00 2001 From: ychento Date: Sat, 21 Oct 2023 18:55:54 -0400 Subject: [PATCH 047/184] create the game page with function of showing choices and select answer --- react-front-end/src/components/game.js | 68 ++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 react-front-end/src/components/game.js diff --git a/react-front-end/src/components/game.js b/react-front-end/src/components/game.js new file mode 100644 index 0000000000..f70fde7afb --- /dev/null +++ b/react-front-end/src/components/game.js @@ -0,0 +1,68 @@ +import "../style/game.css"; +import React, { useState } from "react"; +// import data from "../data.json"; +import Quiz from "../asset/THELOGO.png"; +import { useNavigate } from "react-router-dom"; +import mockData from "../mockData.json"; + + + +function Game() { + const navigate = useNavigate(); + + const [currentQuestion, setCurrentQuestion] = useState(0); + const [selectedAnswer, setSelectedAnswer] = useState(0); + const [showResult, setShowResult] = useState(false); + + const handleAnswerSelect = (answer) => { + setSelectedAnswer(answer); + }; + + const checkAnswer = () => { + setShowResult(true); + }; + + const nextQuestion = () => { + if (currentQuestion < mockData.questions.length - 1) { + setCurrentQuestion(currentQuestion + 1); + setSelectedAnswer(0); + setShowResult(false); + } else { + + } + }; + + + return ( +
+ quizjs +
+

{mockData.questions[currentQuestion].question}

+
+
+ {mockData.questions[currentQuestion].choices.map((choice, index) => ( +
handleAnswerSelect(index)} + > + {choice} +
+ ))} +
+ {showResult && ( +
+ {selectedAnswer === mockData.questions[currentQuestion].correctAnswer ? "Correct!" : "Wrong!"} +
+ )} + + +
+ ); +} + +export default Game; From 128eb898e0eb5cb9792651eacb4eda3ebacff7cc Mon Sep 17 00:00:00 2001 From: ychento Date: Sat, 21 Oct 2023 18:58:00 -0400 Subject: [PATCH 048/184] add basic css code for game page --- react-front-end/src/style/game.css | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 react-front-end/src/style/game.css diff --git a/react-front-end/src/style/game.css b/react-front-end/src/style/game.css new file mode 100644 index 0000000000..1939b8b833 --- /dev/null +++ b/react-front-end/src/style/game.css @@ -0,0 +1,13 @@ + +.choice { + background-color: #eee; + padding: 10px; + margin: 5px; + cursor: pointer; + border: 1px solid #ccc; +} + +.choice.selected { + background-color: #ffff00; + color: #fff; +} From 08ffc6b190042d5f6610144ba09b489d35dde1f7 Mon Sep 17 00:00:00 2001 From: ychento Date: Sat, 21 Oct 2023 18:59:14 -0400 Subject: [PATCH 049/184] add /game route --- react-front-end/src/components/home.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/react-front-end/src/components/home.js b/react-front-end/src/components/home.js index bb2fcc4f27..aecc487ac6 100644 --- a/react-front-end/src/components/home.js +++ b/react-front-end/src/components/home.js @@ -9,7 +9,9 @@ import { useNavigate } from "react-router-dom"; function Home() { const navigate = useNavigate(); - function handleStartClick() { } + function handleStartClick() { + navigate("/game"); + } function handleInstructionsClick() { navigate("instructions") } From d4452e02fc078991c185db1afc5f82d3dc77df94 Mon Sep 17 00:00:00 2001 From: ychento Date: Sat, 21 Oct 2023 18:59:49 -0400 Subject: [PATCH 050/184] add route --- react-front-end/src/App.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/react-front-end/src/App.js b/react-front-end/src/App.js index 3288ac36e4..2216a505c0 100644 --- a/react-front-end/src/App.js +++ b/react-front-end/src/App.js @@ -2,6 +2,7 @@ import "./style/App.css"; import React from 'react'; import { Routes, Route, BrowserRouter } from 'react-router-dom'; import Home from './components/home'; +import Game from "./components/game"; import Instruction from './components/instruction'; function App() { @@ -10,6 +11,7 @@ function App() { } /> } /> + } /> ); From ddc71567d4244450116704a047d60498b6e6feae Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Mon, 23 Oct 2023 17:16:07 -0300 Subject: [PATCH 051/184] change set time out from image and route for game to quiz --- react-front-end/src/App.js | 2 +- react-front-end/src/components/home.js | 2 +- react-front-end/src/components/quiz.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/react-front-end/src/App.js b/react-front-end/src/App.js index ad9f1eaf95..61d5967cb6 100644 --- a/react-front-end/src/App.js +++ b/react-front-end/src/App.js @@ -12,7 +12,7 @@ function App() { } /> } /> - } /> + } /> } /> diff --git a/react-front-end/src/components/home.js b/react-front-end/src/components/home.js index 1342621f33..f6b053ee15 100644 --- a/react-front-end/src/components/home.js +++ b/react-front-end/src/components/home.js @@ -9,7 +9,7 @@ function Home() { const navigate = useNavigate(); function handleStartClick() { - navigate("/game"); + navigate("/quiz"); } function handleInstructionsClick() { navigate("instructions") diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 733c028378..b492128895 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -92,7 +92,7 @@ const QuizComponent = () => { setTimeout(() => { setShowDudeImage(false); // handleNextClick(); - }, 800); + }, 1500); } else { console.log('Wrong answer!'); From 75e5004df3eec47f18e3030ca0bdb6f147faa729 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Tue, 24 Oct 2023 09:38:12 -0300 Subject: [PATCH 052/184] is working with db but correct asnwer is not being handle correctly --- express-back-end/server.js | 5 + react-front-end/src/components/quiz.js | 148 +++++++++---------------- 2 files changed, 60 insertions(+), 93 deletions(-) diff --git a/express-back-end/server.js b/express-back-end/server.js index 9840df57a1..02e7d01ab8 100644 --- a/express-back-end/server.js +++ b/express-back-end/server.js @@ -4,6 +4,11 @@ const bodyParser = require('body-parser'); const knex = require('knex'); const config = require('./knexfile')[process.env.NODE_ENV || 'development']; const database = knex(config); +const cors = require("cors"); + +app.use(cors( + { origin: "http://localhost:8080" } +)); const PORT = 8080; diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index b492128895..3972f48776 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import React, { useState, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import "../style/quiz.css"; import Quiz from "../asset/THELOGO.png"; @@ -15,113 +15,63 @@ const shuffleArray = (array) => { const QuizComponent = () => { const navigate = useNavigate(); + const [questions, setQuestions] = useState([]); const [currentQuestionIndex, setCurrentQuestionIndex] = useState(0); const [currentRound, setCurrentRound] = useState(1); const [lives, setLives] = useState(5); const [showHint, setShowHint] = useState(false); const [score, setScore] = useState(0); - - const questions = [ - 'What is the capital of France?', - 'Who wrote "Romeo and Juliet"?', - 'What is the largest planet in our solar system?', - 'What is the square root of a fish?', - 'If you have 3 apples and you take away 2, how many apples do you have left?', - 'What has keys but can\'t open locks?', - 'Which is the odd one out?', - 'How many sides does a circle have?', - 'If a plane crashes on the border between the U.S. and Canada, where do you bury the survivors?', - 'What gets wetter as it dries?', - 'Which planet is known as the "Red Planet"?', - 'What comes once in a minute, twice in a moment, but never in a thousand years?', - 'If a rooster lays an egg on a triangular roof, which way does the egg roll?', - 'How can a man go eight days without sleep?', - 'What has an endless supply of letters but starts empty?', - ]; - - const answers = [ - ['Berlin', 'Paris', 'Madrid', 'London'], - ['Charles Dickens', 'William Shakespeare', 'Jane Austen', 'Mark Twain'], - ['Mars', 'Jupiter', 'Saturn', 'Earth'], - ['2', 'Fish', '42', '√(-1)'], - ['0', '1', '2', '3'], - ['A door', 'Piano', 'Typewriter', 'keyboard'], - ['Apple', 'Orange', 'Banana', 'Grape'], - ['0', '1', '2', 'Infinite'], - ['In the U.S.', 'Nowhere, survivors are alive', 'In Canada', 'In an international cemetery'], - ['Sponge', 'Towel', 'Soap', 'Raincoat'], - ['Venus', 'Mars', 'Jupiter', 'Saturn'], - ['The letter "E"', 'The letter "M"', 'The letter "O"', 'The letter "N"'], - ['Left', 'It doesn\'t roll, roosters don\'t lay eggs', 'Right', 'Down'], - ['He sleeps at night', 'He only sleeps at night', 'He sleeps during the day', 'He takes power naps'], - ['Mailbox', 'Mailman', 'Post Office', 'Alphabet'], - ]; - - const hints = [ - "Think about the Eiffel Tower.", - "The author's initials are W.S.", - "It has a Great Red Spot.", - "Fish come in many shapes and sizes, but they are known for something specific.", - "This question plays with the concept of ownership.", - "This item is often found in homes and offices.", - "Consider the category or common characteristics of the items.", - "Think geometrically, but don't focus on straight lines.", - "This is a tricky question involving the geography of a crash.", - "It's related to an everyday item and the action it performs.", - "Look to the skies and identify the planet with a distinct color.", - "This one is about time and a specific letter's occurrence.", - "Focus on the unique situation described and its implications.", - "It's not about sleeping patterns but a clever trick with days.", - "It's not about paper or mail but a fundamental concept.", - ]; - - // Shuffle the answers for each question - const shuffledAnswers = answers.map((answerSet) => shuffleArray(answerSet)); - - const correct = answers[currentQuestionIndex][1]; const [hintUsed, setHintUsed] = useState(false); const [showDudeImage, setShowDudeImage] = useState(false); + useEffect(() => { + // Fetch questions from the API + fetch('http://localhost:8080/api/questions') + .then(response => response.json()) + .then(data => setQuestions(data.questions)) + .catch(error => console.error('Error fetching questions:', error)); + }, []); + const handleAnswerClick = (selectedAnswer) => { - if (selectedAnswer === correct) { + const correctOption = questions[currentQuestionIndex].correct_option; + + if (selectedAnswer === correctOption) { console.log('Correct answer!'); setScore((prevScore) => prevScore + 20); setShowDudeImage(true); - // Set a timeout to hide the dude image and move to the next question - setTimeout(() => { - setShowDudeImage(false); - // handleNextClick(); - }, 1500); - + // Set a timeout to hide the dude image and move to the next question + setTimeout(() => { + setShowDudeImage(false); + handleNextClick(); + }, 1500); } else { console.log('Wrong answer!'); setLives((prevLives) => prevLives - 1); setScore((prevScore) => prevScore); setShowDudeImage(false); + handleNextClick(); } - handleNextClick(); }; - const handleHintClick = () => { + const handleHintClick = () => { setHintUsed(true); // Set hintUsed to true when the hint is clicked setShowHint(true); // Show the hint - }; const handleNextClick = () => { - if (currentQuestionIndex === 14) { + if (currentQuestionIndex === questions.length - 1) { // Quiz completed console.log('Quiz completed!'); navigate('/congrads'); } else { - if (hintUsed && correct) { + if (hintUsed && questions[currentQuestionIndex].correct_option) { // Award points only if the hint was used and the answer is correct setScore((prevScore) => prevScore - 10); } setCurrentQuestionIndex((prevIndex) => prevIndex + 1); setShowHint(false); // Reset the hint display when moving to the next question - setHintUsed(false); + setHintUsed(false); if (currentQuestionIndex % 5 === 4) { // Move to the next round after every 5 questions @@ -138,28 +88,39 @@ const QuizComponent = () => { return String.fromCharCode(65 + index); }; + if (questions.length === 0) { + return

Loading...

; + } + + const currentQuestion = questions[currentQuestionIndex]; + const shuffledAnswers = shuffleArray([ + currentQuestion.optiona, + currentQuestion.optionb, + currentQuestion.optionc, + currentQuestion.optiond, + ]); + return (
- quizjs - -
-

Round {currentRound}

-

{questions[currentQuestionIndex]}

-
    - {shuffledAnswers[currentQuestionIndex].map((answer, index) => ( -
  • - -
  • - - ))} -
- {showDudeImage && Dude} -

Lives: {Array.from({ length: lives }, (_, index) => '❤️').join(' ')}

-

Score: {score}

- {showHint &&

Hint: {hints[currentQuestionIndex]}

} - + quizjs + +
+

Round {currentRound}

+

{currentQuestion.question}

+
    + {shuffledAnswers.map((answer, index) => ( +
  • + +
  • + ))} +
+ {showDudeImage && Dude} +

Lives: {Array.from({ length: lives }, (_, index) => '❤️').join(' ')}

+

Score: {score}

+ {showHint &&

Hint: {currentQuestion.hint}

} +
); @@ -169,3 +130,4 @@ export default QuizComponent; + From fa407272c55021a5b4c524c9c6a5139a24881a54 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Tue, 24 Oct 2023 10:05:42 -0300 Subject: [PATCH 053/184] is working but now it going thought every question instead of showing a random 15 --- react-front-end/src/components/quiz.js | 65 +++++++++++++++----------- 1 file changed, 39 insertions(+), 26 deletions(-) diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 3972f48776..31d2c6b395 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -4,15 +4,6 @@ import "../style/quiz.css"; import Quiz from "../asset/THELOGO.png"; import Dude from "../asset/dude.png"; -const shuffleArray = (array) => { - const shuffledArray = [...array]; - for (let i = shuffledArray.length - 1; i > 0; i--) { - const j = Math.floor(Math.random() * (i + 1)); - [shuffledArray[i], shuffledArray[j]] = [shuffledArray[j], shuffledArray[i]]; - } - return shuffledArray; -}; - const QuizComponent = () => { const navigate = useNavigate(); const [questions, setQuestions] = useState([]); @@ -34,11 +25,19 @@ const QuizComponent = () => { const handleAnswerClick = (selectedAnswer) => { const correctOption = questions[currentQuestionIndex].correct_option; + // console log for debugging +console.log('correct option:', correctOption); + + // Map the correct option to the corresponding index (A->0, B->1, C->2, D->3) + const correctIndex = correctOption.charCodeAt(0) - 'A'.charCodeAt(0); + // console log for debugging +console.log('correct index:', correctIndex); - if (selectedAnswer === correctOption) { - console.log('Correct answer!'); - setScore((prevScore) => prevScore + 20); - setShowDudeImage(true); + if (selectedAnswer === correctIndex) { + // Handle correct answer logic + console.log('Correct answer!'); + setScore((prevScore) => prevScore + 20); + setShowDudeImage(true); // Set a timeout to hide the dude image and move to the next question setTimeout(() => { @@ -92,13 +91,12 @@ const QuizComponent = () => { return

Loading...

; } + + + + + const currentQuestion = questions[currentQuestionIndex]; - const shuffledAnswers = shuffleArray([ - currentQuestion.optiona, - currentQuestion.optionb, - currentQuestion.optionc, - currentQuestion.optiond, - ]); return (
@@ -108,13 +106,28 @@ const QuizComponent = () => {

Round {currentRound}

{currentQuestion.question}

    - {shuffledAnswers.map((answer, index) => ( -
  • - -
  • - ))} +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • + +
{showDudeImage && Dude}

Lives: {Array.from({ length: lives }, (_, index) => '❤️').join(' ')}

From a4c6d13e1fd38078f471e3732ac9b9302f3236e1 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Tue, 24 Oct 2023 13:05:26 -0300 Subject: [PATCH 054/184] revert changes untill got back to working state --- express-back-end/server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/express-back-end/server.js b/express-back-end/server.js index 02e7d01ab8..d5674cd797 100644 --- a/express-back-end/server.js +++ b/express-back-end/server.js @@ -7,7 +7,7 @@ const database = knex(config); const cors = require("cors"); app.use(cors( - { origin: "http://localhost:8080" } + { origin: "http://localhost:3000" } )); const PORT = 8080; From 86dc73ccaa2f204b69ca98f2a6814d93623dae99 Mon Sep 17 00:00:00 2001 From: ychento Date: Tue, 24 Oct 2023 14:14:58 -0400 Subject: [PATCH 055/184] add game function --- react-front-end/package-lock.json | 615 +++++++++++++++++++++++++ react-front-end/src/components/game.js | 38 +- react-front-end/src/mockData.json | 4 +- 3 files changed, 653 insertions(+), 4 deletions(-) diff --git a/react-front-end/package-lock.json b/react-front-end/package-lock.json index e95f844a4e..03175f72d4 100644 --- a/react-front-end/package-lock.json +++ b/react-front-end/package-lock.json @@ -8041,6 +8041,621 @@ "node": ">=0.8.0" } }, + "node_modules/fsevents/node_modules/abbrev": { + "version": "1.1.1", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/ansi-regex": { + "version": "2.1.1", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/aproba": { + "version": "1.2.0", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/are-we-there-yet": { + "version": "1.1.4", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/fsevents/node_modules/balanced-match": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/brace-expansion": { + "version": "1.1.11", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/fsevents/node_modules/chownr": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/code-point-at": { + "version": "1.1.0", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/concat-map": { + "version": "0.0.1", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/console-control-strings": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/core-util-is": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/debug": { + "version": "2.6.9", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/fsevents/node_modules/deep-extend": { + "version": "0.5.1", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/delegates": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/detect-libc": { + "version": "1.0.3", + "inBundle": true, + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/fsevents/node_modules/fs-minipass": { + "version": "1.2.5", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^2.2.1" + } + }, + "node_modules/fsevents/node_modules/fs.realpath": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/gauge": { + "version": "2.7.4", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/fsevents/node_modules/glob": { + "version": "7.1.2", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/fsevents/node_modules/has-unicode": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/iconv-lite": { + "version": "0.4.21", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/ignore-walk": { + "version": "3.0.1", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/fsevents/node_modules/inflight": { + "version": "1.0.6", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/fsevents/node_modules/inherits": { + "version": "2.0.3", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/ini": { + "version": "1.3.5", + "inBundle": true, + "license": "ISC", + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/fsevents/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/isarray": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/minimatch": { + "version": "3.0.4", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/fsevents/node_modules/minimist": { + "version": "0.0.8", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/minipass": { + "version": "2.2.4", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "node_modules/fsevents/node_modules/minizlib": { + "version": "1.1.0", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "minipass": "^2.2.1" + } + }, + "node_modules/fsevents/node_modules/mkdirp": { + "version": "0.5.1", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "minimist": "0.0.8" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/fsevents/node_modules/ms": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/needle": { + "version": "2.2.0", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 0.10.x" + } + }, + "node_modules/fsevents/node_modules/node-pre-gyp": { + "version": "0.10.0", + "inBundle": true, + "license": "BSD-3-Clause", + "optional": true, + "dependencies": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/fsevents/node_modules/nopt": { + "version": "4.0.1", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "abbrev": "1", + "osenv": "^0.1.4" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/fsevents/node_modules/npm-bundled": { + "version": "1.0.3", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/npm-packlist": { + "version": "1.1.10", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "node_modules/fsevents/node_modules/npmlog": { + "version": "4.1.2", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/fsevents/node_modules/number-is-nan": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/object-assign": { + "version": "4.1.1", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/once": { + "version": "1.4.0", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/fsevents/node_modules/os-homedir": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/os-tmpdir": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/osenv": { + "version": "0.1.5", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/fsevents/node_modules/path-is-absolute": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/process-nextick-args": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/rc": { + "version": "1.2.7", + "inBundle": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "optional": true, + "dependencies": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/fsevents/node_modules/rc/node_modules/minimist": { + "version": "1.2.0", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/readable-stream": { + "version": "2.3.6", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/fsevents/node_modules/rimraf": { + "version": "2.6.2", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "glob": "^7.0.5" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/fsevents/node_modules/safe-buffer": { + "version": "5.1.1", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/safer-buffer": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/sax": { + "version": "1.2.4", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/semver": { + "version": "5.5.0", + "inBundle": true, + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/fsevents/node_modules/set-blocking": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/signal-exit": { + "version": "3.0.2", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/string_decoder": { + "version": "1.1.1", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/fsevents/node_modules/string-width": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/strip-ansi": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/strip-json-comments": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/tar": { + "version": "4.4.1", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/fsevents/node_modules/util-deprecate": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/wide-align": { + "version": "1.1.2", + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "string-width": "^1.0.2" + } + }, + "node_modules/fsevents/node_modules/wrappy": { + "version": "1.0.2", + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/yallist": { + "version": "3.0.2", + "inBundle": true, + "license": "ISC", + "optional": true + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", diff --git a/react-front-end/src/components/game.js b/react-front-end/src/components/game.js index f70fde7afb..9726a7be3c 100644 --- a/react-front-end/src/components/game.js +++ b/react-front-end/src/components/game.js @@ -12,23 +12,52 @@ function Game() { const [currentQuestion, setCurrentQuestion] = useState(0); const [selectedAnswer, setSelectedAnswer] = useState(0); + const [showHint, setShowHint] = useState(false); const [showResult, setShowResult] = useState(false); - + const [score, setScore] = useState(0); + const totalLives = 5; + const [remainingLives, setRemainingLives] = useState (totalLives) + const handleAnswerSelect = (answer) => { setSelectedAnswer(answer); }; const checkAnswer = () => { + if (selectedAnswer === mockData.questions[currentQuestion].correctAnswer) { + if (showHint) { + setScore(score + 10); + } else { + setScore(score + 20); + } + } else { + if (remainingLives > 0) { + setRemainingLives(remainingLives - 1); + } else { + navigate("/home"); + } + } setShowResult(true); }; + const showQuestionHint = () => { + setShowHint(true); + }; + const nextQuestion = () => { if (currentQuestion < mockData.questions.length - 1) { setCurrentQuestion(currentQuestion + 1); setSelectedAnswer(0); + setShowHint(false); setShowResult(false); } else { - + if (remainingLives > 0) { + setCurrentQuestion(0); + setSelectedAnswer(0); + setShowHint(false); + setShowResult(false); + } else { + navigate("/leaderboard", { state: {score} }); + } } }; @@ -50,6 +79,10 @@ function Game() {
))}
+ + {showHint &&
{mockData.questions[currentQuestion].hint}
} {showResult && (
{selectedAnswer === mockData.questions[currentQuestion].correctAnswer ? "Correct!" : "Wrong!"} @@ -61,6 +94,7 @@ function Game() { +
Lives: {remainingLives}
); } diff --git a/react-front-end/src/mockData.json b/react-front-end/src/mockData.json index 6cb08def40..b47c64e2ab 100644 --- a/react-front-end/src/mockData.json +++ b/react-front-end/src/mockData.json @@ -2,13 +2,13 @@ "questions": [ { "question": "What is the capital of France?", - "choices": ["London", "Berlin", "Paris", "Madrid"], + "choices": ["London", "Berlin", "Paris", "Madrid", "Lyon"], "correctAnswer": 2, "hint": "This city is known for its iconic Eiffel Tower, delicious croissants, and the Louvre Museum, which houses the famous Mona Lisa." }, { "question": "What is the largest planet in the solar system?", - "choices": ["Earth", "Mars", "Jupiter", "Venus"], + "choices": ["Earth", "Mars", "Jupiter", "Venus", "Moon"], "correctAnswer": 2, "hint": "This planet is famous for its massive size and is often referred to as the 'king' of the planets in our solar system." } From 230d6982bdecdab129ccb13adfade0c78a392a92 Mon Sep 17 00:00:00 2001 From: ychento Date: Tue, 24 Oct 2023 15:45:53 -0400 Subject: [PATCH 056/184] edit code --- react-front-end/src/components/game.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/react-front-end/src/components/game.js b/react-front-end/src/components/game.js index 9726a7be3c..aeea830ac7 100644 --- a/react-front-end/src/components/game.js +++ b/react-front-end/src/components/game.js @@ -56,7 +56,7 @@ function Game() { setShowHint(false); setShowResult(false); } else { - navigate("/leaderboard", { state: {score} }); + navigate("/HighestScore", { state: {score} }); } } }; From 27813577568a523ab1e448c89a1e0904909383d7 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Wed, 25 Oct 2023 18:50:38 -0300 Subject: [PATCH 057/184] got random question for every playthought to work --- express-back-end/server.js | 2 ++ react-front-end/src/components/quiz.js | 30 ++++++++++++++++++++------ 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/express-back-end/server.js b/express-back-end/server.js index d5674cd797..298ca2f993 100644 --- a/express-back-end/server.js +++ b/express-back-end/server.js @@ -27,6 +27,8 @@ app.get('/api/questions', (req, res) => { database .select('*') .from('question') + .orderByRaw('RANDOM()') + .limit(15) .then(rows => { // Process the rows console.log(rows); diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 31d2c6b395..837d44f95c 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -15,13 +15,29 @@ const QuizComponent = () => { const [hintUsed, setHintUsed] = useState(false); const [showDudeImage, setShowDudeImage] = useState(false); - useEffect(() => { - // Fetch questions from the API - fetch('http://localhost:8080/api/questions') - .then(response => response.json()) - .then(data => setQuestions(data.questions)) - .catch(error => console.error('Error fetching questions:', error)); - }, []); +// Function to shuffle an array +// const shuffleArray = (array) => { +// const shuffled = array.slice(); +// for (let i = shuffled.length - 1; i > 0; i--) { +// const j = Math.floor(Math.random() * (i + 1)); +// [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]]; +// } +// return shuffled; +// }; + + +useEffect(() => { + // Fetch questions + fetch('http://localhost:8080/api/questions') + .then(response => response.json()) + .then(data => { + // Shuffle the array of questions + // const shuffledQuestions = shuffleArray(data.questions); + setQuestions(data.questions); + }) + .catch(error => console.error('Error fetching questions:', error)); +}, []); + const handleAnswerClick = (selectedAnswer) => { const correctOption = questions[currentQuestionIndex].correct_option; From 9239b43f0e1c34e0d9b652903563969f7ee9a031 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Wed, 25 Oct 2023 19:53:13 -0300 Subject: [PATCH 058/184] data of players name and score is being logged but not displayed yet --- react-front-end/src/App.js | 11 +++++++++- react-front-end/src/components/congrads.js | 25 ++++++++++++++++++---- react-front-end/src/components/quiz.js | 14 +----------- 3 files changed, 32 insertions(+), 18 deletions(-) diff --git a/react-front-end/src/App.js b/react-front-end/src/App.js index 61d5967cb6..81dae724cf 100644 --- a/react-front-end/src/App.js +++ b/react-front-end/src/App.js @@ -1,5 +1,6 @@ import "./style/App.css"; import React from 'react'; +import { useState } from "react"; import { Routes, Route, BrowserRouter } from 'react-router-dom'; import Home from './components/home'; import Instruction from './components/instruction'; @@ -7,13 +8,21 @@ import QuizComponent from './components/quiz'; import Congrads from "./components/congrads"; function App() { + const [leaderboardUpdated, setLeaderboardUpdated] = useState(false); + + const handleLeaderboardUpdate = () => { + setLeaderboardUpdated(true); + }; return ( } /> } /> } /> - } /> + } + /> ); diff --git a/react-front-end/src/components/congrads.js b/react-front-end/src/components/congrads.js index 1fae1761de..5ccfc80a8c 100644 --- a/react-front-end/src/components/congrads.js +++ b/react-front-end/src/components/congrads.js @@ -1,11 +1,11 @@ import React, { useState } from 'react'; - -import { useNavigate } from 'react-router-dom'; +import { useNavigate, useLocation } from 'react-router-dom'; import "../style/congrads.css"; import Quiz from "../asset/THELOGO.png"; -const Congrats = () => { +const Congrats = ({ onLeaderboardUpdate }) => { const navigate = useNavigate(); + const location = useLocation(); const handleBackToHome = () => { navigate('/'); @@ -13,13 +13,30 @@ const Congrats = () => { // State variables for form fields const [name, setName] = useState(''); + + // Access the score from the location state + const score = location.state && location.state.score; // Function to handle form submission const handleSubmit = (event) => { event.preventDefault(); // Perform actions with form data (e.g., send to server) - console.log('Submitted:', { name }); + console.log('Submitted:', { name, score }); + onLeaderboardUpdate(); + + // Navigate to the home page + navigate('/'); }; + + // For demonstration purposes, store data locally + + const leaderboardData = JSON.parse(localStorage.getItem('leaderboard')) || []; + leaderboardData.push({ name, score: score }); + localStorage.setItem('leaderboard', JSON.stringify(leaderboardData)); + + + + return (

Congratulations!

diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 837d44f95c..1b4f00ccb7 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -15,24 +15,12 @@ const QuizComponent = () => { const [hintUsed, setHintUsed] = useState(false); const [showDudeImage, setShowDudeImage] = useState(false); -// Function to shuffle an array -// const shuffleArray = (array) => { -// const shuffled = array.slice(); -// for (let i = shuffled.length - 1; i > 0; i--) { -// const j = Math.floor(Math.random() * (i + 1)); -// [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]]; -// } -// return shuffled; -// }; - useEffect(() => { // Fetch questions fetch('http://localhost:8080/api/questions') .then(response => response.json()) .then(data => { - // Shuffle the array of questions - // const shuffledQuestions = shuffleArray(data.questions); setQuestions(data.questions); }) .catch(error => console.error('Error fetching questions:', error)); @@ -78,7 +66,7 @@ console.log('correct index:', correctIndex); if (currentQuestionIndex === questions.length - 1) { // Quiz completed console.log('Quiz completed!'); - navigate('/congrads'); + navigate('/congrads', { state: { score } }); // pass the score as state } else { if (hintUsed && questions[currentQuestionIndex].correct_option) { // Award points only if the hint was used and the answer is correct From 8943affe6c82091d989ccb1dc62b73c9c2188a5d Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Wed, 25 Oct 2023 22:36:43 -0300 Subject: [PATCH 059/184] submit form at the end is now working --- express-back-end/server.js | 42 +++++++++++++------- react-front-end/src/App.js | 23 +++++++++-- react-front-end/src/components/HighScores.js | 10 ++++- react-front-end/src/components/congrads.js | 40 +++++++++++++------ react-front-end/src/components/home.js | 19 +++++++-- react-front-end/src/components/quiz.js | 1 + 6 files changed, 98 insertions(+), 37 deletions(-) diff --git a/express-back-end/server.js b/express-back-end/server.js index 298ca2f993..7cd05ff5ad 100644 --- a/express-back-end/server.js +++ b/express-back-end/server.js @@ -1,3 +1,4 @@ +// server.js const express = require('express'); const app = express(); const bodyParser = require('body-parser'); @@ -42,21 +43,32 @@ app.get('/api/questions', (req, res) => { }); // highscores -app.get('/api/high-scores', (req, res) => { - database - .select('*') - .from('game') - .then(rows => { - // Process the rows - console.log(rows); - res.json({ games: rows }); - }) - .catch(error => { - // Handle errors - console.error(error); - res.status(500).json({ error: 'Internal Server Error' }); - }) -}); +app.route('/api/high-scores') + .get((req, res) => { + database + .select('*') + .from('game') + .then(rows => { + console.log(rows); + res.json({ games: rows }); + }) + .catch(error => { + console.error(error); + res.status(500).json({ error: 'Internal Server Error' }); + }); + }) + .post(async (req, res) => { + const { name, score } = req.body; + try { + // Insert the new score into the 'game' table + const [newScoreId] = await database('game').insert({ nickname: name, score }); + console.log('New score added with ID:', newScoreId); + res.status(200).json({ success: true }); + } catch (error) { + console.error('Error adding new score:', error); + res.status(500).json({ error: 'Internal Server Error', details: error.message }); + } + }); app.listen(PORT, () => { console.log(`Express seems to be listening on port ${PORT} 👍`); diff --git a/react-front-end/src/App.js b/react-front-end/src/App.js index 81dae724cf..76e1485e8d 100644 --- a/react-front-end/src/App.js +++ b/react-front-end/src/App.js @@ -8,11 +8,26 @@ import QuizComponent from './components/quiz'; import Congrads from "./components/congrads"; function App() { - const [leaderboardUpdated, setLeaderboardUpdated] = useState(false); - const handleLeaderboardUpdate = () => { - setLeaderboardUpdated(true); + const [highScores, setHighScores] = useState([]); + + + // Function to update high scores + const updateHighScores = async () => { + try { + // Fetch high scores from the server or perform any other logic + const response = await fetch('/api/high-scores'); + if (response.ok) { + const data = await response.json(); + setHighScores(data.games); + } else { + console.error('Failed to fetch high scores'); + } + } catch (error) { + console.error('Error fetching high scores:', error); + } }; + return ( @@ -21,7 +36,7 @@ function App() { } /> } + element={} /> diff --git a/react-front-end/src/components/HighScores.js b/react-front-end/src/components/HighScores.js index 807d403889..9ff532ec1c 100644 --- a/react-front-end/src/components/HighScores.js +++ b/react-front-end/src/components/HighScores.js @@ -1,3 +1,4 @@ +// highscores.js import React, { useState, useEffect } from 'react'; function HighScores() { @@ -9,8 +10,13 @@ function HighScores() { .then(response => response.json()) .then(data => { console.log('API Response:', data); + + // Filter out entries with null names + const filteredHighScores = data.games.filter(score => score.nickname !== null); + // Sort the high scores in descending order based on the 'score' property - const sortedHighScores = data.games.sort((a, b) => b.score - a.score); + const sortedHighScores = filteredHighScores.sort((a, b) => b.score - a.score); + setHighScores(sortedHighScores); }) .catch(error => console.error('Error fetching high scores:', error)); @@ -30,4 +36,4 @@ function HighScores() { ); } -export default HighScores; \ No newline at end of file +export default HighScores; diff --git a/react-front-end/src/components/congrads.js b/react-front-end/src/components/congrads.js index 5ccfc80a8c..309b9716b1 100644 --- a/react-front-end/src/components/congrads.js +++ b/react-front-end/src/components/congrads.js @@ -1,9 +1,10 @@ +// congrads.js import React, { useState } from 'react'; import { useNavigate, useLocation } from 'react-router-dom'; import "../style/congrads.css"; import Quiz from "../asset/THELOGO.png"; -const Congrats = ({ onLeaderboardUpdate }) => { +const Congrats = ({ onLeaderboardUpdate, setHighScores }) => { const navigate = useNavigate(); const location = useLocation(); @@ -18,25 +19,38 @@ const Congrats = ({ onLeaderboardUpdate }) => { const score = location.state && location.state.score; // Function to handle form submission - const handleSubmit = (event) => { + const handleSubmit = async (event) => { event.preventDefault(); // Perform actions with form data (e.g., send to server) console.log('Submitted:', { name, score }); - onLeaderboardUpdate(); + // Send data to the server + try { + const response = await fetch('/api/high-scores', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ name, score }), + }); + + if (response.ok) { + console.log('Score submitted successfully'); + // Optionally, you can update the state or perform other actions here + onLeaderboardUpdate(); + navigate('/'); + } else { + console.error('Failed to submit score'); + } + } catch (error) { + console.error('Error submitting score:', error); + } - // Navigate to the home page - navigate('/'); }; - // For demonstration purposes, store data locally - const leaderboardData = JSON.parse(localStorage.getItem('leaderboard')) || []; - leaderboardData.push({ name, score: score }); - localStorage.setItem('leaderboard', JSON.stringify(leaderboardData)); - - - - + // const leaderboardData = JSON.parse(localStorage.getItem('leaderboard')) || []; + // leaderboardData.push({ name, score: score }); + // localStorage.setItem('leaderboard', JSON.stringify(leaderboardData)); return (

Congratulations!

diff --git a/react-front-end/src/components/home.js b/react-front-end/src/components/home.js index f6b053ee15..f5ebe8df1d 100644 --- a/react-front-end/src/components/home.js +++ b/react-front-end/src/components/home.js @@ -3,11 +3,24 @@ import React from "react"; import Quiz from "../asset/THELOGO.png"; import { useNavigate } from "react-router-dom"; import HighScores from "./HighScores"; - +import { useState, useEffect } from "react"; function Home() { - + const [highScores, setHighScores] = useState([]); const navigate = useNavigate(); + + useEffect(() => { + // Fetch high scores from the server + fetch('/api/high-scores') + .then(response => response.json()) + .then(data => { + // Sort the high scores in descending order based on the 'score' property + const sortedHighScores = data.games.sort((a, b) => b.score - a.score); + setHighScores(sortedHighScores); + }) + .catch(error => console.error('Error fetching high scores:', error)); + }, []); + function handleStartClick() { navigate("/quiz"); } @@ -24,7 +37,7 @@ function Home() { - +
); } diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 1b4f00ccb7..8bcbf3f468 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -1,3 +1,4 @@ +// quiz.js import React, { useState, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import "../style/quiz.css"; From ddd8417046a1e1409068c2c634d936265e7e8389 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Wed, 25 Oct 2023 22:57:51 -0300 Subject: [PATCH 060/184] only 20 scores display at one time on front page now --- react-front-end/src/components/HighScores.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/react-front-end/src/components/HighScores.js b/react-front-end/src/components/HighScores.js index 9ff532ec1c..74d08b1445 100644 --- a/react-front-end/src/components/HighScores.js +++ b/react-front-end/src/components/HighScores.js @@ -17,7 +17,10 @@ function HighScores() { // Sort the high scores in descending order based on the 'score' property const sortedHighScores = filteredHighScores.sort((a, b) => b.score - a.score); - setHighScores(sortedHighScores); + // Take only the top 20 high scores + const top20HighScores = sortedHighScores.slice(0, 20); + + setHighScores(top20HighScores); }) .catch(error => console.error('Error fetching high scores:', error)); }, []); @@ -37,3 +40,4 @@ function HighScores() { } export default HighScores; + From b59edf485b330bcba09e9bd945f6db97e9f92212 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Wed, 25 Oct 2023 23:45:27 -0300 Subject: [PATCH 061/184] tryed to add a command to reset the db then reverted changes --- express-back-end/db/schema.sql | 2 -- express-back-end/package.json | 3 +- express-back-end/reset-database.js | 51 ++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 express-back-end/reset-database.js diff --git a/express-back-end/db/schema.sql b/express-back-end/db/schema.sql index 66aba1222e..915c7a8957 100644 --- a/express-back-end/db/schema.sql +++ b/express-back-end/db/schema.sql @@ -1,5 +1,3 @@ --- CREATE DATABASE QuizJS; - CREATE TABLE Game ( id SERIAL PRIMARY KEY, NickName VARCHAR(255) UNIQUE, diff --git a/express-back-end/package.json b/express-back-end/package.json index d95701c1fc..7123b9188c 100644 --- a/express-back-end/package.json +++ b/express-back-end/package.json @@ -6,7 +6,8 @@ "author": "garrettgsb", "license": "MIT", "scripts": { - "go": "nodemon server.js" + "go": "nodemon server.js", + "reset-db": "node reset-database.js" }, "dependencies": { "body-parser": "^1.20.2", diff --git a/express-back-end/reset-database.js b/express-back-end/reset-database.js new file mode 100644 index 0000000000..28fc5bb7e0 --- /dev/null +++ b/express-back-end/reset-database.js @@ -0,0 +1,51 @@ +// load .env data into process.env +require('dotenv').config(); + +// other dependencies +const fs = require('fs'); +const chalk = require('chalk'); +const db = require('../db/connection'); + +// PG connection setup +// const connectionString = process.env.DATABASE_URL || +// `postgresql://${process.env.DB_USER}:${process.env.DB_PASS}@${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_NAME}?sslmode=disable`; +// const client = new Client(); + +// Loads the schema files from db/schema +const runSchemaFiles = async () => { + console.log(chalk.cyan(`-> Loading Schema Files ...`)); + const schemaFilenames = fs.readdirSync('./db/schema'); + + for (const fn of schemaFilenames) { + const sql = fs.readFileSync(`./db/schema/${fn}`, 'utf8'); + console.log(`\t-> Running ${chalk.green(fn)}`); + await db.query(sql); + } +}; + +const runSeedFiles = async () => { + console.log(chalk.cyan(`-> Loading Seeds ...`)); + const schemaFilenames = fs.readdirSync('./db/seeds'); + + for (const fn of schemaFilenames) { + const sql = fs.readFileSync(`./db/seeds/${fn}`, 'utf8'); + console.log(`\t-> Running ${chalk.green(fn)}`); + await db.query(sql); + } +}; + +const runResetDB = async () => { + try { + process.env.DB_HOST && + console.log(`-> Connecting to PG on ${process.env.DB_HOST} as ${process.env.DB_USER}...`); + + await runSchemaFiles(); + await runSeedFiles(); + process.exit(); + } catch (err) { + console.error(chalk.red(`Failed due to error: ${err}`)); + process.exit(); + } +}; + +runResetDB(); \ No newline at end of file From f2e4f3251d5b4aef5b369f3a5d7228bb9f108f92 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Thu, 26 Oct 2023 12:29:45 -0300 Subject: [PATCH 062/184] added handling for scoring: --- express-back-end/package.json | 1 + express-back-end/server.js | 11 +++++------ react-front-end/src/components/congrads.js | 23 +++++++++++++++++++--- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/express-back-end/package.json b/express-back-end/package.json index 7123b9188c..901f753921 100644 --- a/express-back-end/package.json +++ b/express-back-end/package.json @@ -6,6 +6,7 @@ "author": "garrettgsb", "license": "MIT", "scripts": { + "start": "node server.js", "go": "nodemon server.js", "reset-db": "node reset-database.js" }, diff --git a/express-back-end/server.js b/express-back-end/server.js index 7cd05ff5ad..379bb8a1f7 100644 --- a/express-back-end/server.js +++ b/express-back-end/server.js @@ -43,8 +43,7 @@ app.get('/api/questions', (req, res) => { }); // highscores -app.route('/api/high-scores') - .get((req, res) => { +app.get('/api/high-scores', (req, res) => { database .select('*') .from('game') @@ -57,12 +56,13 @@ app.route('/api/high-scores') res.status(500).json({ error: 'Internal Server Error' }); }); }) - .post(async (req, res) => { + app.post('/api/high-scores', async (req, res) => { const { name, score } = req.body; + console.log('req body:', req.body); try { // Insert the new score into the 'game' table - const [newScoreId] = await database('game').insert({ nickname: name, score }); - console.log('New score added with ID:', newScoreId); + const [newScore] = await database('game').insert({ nickname: name, score }).returning('*'); + console.log('New score added with ID:', newScore.id); res.status(200).json({ success: true }); } catch (error) { console.error('Error adding new score:', error); @@ -73,4 +73,3 @@ app.route('/api/high-scores') app.listen(PORT, () => { console.log(`Express seems to be listening on port ${PORT} 👍`); }); - diff --git a/react-front-end/src/components/congrads.js b/react-front-end/src/components/congrads.js index 309b9716b1..08dad227ab 100644 --- a/react-front-end/src/components/congrads.js +++ b/react-front-end/src/components/congrads.js @@ -8,11 +8,13 @@ const Congrats = ({ onLeaderboardUpdate, setHighScores }) => { const navigate = useNavigate(); const location = useLocation(); + const handleBackToHome = () => { navigate('/'); }; // State variables for form fields + const [submissionMessage, setSubmissionMessage] = useState(''); const [name, setName] = useState(''); // Access the score from the location state @@ -32,16 +34,27 @@ const Congrats = ({ onLeaderboardUpdate, setHighScores }) => { }, body: JSON.stringify({ name, score }), }); - + + // the status and status text +console.log('Response Status:', response.status); +console.log('Response Status Text:', response.statusText); + +// convert the response body to JSON +const responseBody = await response.json(); +console.log('Response Body:', responseBody); + if (response.ok) { + setSubmissionMessage('Your score has been submitted successfully'); console.log('Score submitted successfully'); // Optionally, you can update the state or perform other actions here onLeaderboardUpdate(); - navigate('/'); + } else { + setSubmissionMessage('Failed to submit score'); console.error('Failed to submit score'); } } catch (error) { + setSubmissionMessage('Error submitting score'); console.error('Error submitting score:', error); } @@ -56,8 +69,12 @@ const Congrats = ({ onLeaderboardUpdate, setHighScores }) => {

Congratulations!

ON

COMPLETING

- quizjs + quizjs +

Your final score: {score}

+ + {submissionMessage &&

{submissionMessage}

} +
diff --git a/react-front-end/src/components/timer.js b/react-front-end/src/components/timer.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/react-front-end/src/style/quiz.css b/react-front-end/src/style/quiz.css index 2e6fed7988..e9dc8ec52b 100644 --- a/react-front-end/src/style/quiz.css +++ b/react-front-end/src/style/quiz.css @@ -1,3 +1,5 @@ + + .container { display: flex; flex-direction: column; From fb9d57f9775d88bb2ef857124df8a05717b06cb7 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Thu, 26 Oct 2023 17:55:34 -0300 Subject: [PATCH 067/184] added a thumb down dude --- .DS_Store | Bin 6148 -> 6148 bytes react-front-end/src/asset/thumbs-down.png | Bin 0 -> 131945 bytes react-front-end/src/components/quiz.js | 146 +++++++++++----------- react-front-end/src/style/quiz.css | 5 + 4 files changed, 75 insertions(+), 76 deletions(-) create mode 100644 react-front-end/src/asset/thumbs-down.png diff --git a/.DS_Store b/.DS_Store index 7ba6368d45a919b952c86cb4266a6ea7536d117e..137cb6dca61f8d1b0d261d54a994c61e45c8a7d2 100644 GIT binary patch delta 744 zcmZ8f&uNv+S-h%wfJa^S*E1`)1}ObCP+T3@j{;50m3- zS0FSleR>xNLTIuKZ%10+>S_kn5JDfduAy6YCi4vf!G$xSFc;>QxPAFC?aQ`m_pE|y z?m4RprH1CmsD0!0ZaCz*gmnE@xqe`D2z|+#V*|iN6!Fl9SCjj&I?@|Qo)h@u zJNYgMz88LRX*qH>D#YR|F)@}%B$DS6@e3C()rA#JZ5*^sr^jt-P_tn4a9xO6%;`>p zl9Gv!m_xcZ8RU0~KOSgZz7syNbt8OG9$-h%h^dk>}uMkSGlrOm(QvRNo;m{h|LJwqA zLx<=&dV}7h59l-cihiKq5QGRMVHMUO4OzGedDwz7$e@7g$^-tZUiOaj0G>FnIyr?G f(=Zq1*#DjWfB`mu~2NHo+2a5#DLw5ER%Uy7EEqpZ{4iG!OpU=;XLDJb`E|HpsLM+ b9N(EI^NUytFaQA~0|OJ3X4xDevW6J|5!4X^ diff --git a/react-front-end/src/asset/thumbs-down.png b/react-front-end/src/asset/thumbs-down.png new file mode 100644 index 0000000000000000000000000000000000000000..a388136f1e447011c8513550768731ef170935dd GIT binary patch literal 131945 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 { const navigate = useNavigate(); @@ -15,49 +16,48 @@ const QuizComponent = () => { const [score, setScore] = useState(0); const [hintUsed, setHintUsed] = useState(false); const [showDudeImage, setShowDudeImage] = useState(false); + const [showDude2Image, setShowDude2Image] = useState(false); const [startTime, setStartTime] = useState(null); -useEffect(() => { - // Fetch questions - fetch('http://localhost:8080/api/questions') - .then(response => response.json()) - .then(data => { - setQuestions(data.questions); - }) - .catch(error => console.error('Error fetching questions:', error)); -}, []); - -useEffect(() => { - // record start time -setStartTime(new Date()); -}, []); + useEffect(() => { + // Fetch questions + fetch("http://localhost:8080/api/questions") + .then((response) => response.json()) + .then((data) => { + setQuestions(data.questions); + }) + .catch((error) => console.error("Error fetching questions:", error)); + }, []); + + useEffect(() => { + // record start time + setStartTime(new Date()); + }, []); const handleAnswerClick = (selectedAnswer) => { const correctOption = questions[currentQuestionIndex].correct_option; // console log for debugging -console.log('correct option:', correctOption); - - // Map the correct option to the corresponding index (A->0, B->1, C->2, D->3) - const correctIndex = correctOption.charCodeAt(0) - 'A'.charCodeAt(0); - // console log for debugging -console.log('correct index:', correctIndex); - - if (selectedAnswer === correctIndex) { - // Handle correct answer logic - console.log('Correct answer!'); - setScore((prevScore) => prevScore + 20); - setShowDudeImage(true); - - // Set a timeout to hide the dude image and move to the next question - setTimeout(() => { - setShowDudeImage(false); - handleNextClick(); - }, 1500); + console.log("correct option:", correctOption); + + // Map the correct option to the corresponding index (A->0, B->1, C->2, D->3) + const correctIndex = correctOption.charCodeAt(0) - "A".charCodeAt(0); + // console log for debugging + console.log("correct index:", correctIndex); + + if (selectedAnswer === correctIndex) { + // Handle correct answer logic + console.log("Correct answer!"); + setScore((prevScore) => prevScore + 20); + setShowDudeImage(true); + setShowDude2Image(false); + handleNextClick(); + } else { - console.log('Wrong answer!'); + console.log("Wrong answer!"); setLives((prevLives) => prevLives - 1); setScore((prevScore) => prevScore); setShowDudeImage(false); + setShowDude2Image(true); handleNextClick(); } }; @@ -70,9 +70,9 @@ console.log('correct index:', correctIndex); const handleNextClick = () => { if (currentQuestionIndex === questions.length - 1) { // Quiz completed - console.log('Quiz completed! Remaining lives:', lives); + console.log("Quiz completed! Remaining lives:", lives); submitRemainingLives(); - navigate('/congrads', { state: { score, lives, startTime } }); // pass the score as state + navigate("/congrads", { state: { score, lives, startTime } }); // pass the score as state } else { if (hintUsed && questions[currentQuestionIndex].correct_option) { // Award points only if the hint was used and the answer is correct @@ -88,89 +88,83 @@ console.log('correct index:', correctIndex); } if (lives === 0) { // All lives are gone, navigate to the home page - navigate('/'); + navigate("/"); } } }; const submitRemainingLives = async () => { try { - const response = await fetch('/api/high-scores', { - method: 'POST', + const response = await fetch("/api/high-scores", { + method: "POST", headers: { - 'Content-Type': 'application/json', + "Content-Type": "application/json", }, body: JSON.stringify({ score, lives }), }); - + if (response.ok) { - console.log('Remaining lives submitted successfully'); + console.log("Remaining lives submitted successfully"); } else { - console.error('Failed to submit remaining lives'); + console.error("Failed to submit remaining lives"); } } catch (error) { - console.error('Error submitting remaining lives:', error); + console.error("Error submitting remaining lives:", error); } }; - const getAnswerLabel = (index) => { - return String.fromCharCode(65 + index); - }; + // const getAnswerLabel = (index) => { + // return String.fromCharCode(65 + index); + // }; if (questions.length === 0) { return

Loading...

; } - - - - - const currentQuestion = questions[currentQuestionIndex]; return ( -
- quizjs - -
-

Round {currentRound}

-

{currentQuestion.question}

-
    -
  • -
  • -
  • -
  • -
  • - -
- {showDudeImage && Dude} -

Lives: {Array.from({ length: lives }, (_, index) => '❤️').join(' ')}

-

Score: {score}

- {showHint &&

Hint: {currentQuestion.hint}

} - + {showDudeImage && Dude} + {showDude2Image && Dude2} +

+ Lives: {Array.from({ length: lives }, (_, index) => "❤️").join(" ")} +

+

Score: {score}

+ {showHint &&

Hint: {currentQuestion.hint}

} +
); }; export default QuizComponent; - - - - diff --git a/react-front-end/src/style/quiz.css b/react-front-end/src/style/quiz.css index 2e6fed7988..2802d417d7 100644 --- a/react-front-end/src/style/quiz.css +++ b/react-front-end/src/style/quiz.css @@ -55,4 +55,9 @@ .dude { width: 200px; +} + +.dude2 { + width: 200px; + } \ No newline at end of file From e31d883826319c2e68cf7e7164b1109ea3376308 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Thu, 26 Oct 2023 21:31:00 -0300 Subject: [PATCH 068/184] added dude image to front page --- react-front-end/src/asset/brandon.png | Bin 0 -> 230773 bytes react-front-end/src/components/home.js | 14 +++++++++++++- react-front-end/src/style/App.css | 10 +++++++++- 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 react-front-end/src/asset/brandon.png diff --git a/react-front-end/src/asset/brandon.png b/react-front-end/src/asset/brandon.png new file mode 100644 index 0000000000000000000000000000000000000000..581ae69e5a4c2d0b9981d178eacc46d21a9c4ea3 GIT binary patch literal 230773 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%0DXCRuojAjn?A;TfeSO1qisKuO5 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 - quizjs + + +

+
+ quizjs +
+
+ + brandon +
+
); } export default Home; \ No newline at end of file diff --git a/react-front-end/src/style/App.css b/react-front-end/src/style/App.css index 61f2889761..8e713ad4ae 100644 --- a/react-front-end/src/style/App.css +++ b/react-front-end/src/style/App.css @@ -57,7 +57,7 @@ text-align: right; } -.div-style { +.home { background: linear-gradient(to right, #9c0fbb, #770890); height: 100vh; display: flex; @@ -65,3 +65,11 @@ align-items: center; flex-direction: column; } + +img { + width: 500px +} + +.dude-container { + +} From 55e1c138471c515a4444448f1ee6052a894a6fbf Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Fri, 27 Oct 2023 18:29:28 -0300 Subject: [PATCH 069/184] rounds and instruction page --- react-front-end/src/components/instruction.js | 27 ++++++++++-- react-front-end/src/components/quiz.js | 15 +++++++ react-front-end/src/style/App.css | 3 -- react-front-end/src/style/instruction.css | 41 ++++++++++++++++--- 4 files changed, 74 insertions(+), 12 deletions(-) diff --git a/react-front-end/src/components/instruction.js b/react-front-end/src/components/instruction.js index 4395557db8..2252adcdc8 100644 --- a/react-front-end/src/components/instruction.js +++ b/react-front-end/src/components/instruction.js @@ -18,11 +18,30 @@ function Instruction() { quizjs
-

QuizJS is a series of questions that defy conventional thinking and logic. Test your wit against a series of fun, unexpected, and absurd questions that defy conventional thinking and logic! -You start the game with 5 lives. Every question will give you 5 choices to pick from. You get a question wrong you lose one life and get 0 points. Everytime you get a question right you score 20 points. Get a question right with a hint you get 10 points. Lose all 5 lives you get send back to the home page. -After completing the quiz you enter in a username and you get added to the leaderboard on the home page. If you get the same score as someone else your place on the leaderboard is determined by how long it took you to finish the quiz. So if someone gets a perfect score but you got a perfect score in a faster time you will be higher on the leaderboard. -So what are you waiting for go and get that high score!! +

Welcome to QuizJS

+
+

QuizJS is a series of questions that defy conventional thinking and logic. Test your wit against a series of fun, unexpected, and absurd questions!

+

Starting Lives:

+
  • You begin the game with 5 lives
  • +

    Answering Questions:

    +
  • Each Question provides 4 choices
  • +
  • Correct Answer: +20 points
  • +
  • Correct Answer with Hint: +10 points
  • +
  • Incorrect Answer: Lose 1 life, 0 points
  • +
  • Skip the Question: 0 points, no lives lost
  • +
  • 50:50 eliminates 2 wrong answers: 10 points
  • +
  • Switch the Question
  • +

    Scoring:

    +
  • Accumulate points for each correct answer
  • +
  • Use hints strategically for bonus points
  • +

    Lives:

    +
  • Lose a life for each incorrect answer
  • +
  • Use hints strategically for bonus points
  • +

    After the Quiz enter in a nick name then hit back to home to see your highscore on the leaderboard.

    + + +
    diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 1dc1127d41..97c243acf3 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -34,6 +34,15 @@ const QuizComponent = () => { setStartTime(new Date()); }, []); + const selectRandomQuestion = (round) => { + // Filter questions for the given round + const roundQuestions = questions.filter((question) => question.round === round); + + // Select a random question from the filtered array + const randomIndex = Math.floor(Math.random() * roundQuestions.length); + return roundQuestions[randomIndex]; + }; + const handleAnswerClick = (selectedAnswer) => { const correctOption = questions[currentQuestionIndex].correct_option; // console log for debugging @@ -86,6 +95,12 @@ const QuizComponent = () => { // Move to the next round after every 5 questions setCurrentRound((prevRound) => prevRound + 1); } + // Select a random question for the next round + const nextQuestion = selectRandomQuestion(currentRound + 1); + + // Update the state with the new question + setQuestions((prevQuestions) => [...prevQuestions, nextQuestion]); + if (lives === 0) { // All lives are gone, navigate to the home page navigate("/"); diff --git a/react-front-end/src/style/App.css b/react-front-end/src/style/App.css index 8e713ad4ae..b3af932d98 100644 --- a/react-front-end/src/style/App.css +++ b/react-front-end/src/style/App.css @@ -70,6 +70,3 @@ img { width: 500px } -.dude-container { - -} diff --git a/react-front-end/src/style/instruction.css b/react-front-end/src/style/instruction.css index 819758d45a..e70ddc4f07 100644 --- a/react-front-end/src/style/instruction.css +++ b/react-front-end/src/style/instruction.css @@ -14,20 +14,51 @@ } .instruction-image { - margin-bottom: 100px; + width: 1000px; + } + .instruction-container { width: 600px; /* Adjust the width as needed */ border: 10px solid black; - text-align: center; + /* text-align: center; */ padding: 100px; - margin-top: 20px; /* Adjust the margin as needed */ - height: 300px; + margin-top: 20px; + height: 500px; background-color: yellow; } +.welcome { + position: relative; + bottom: 90px; +} .how-to-play { - font-size: larger; +display: flex; +justify-content: center; + +flex-direction: column; +position: relative; +bottom: 90px; +} + +.div-style { + background: linear-gradient(to right, #9c0fbb, #770890); + height: 100vh; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; +} + +.description { +font-size: large; +} + +.after { + font-size: large; + } + +.bold { font-weight: bold; } \ No newline at end of file From 0a40f413a4bc3677e9df96037d186a0402b9fe65 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Fri, 27 Oct 2023 19:17:09 -0300 Subject: [PATCH 070/184] reverted round changes and cleaned up code --- express-back-end/knexfile.js | 1 - express-back-end/reset-database.js | 5 ----- react-front-end/src/components/Leaderboard.js | 1 - react-front-end/src/components/congrads.js | 8 +------- react-front-end/src/components/instruction.js | 11 +++++++---- react-front-end/src/components/quiz.js | 18 ------------------ react-front-end/src/style/App.css | 3 --- react-front-end/src/style/congrads.css | 5 +---- react-front-end/src/style/instruction.css | 5 +---- react-front-end/src/style/quiz.css | 6 +++--- 10 files changed, 13 insertions(+), 50 deletions(-) diff --git a/express-back-end/knexfile.js b/express-back-end/knexfile.js index b6240f0f08..deefc44261 100644 --- a/express-back-end/knexfile.js +++ b/express-back-end/knexfile.js @@ -10,7 +10,6 @@ module.exports = { password : process.env.DB_PASS, database : 'quiz_app', port : process.env.DB_PORT, - // ssl : process.env.DB_SSL, }, migrations: { directory: './db/migrations', diff --git a/express-back-end/reset-database.js b/express-back-end/reset-database.js index 2eb8968593..dea325b223 100644 --- a/express-back-end/reset-database.js +++ b/express-back-end/reset-database.js @@ -19,11 +19,6 @@ const db = new Pool(dbParams); db.connect(); -// PG connection setup -// const connectionString = process.env.DATABASE_URL || -// `postgresql://${process.env.DB_USER}:${process.env.DB_PASS}@${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_NAME}?sslmode=disable`; -// const client = new Client(); - // Loads the schema files from db/schema const runSchemaFiles = async () => { console.log(chalk.cyan(`-> Loading Schema Files ...`)); diff --git a/react-front-end/src/components/Leaderboard.js b/react-front-end/src/components/Leaderboard.js index 859a417d87..092ae69a54 100644 --- a/react-front-end/src/components/Leaderboard.js +++ b/react-front-end/src/components/Leaderboard.js @@ -10,7 +10,6 @@ function Leaderboard() {
    {score.name} {score.score} - {score.time}
    ))}
    diff --git a/react-front-end/src/components/congrads.js b/react-front-end/src/components/congrads.js index 5404b9986c..3a2e6fd384 100644 --- a/react-front-end/src/components/congrads.js +++ b/react-front-end/src/components/congrads.js @@ -3,7 +3,6 @@ import React, { useEffect, useState } from 'react'; import { useNavigate, useLocation } from 'react-router-dom'; import "../style/congrads.css"; import Quiz from "../asset/THELOGO.png"; - const Congrats = ({ onLeaderboardUpdate, setHighScores }) => { const navigate = useNavigate(); const location = useLocation(); @@ -68,12 +67,7 @@ console.log('Response Body:', responseBody); console.error('Error submitting score:', error); } - }; - // For demonstration purposes, store data locally - - // const leaderboardData = JSON.parse(localStorage.getItem('leaderboard')) || []; - // leaderboardData.push({ name, score: score }); - // localStorage.setItem('leaderboard', JSON.stringify(leaderboardData)); + }; return (

    Congratulations!

    diff --git a/react-front-end/src/components/instruction.js b/react-front-end/src/components/instruction.js index 2252adcdc8..4d97559ba7 100644 --- a/react-front-end/src/components/instruction.js +++ b/react-front-end/src/components/instruction.js @@ -3,8 +3,6 @@ import React from "react"; import InstructionImage from "../asset/instruction.png"; import { useNavigate } from "react-router-dom"; - - function Instruction() { const navigate = useNavigate(); @@ -12,12 +10,18 @@ function Instruction() { function handleBackClick() { navigate("/") } + + function handleStartClick() { + navigate("/quiz"); + } + return (
    quizjs
    +

    Welcome to QuizJS

    QuizJS is a series of questions that defy conventional thinking and logic. Test your wit against a series of fun, unexpected, and absurd questions! @@ -40,12 +44,11 @@ function Instruction() {

  • Use hints strategically for bonus points
  • After the Quiz enter in a nick name then hit back to home to see your highscore on the leaderboard.

    -
    - +
    ); diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 97c243acf3..ee7d2e51ca 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -34,15 +34,6 @@ const QuizComponent = () => { setStartTime(new Date()); }, []); - const selectRandomQuestion = (round) => { - // Filter questions for the given round - const roundQuestions = questions.filter((question) => question.round === round); - - // Select a random question from the filtered array - const randomIndex = Math.floor(Math.random() * roundQuestions.length); - return roundQuestions[randomIndex]; - }; - const handleAnswerClick = (selectedAnswer) => { const correctOption = questions[currentQuestionIndex].correct_option; // console log for debugging @@ -95,12 +86,7 @@ const QuizComponent = () => { // Move to the next round after every 5 questions setCurrentRound((prevRound) => prevRound + 1); } - // Select a random question for the next round - const nextQuestion = selectRandomQuestion(currentRound + 1); - // Update the state with the new question - setQuestions((prevQuestions) => [...prevQuestions, nextQuestion]); - if (lives === 0) { // All lives are gone, navigate to the home page navigate("/"); @@ -128,10 +114,6 @@ const QuizComponent = () => { } }; - // const getAnswerLabel = (index) => { - // return String.fromCharCode(65 + index); - // }; - if (questions.length === 0) { return

    Loading...

    ; } diff --git a/react-front-end/src/style/App.css b/react-front-end/src/style/App.css index b3af932d98..05bece3479 100644 --- a/react-front-end/src/style/App.css +++ b/react-front-end/src/style/App.css @@ -48,17 +48,14 @@ } .player-name { - /* width: 50%; */ text-align: left; } .player-score { - /* width: 40%; */ text-align: right; } .home { - background: linear-gradient(to right, #9c0fbb, #770890); height: 100vh; display: flex; justify-content: center; diff --git a/react-front-end/src/style/congrads.css b/react-front-end/src/style/congrads.css index c58bd01a61..2ae0f2fc3c 100644 --- a/react-front-end/src/style/congrads.css +++ b/react-front-end/src/style/congrads.css @@ -25,26 +25,23 @@ font-size: 100px; } .myForm input { - /* Style for form inputs (adjust as needed) */ width: 100%; padding: 10px; margin-bottom: 10px; } .myForm button { - /* Style for the submit button */ width: 100%; padding: 10px; font-size: 16px; font-weight: bold; - background-color: yellow; /* Add your desired background color */ + background-color: yellow; color: black; border: none; border-radius: 4px; } .myForm button:hover { - /* Style for button on hover (optional) */ background-color: blue; } diff --git a/react-front-end/src/style/instruction.css b/react-front-end/src/style/instruction.css index e70ddc4f07..2c3dc960b3 100644 --- a/react-front-end/src/style/instruction.css +++ b/react-front-end/src/style/instruction.css @@ -15,14 +15,11 @@ .instruction-image { width: 1000px; - } - .instruction-container { - width: 600px; /* Adjust the width as needed */ + width: 600px; border: 10px solid black; - /* text-align: center; */ padding: 100px; margin-top: 20px; height: 500px; diff --git a/react-front-end/src/style/quiz.css b/react-front-end/src/style/quiz.css index 2802d417d7..6579930426 100644 --- a/react-front-end/src/style/quiz.css +++ b/react-front-end/src/style/quiz.css @@ -8,12 +8,12 @@ } .game { - width: 500px; /* Set the width as needed */ - height: 750px; /* Set the height as needed */ + width: 500px; + height: 750px; background-color: white; border: 2px solid black; padding: 5px; - box-sizing: border-box; /* Include padding and border in the total width and height */ + box-sizing: border-box; } .logo { From 7f4f65931cba933dfa8d858d822f772932cf2f61 Mon Sep 17 00:00:00 2001 From: Hossein Date: Sat, 28 Oct 2023 11:41:05 -0700 Subject: [PATCH 071/184] skip,fiftyfifty,switch --- react-front-end/src/components/instruction.js | 6 +- react-front-end/src/components/quiz.js | 152 ++++++++++++------ react-front-end/src/style/quiz.css | 12 ++ 3 files changed, 116 insertions(+), 54 deletions(-) diff --git a/react-front-end/src/components/instruction.js b/react-front-end/src/components/instruction.js index 4395557db8..088ed4aaf4 100644 --- a/react-front-end/src/components/instruction.js +++ b/react-front-end/src/components/instruction.js @@ -9,6 +9,10 @@ function Instruction() { const navigate = useNavigate(); + function handleStartClick() { + navigate("/quiz"); + } + function handleBackClick() { navigate("/") } @@ -26,7 +30,7 @@ So what are you waiting for go and get that high score!!
    - +
    ); diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 8bcbf3f468..294aa042a9 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -15,34 +15,66 @@ const QuizComponent = () => { const [score, setScore] = useState(0); const [hintUsed, setHintUsed] = useState(false); const [showDudeImage, setShowDudeImage] = useState(false); + const [options, setOptions] = useState([]) + const optionLabel = { + 0: "A", + 1: "B", + 2: "C", + 3: "D" + } + + useEffect(() => { + // Fetch questions + fetch('http://localhost:8080/api/questions') + .then(response => response.json()) + .then(data => { + console.log(data.questions) + setOptions([data.questions[currentQuestionIndex].optiona, data.questions[currentQuestionIndex].optionb, data.questions[currentQuestionIndex].optionc, data.questions[currentQuestionIndex].optiond]) + setQuestions(data.questions); + }) + .catch(error => console.error('Error fetching questions:', error)); + }, []); + + useEffect(() => { + if (questions.length > 0) { + setOptions([questions[currentQuestionIndex].optiona, questions[currentQuestionIndex].optionb, questions[currentQuestionIndex].optionc, questions[currentQuestionIndex].optiond]) + } + }, [currentQuestionIndex]) -useEffect(() => { - // Fetch questions - fetch('http://localhost:8080/api/questions') - .then(response => response.json()) - .then(data => { - setQuestions(data.questions); - }) - .catch(error => console.error('Error fetching questions:', error)); -}, []); + const handleSkipClick = () => { + setCurrentQuestionIndex(prevIndex => prevIndex + 1) + if (currentQuestionIndex % 5 === 4) { + // Move to the next round after every 5 questions + setCurrentRound((prevRound) => prevRound + 1); + } + } + const handleFiftyClick = () => { } + + const handleSwitchClick = () => { + setCurrentQuestionIndex(prevIndex => prevIndex + 1) + if (currentQuestionIndex % 5 === 4) { + // Move to the next round after every 5 questions + setCurrentRound((prevRound) => prevRound + 1); + } + } const handleAnswerClick = (selectedAnswer) => { const correctOption = questions[currentQuestionIndex].correct_option; // console log for debugging -console.log('correct option:', correctOption); + console.log('correct option:', correctOption); - // Map the correct option to the corresponding index (A->0, B->1, C->2, D->3) - const correctIndex = correctOption.charCodeAt(0) - 'A'.charCodeAt(0); - // console log for debugging -console.log('correct index:', correctIndex); + // Map the correct option to the corresponding index (A->0, B->1, C->2, D->3) + const correctIndex = correctOption.charCodeAt(0) - 'A'.charCodeAt(0); + // console log for debugging + console.log('correct index:', correctIndex); - if (selectedAnswer === correctIndex) { - // Handle correct answer logic - console.log('Correct answer!'); - setScore((prevScore) => prevScore + 20); - setShowDudeImage(true); + if (selectedAnswer === correctIndex) { + // Handle correct answer logic + console.log('Correct answer!'); + setScore((prevScore) => prevScore + 20); + setShowDudeImage(true); // Set a timeout to hide the dude image and move to the next question setTimeout(() => { @@ -100,46 +132,60 @@ console.log('correct index:', correctIndex); - + const currentQuestion = questions[currentQuestionIndex]; return (
    quizjs -
    -

    Round {currentRound}

    -

    {currentQuestion.question}

    -
      -
    • - -
    • -
    • - -
    • -
    • - -
    • -
    • - -
    • - - -
    - {showDudeImage && Dude} -

    Lives: {Array.from({ length: lives }, (_, index) => '❤️').join(' ')}

    -

    Score: {score}

    - {showHint &&

    Hint: {currentQuestion.hint}

    } - -
    + {currentQuestionIndex > questions.length - 1 ? No More questions : + +
    +

    Round {currentRound}

    +

    {currentQuestion.question}

    +
      + {options.map((option, index) => { + return ( +
    • + +
    • ) + })} + {/*
    • + +
    • +
    • + +
    • +
    • + +
    • +
    • + +
    • */} + + +
    + {showDudeImage && Dude} +

    Lives: {Array.from({ length: lives }, (_, index) => '❤️').join(' ')}

    +

    Score: {score}

    + {showHint &&

    Hint: {currentQuestion.hint}

    } + + + + +
    + }
    ); }; diff --git a/react-front-end/src/style/quiz.css b/react-front-end/src/style/quiz.css index 2e6fed7988..1ba282120a 100644 --- a/react-front-end/src/style/quiz.css +++ b/react-front-end/src/style/quiz.css @@ -52,6 +52,18 @@ font-size: 30px; } +.s-button { + font-size: 30px; +} + +.fifty-fifty-button { + font-size: 30px; +} + +.switch-button { + font-size: 30px; +} + .dude { width: 200px; From 59e3ad45ba2f47594f906de73e3752db1c1a7587 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Sat, 28 Oct 2023 17:24:30 -0300 Subject: [PATCH 072/184] new commit --- react-front-end/src/style/instruction.css | 1 + 1 file changed, 1 insertion(+) diff --git a/react-front-end/src/style/instruction.css b/react-front-end/src/style/instruction.css index 2c3dc960b3..a0b45d3f5c 100644 --- a/react-front-end/src/style/instruction.css +++ b/react-front-end/src/style/instruction.css @@ -58,4 +58,5 @@ font-size: large; .bold { font-weight: bold; + font-size: large; } \ No newline at end of file From d141ca2fc1e028114eb1c66aae14a1b6829b3980 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Sun, 29 Oct 2023 19:19:41 -0300 Subject: [PATCH 073/184] working on round issues and debugging --- express-back-end/server.js | 13 ++++++++++--- react-front-end/src/components/quiz.js | 4 +++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/express-back-end/server.js b/express-back-end/server.js index 379bb8a1f7..9ce4d38949 100644 --- a/express-back-end/server.js +++ b/express-back-end/server.js @@ -24,15 +24,22 @@ app.get('/api/data', (req, res) => res.json({ })); // questions -app.get('/api/questions', (req, res) => { +app.get('/api/questions/:round', (req, res) => { + console.log('req.param.round', req.params.round) database .select('*') .from('question') + .where('roundnumber', req.params.round) .orderByRaw('RANDOM()') - .limit(15) + .limit(5) .then(rows => { // Process the rows - console.log(rows); + if (!rows.length) { + return res.statusMessage(404).json({ + error: 'No questions for the given round' + }) + } + // console.log(rows); res.json({ questions: rows }); }) .catch(error => { diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index ee7d2e51ca..bcc9669c72 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -20,8 +20,9 @@ const QuizComponent = () => { const [startTime, setStartTime] = useState(null); useEffect(() => { + // Fetch questions - fetch("http://localhost:8080/api/questions") + fetch(`http://localhost:8080/api/questions/${currentRound}`) .then((response) => response.json()) .then((data) => { setQuestions(data.questions); @@ -35,6 +36,7 @@ const QuizComponent = () => { }, []); const handleAnswerClick = (selectedAnswer) => { + console.log('currentRound', currentRound) const correctOption = questions[currentQuestionIndex].correct_option; // console log for debugging console.log("correct option:", correctOption); From 427148ae81d8bd03366974ae64b124bb1dc9bf4b Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Sun, 29 Oct 2023 20:08:52 -0300 Subject: [PATCH 074/184] got rounds working again --- express-back-end/server.js | 2 +- react-front-end/src/components/quiz.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/express-back-end/server.js b/express-back-end/server.js index 9ce4d38949..59c2fb64f7 100644 --- a/express-back-end/server.js +++ b/express-back-end/server.js @@ -31,7 +31,7 @@ app.get('/api/questions/:round', (req, res) => { .from('question') .where('roundnumber', req.params.round) .orderByRaw('RANDOM()') - .limit(5) + .limit(15) .then(rows => { // Process the rows if (!rows.length) { diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index bcc9669c72..13fd6e91ed 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -26,9 +26,10 @@ const QuizComponent = () => { .then((response) => response.json()) .then((data) => { setQuestions(data.questions); + setCurrentQuestionIndex(0); }) .catch((error) => console.error("Error fetching questions:", error)); - }, []); + }, [currentRound]); useEffect(() => { // record start time From be572416c100b051c9ab78f3bc2bcc4a79fa6829 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Sun, 29 Oct 2023 20:18:38 -0300 Subject: [PATCH 075/184] fixed uncaught promise error --- react-front-end/src/components/quiz.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 13fd6e91ed..e26c5d288e 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -23,10 +23,14 @@ const QuizComponent = () => { // Fetch questions fetch(`http://localhost:8080/api/questions/${currentRound}`) - .then((response) => response.json()) + .then((response) => { + if (!response.ok) { + throw new Error(`HTTP error! Status: ${response.status}`); + } + return response.json(); + }) .then((data) => { setQuestions(data.questions); - setCurrentQuestionIndex(0); }) .catch((error) => console.error("Error fetching questions:", error)); }, [currentRound]); From 86cd5e0aaffad45000921aa8269a11b5e7172a04 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Sun, 29 Oct 2023 20:25:40 -0300 Subject: [PATCH 076/184] removed hint emoji --- react-front-end/src/components/quiz.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index e26c5d288e..837d40da4c 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -164,7 +164,7 @@ const QuizComponent = () => {

    Score: {score}

    {showHint &&

    Hint: {currentQuestion.hint}

    } From fd81caeb95e29a4b4793c152317a8b5c718a2094 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Sun, 29 Oct 2023 20:47:43 -0300 Subject: [PATCH 077/184] fixing hidden errors --- react-front-end/src/components/quiz.js | 41 ++++++++++---------------- 1 file changed, 15 insertions(+), 26 deletions(-) diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 837d40da4c..3b3730c624 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -74,12 +74,16 @@ const QuizComponent = () => { setShowHint(true); // Show the hint }; - const handleNextClick = () => { + const handleNextClick = async () => { if (currentQuestionIndex === questions.length - 1) { // Quiz completed console.log("Quiz completed! Remaining lives:", lives); - submitRemainingLives(); - navigate("/congrads", { state: { score, lives, startTime } }); // pass the score as state + + try { + await navigate("/congrads", { state: { score, lives, startTime } }); // pass the score as state + } catch (error) { + console.error("Error navigating to /congrads:", error); + } } else { if (hintUsed && questions[currentQuestionIndex].correct_option) { // Award points only if the hint was used and the answer is correct @@ -88,38 +92,23 @@ const QuizComponent = () => { setCurrentQuestionIndex((prevIndex) => prevIndex + 1); setShowHint(false); // Reset the hint display when moving to the next question setHintUsed(false); - + if (currentQuestionIndex % 5 === 4) { // Move to the next round after every 5 questions setCurrentRound((prevRound) => prevRound + 1); } - + if (lives === 0) { // All lives are gone, navigate to the home page - navigate("/"); - } - } - }; - - const submitRemainingLives = async () => { - try { - const response = await fetch("/api/high-scores", { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ score, lives }), - }); - - if (response.ok) { - console.log("Remaining lives submitted successfully"); - } else { - console.error("Failed to submit remaining lives"); + try { + await navigate("/"); + } catch (error) { + console.error("Error navigating to /:", error); + } } - } catch (error) { - console.error("Error submitting remaining lives:", error); } }; + if (questions.length === 0) { return

    Loading...

    ; From 0ffb62e31e65232b9b82f15e1031248beb68cdf0 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Sun, 29 Oct 2023 20:54:00 -0300 Subject: [PATCH 078/184] changed wording for instruction page --- react-front-end/src/components/instruction.js | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/react-front-end/src/components/instruction.js b/react-front-end/src/components/instruction.js index 4d97559ba7..75719dac74 100644 --- a/react-front-end/src/components/instruction.js +++ b/react-front-end/src/components/instruction.js @@ -34,19 +34,16 @@ function Instruction() {
  • Correct Answer with Hint: +10 points
  • Incorrect Answer: Lose 1 life, 0 points
  • Skip the Question: 0 points, no lives lost
  • -
  • 50:50 eliminates 2 wrong answers: 10 points
  • -
  • Switch the Question
  • -

    Scoring:

    -
  • Accumulate points for each correct answer
  • -
  • Use hints strategically for bonus points
  • +
  • 50:50: eliminates 2 wrong answers, 10 points
  • +
  • Swap: no lives lost or points just your Question get switched
  • Lives:

  • Lose a life for each incorrect answer
  • -
  • Use hints strategically for bonus points
  • +
  • Use hints, skip, 50:50, and swap when stuck
  • After the Quiz enter in a nick name then hit back to home to see your highscore on the leaderboard.

    -
    +
    From 35288ab36a7a11663fdbdb460baf51a31e9eef45 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Sun, 29 Oct 2023 21:04:53 -0300 Subject: [PATCH 079/184] added ul emelments to instruction page --- react-front-end/src/components/instruction.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/react-front-end/src/components/instruction.js b/react-front-end/src/components/instruction.js index 75719dac74..271b4efd07 100644 --- a/react-front-end/src/components/instruction.js +++ b/react-front-end/src/components/instruction.js @@ -27,8 +27,11 @@ function Instruction() {

    QuizJS is a series of questions that defy conventional thinking and logic. Test your wit against a series of fun, unexpected, and absurd questions!

    Starting Lives:

    +
    • You begin the game with 5 lives
    • +

    Answering Questions:

    +
    • Each Question provides 4 choices
    • Correct Answer: +20 points
    • Correct Answer with Hint: +10 points
    • @@ -36,9 +39,12 @@ function Instruction() {
    • Skip the Question: 0 points, no lives lost
    • 50:50: eliminates 2 wrong answers, 10 points
    • Swap: no lives lost or points just your Question get switched
    • +

    Lives:

    +
    • Lose a life for each incorrect answer
    • Use hints, skip, 50:50, and swap when stuck
    • +

    After the Quiz enter in a nick name then hit back to home to see your highscore on the leaderboard.

    From 4fdd00b4270844e887eb3aae7de2b8180e114556 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Sun, 29 Oct 2023 22:30:45 -0300 Subject: [PATCH 080/184] working on validations for nicknames --- express-back-end/server.js | 42 ++++++ react-front-end/src/components/congrads.js | 160 ++++++++++++--------- 2 files changed, 138 insertions(+), 64 deletions(-) diff --git a/express-back-end/server.js b/express-back-end/server.js index 59c2fb64f7..390dc1ac38 100644 --- a/express-back-end/server.js +++ b/express-back-end/server.js @@ -77,6 +77,48 @@ app.get('/api/high-scores', (req, res) => { } }); + // Validations for nickname + app.get('/validate-nickname', (req, res) => { + const { nickname } = req.query; + + database + .select('nickname') + .from('game') + .where('nickname', nickname) + .then(rows => { + if (rows.length > 0) { + return res.status(400).json({ error: 'Nickname already exists' }); + } + res.json({ success: true }); + }) + .catch(error => { + console.error(error); + res.status(500).json({ error: 'Internal Server Error' }); + }); + }); + + + app.post('/validate-nickname', (req, res) => { + const { nickname } = req.body; + console.log('req.body:', req.body); + + + // Check if the nickname is empty or contains only whitespace + if (nickname || " ") { + return res.status(400).json({ error: 'Nickname cannot be empty or contain only whitespace' }); + } + + if (nickname.length > 20) { + return res.status(400).json({ error: 'Nickname is too long' }); + } + + // You can add more validation checks here based on your requirements + + // If the nickname passes all validations, respond with success + res.json({ success: true }); + }); + + app.listen(PORT, () => { console.log(`Express seems to be listening on port ${PORT} 👍`); }); diff --git a/react-front-end/src/components/congrads.js b/react-front-end/src/components/congrads.js index 3a2e6fd384..0b09ea76aa 100644 --- a/react-front-end/src/components/congrads.js +++ b/react-front-end/src/components/congrads.js @@ -1,73 +1,103 @@ -// congrads.js import React, { useEffect, useState } from 'react'; import { useNavigate, useLocation } from 'react-router-dom'; import "../style/congrads.css"; import Quiz from "../asset/THELOGO.png"; -const Congrats = ({ onLeaderboardUpdate, setHighScores }) => { + +const Congrats = ({ onLeaderboardUpdate }) => { const navigate = useNavigate(); const location = useLocation(); -const [completionTime, setCompletionTime] = useState(null); - -useEffect(() => { - if (location.state) { - const startTime = location.state.startTime; - const endTime = new Date(); - const timeDifference = endTime - startTime; - setCompletionTime(timeDifference); - } -}, [location.state]); + const [completionTime, setCompletionTime] = useState(null); - const handleBackToHome = () => { - navigate('/'); - }; + useEffect(() => { + if (location.state) { + const startTime = location.state.startTime; + const endTime = new Date(); + const timeDifference = endTime - startTime; + setCompletionTime(timeDifference); + } + }, [location.state]); - // State variables for form fields - const [submissionMessage, setSubmissionMessage] = useState(''); - const [name, setName] = useState(''); + // State variables for form fields + const [submissionMessage, setSubmissionMessage] = useState(''); + const [name, setName] = useState(''); + const [nicknameError, setNicknameError] = useState(''); - // Access the score from the location state + // Access the score from the location state const score = location.state && location.state.score; + +// Function to validate the nickname +const validateNickname = async (nickname) => { + try { + const response = await fetch('/validate-nickname', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ nickname }), + }); + + // Process the server response + const result = await response.json(); + return result; + } catch (error) { + console.error('Error validating nickname:', error); + return { success: false, error: 'Failed to validate nickname' }; + } +}; + + // Function to handle form submission + const handleSubmit = async (event) => { + event.preventDefault(); + + // Client-side validation for nickname + if (name.length < 3 || name.length > 20) { + setNicknameError('Nickname must be between 3 and 20 characters'); + return; + } else { + setNicknameError(''); + } + +// Validate the nickname on the server +const nicknameValidation = await validateNickname(); + + // Check server-side validation result + if (!nicknameValidation.success) { + // Handle validation error, show error message to the user + console.error('Nickname validation failed:', nicknameValidation.error); + // Update state or show error message to the user + setNicknameError('Nickname validation failed'); + return; + } - // Function to handle form submission - const handleSubmit = async (event) => { - event.preventDefault(); - // Perform actions with form data (e.g., send to server) - console.log('Submitted:', { name, score }); - - // Send data to the server - try { - const response = await fetch('/api/high-scores', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ name, score }), - }); - - // the status and status text -console.log('Response Status:', response.status); -console.log('Response Status Text:', response.statusText); - -// convert the response body to JSON -const responseBody = await response.json(); -console.log('Response Body:', responseBody); - - if (response.ok) { - setSubmissionMessage('Your score has been submitted successfully'); - console.log('Score submitted successfully'); - // Optionally, you can update the state or perform other actions here - onLeaderboardUpdate(); - - } else { - setSubmissionMessage('Failed to submit score'); - console.error('Failed to submit score'); - } - } catch (error) { - setSubmissionMessage('Error submitting score'); - console.error('Error submitting score:', error); + // Perform actions with form data (e.g., send to server) + console.log('Submitted:', { name, score }); + + // Send data to the server + try { + const response = await fetch('/api/high-scores', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ name, score }), + }); + + // Handling the server response + if (response.ok) { + setSubmissionMessage('Your score has been submitted successfully'); + console.log('Score submitted successfully'); + // Optionally, you can update the state or perform other actions here + onLeaderboardUpdate(); + } else { + setSubmissionMessage('Failed to submit score'); + console.error('Failed to submit score'); } + } catch (error) { + setSubmissionMessage('Error submitting score'); + console.error('Error submitting score:', error); + } + }; - }; return (

    Congratulations!

    @@ -79,20 +109,21 @@ console.log('Response Body:', responseBody);

    Time taken to complete the quiz: {formatTime(completionTime)}

    )} - - {submissionMessage &&

    {submissionMessage}

    } - -
    ); }; @@ -105,3 +136,4 @@ const formatTime = (milliseconds) => { }; export default Congrats; + From 80adb085f11a0e822ee39694f7d04778a2595ba6 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Sun, 29 Oct 2023 23:18:03 -0300 Subject: [PATCH 081/184] can not add blank nicknames and ones to small or large --- express-back-end/package-lock.json | 13 ++++++++++++- express-back-end/package.json | 3 ++- express-back-end/server.js | 2 +- react-front-end/src/components/congrads.js | 3 ++- 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/express-back-end/package-lock.json b/express-back-end/package-lock.json index d366b346c8..cfdad48536 100644 --- a/express-back-end/package-lock.json +++ b/express-back-end/package-lock.json @@ -17,7 +17,8 @@ "fs": "^0.0.1-security", "knex": "^3.0.1", "nodemon": "^1.18.7", - "pg": "^8.11.3" + "pg": "^8.11.3", + "whatwg-fetch": "^3.6.19" }, "devDependencies": { "@babel/preset-react": "^7.22.15" @@ -4168,6 +4169,11 @@ "node": ">= 0.8" } }, + "node_modules/whatwg-fetch": { + "version": "3.6.19", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz", + "integrity": "sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==" + }, "node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -7330,6 +7336,11 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" }, + "whatwg-fetch": { + "version": "3.6.19", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz", + "integrity": "sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==" + }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", diff --git a/express-back-end/package.json b/express-back-end/package.json index a50039f65e..9b0b3eb316 100644 --- a/express-back-end/package.json +++ b/express-back-end/package.json @@ -19,7 +19,8 @@ "fs": "^0.0.1-security", "knex": "^3.0.1", "nodemon": "^1.18.7", - "pg": "^8.11.3" + "pg": "^8.11.3", + "whatwg-fetch": "^3.6.19" }, "devDependencies": { "@babel/preset-react": "^7.22.15" diff --git a/express-back-end/server.js b/express-back-end/server.js index 390dc1ac38..3a68d22bfe 100644 --- a/express-back-end/server.js +++ b/express-back-end/server.js @@ -104,7 +104,7 @@ app.get('/api/high-scores', (req, res) => { // Check if the nickname is empty or contains only whitespace - if (nickname || " ") { + if (!nickname || /^\s*$/.test(nickname)) { return res.status(400).json({ error: 'Nickname cannot be empty or contain only whitespace' }); } diff --git a/react-front-end/src/components/congrads.js b/react-front-end/src/components/congrads.js index 0b09ea76aa..1c41b117b0 100644 --- a/react-front-end/src/components/congrads.js +++ b/react-front-end/src/components/congrads.js @@ -2,6 +2,7 @@ import React, { useEffect, useState } from 'react'; import { useNavigate, useLocation } from 'react-router-dom'; import "../style/congrads.css"; import Quiz from "../asset/THELOGO.png"; +import 'whatwg-fetch'; const Congrats = ({ onLeaderboardUpdate }) => { const navigate = useNavigate(); @@ -58,7 +59,7 @@ const validateNickname = async (nickname) => { } // Validate the nickname on the server -const nicknameValidation = await validateNickname(); +const nicknameValidation = await validateNickname(name); // Check server-side validation result if (!nicknameValidation.success) { From 412a7b37761fc16925199f795dc4e0332c6807c9 Mon Sep 17 00:00:00 2001 From: Hossein Date: Mon, 30 Oct 2023 09:43:00 -0700 Subject: [PATCH 082/184] handle 50/50 functionality --- react-front-end/src/components/quiz.js | 54 +++++++++++--------------- 1 file changed, 23 insertions(+), 31 deletions(-) diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 294aa042a9..f5dbb674d9 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -15,7 +15,9 @@ const QuizComponent = () => { const [score, setScore] = useState(0); const [hintUsed, setHintUsed] = useState(false); const [showDudeImage, setShowDudeImage] = useState(false); - const [options, setOptions] = useState([]) + const [options, setOptions] = useState([]); + const [fiftyOptions, setFiftyOptions] = useState([]); + const [clickFifty, setClickFifty] = useState(false); const optionLabel = { 0: "A", @@ -39,6 +41,7 @@ const QuizComponent = () => { useEffect(() => { if (questions.length > 0) { setOptions([questions[currentQuestionIndex].optiona, questions[currentQuestionIndex].optionb, questions[currentQuestionIndex].optionc, questions[currentQuestionIndex].optiond]) + setClickFifty(false); } }, [currentQuestionIndex]) @@ -50,14 +53,24 @@ const QuizComponent = () => { } } - const handleFiftyClick = () => { } - + const handleFiftyClick = () => { + const question = questions[currentQuestionIndex] + const correctIndex = Object.keys(optionLabel) + .find(key => optionLabel[key] === question.correct_option); + const newOption = [] + newOption.push(options[correctIndex]) + let random = Math.floor(Math.random() * 4) + while (random === +correctIndex) { + random = Math.floor(Math.random() * 4) + } + + newOption.push(options[random]) + setFiftyOptions(newOption) + setClickFifty(true); + } + const handleSwitchClick = () => { setCurrentQuestionIndex(prevIndex => prevIndex + 1) - if (currentQuestionIndex % 5 === 4) { - // Move to the next round after every 5 questions - setCurrentRound((prevRound) => prevRound + 1); - } } const handleAnswerClick = (selectedAnswer) => { @@ -149,31 +162,10 @@ const QuizComponent = () => { return (
  • ) })} - {/*
  • - -
  • -
  • - -
  • -
  • - -
  • -
  • - -
  • */} - {showDudeImage && Dude} @@ -182,8 +174,8 @@ const QuizComponent = () => { {showHint &&

    Hint: {currentQuestion.hint}

    } - - + + } From 452d2fb47a2b749bf718d909b40a0daca3b5f162 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Mon, 30 Oct 2023 15:17:02 -0300 Subject: [PATCH 083/184] Validations for nickname --- express-back-end/server.js | 13 +++++++++---- react-front-end/src/components/congrads.js | 20 +++++++++++++++++++- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/express-back-end/server.js b/express-back-end/server.js index 3a68d22bfe..80d7201403 100644 --- a/express-back-end/server.js +++ b/express-back-end/server.js @@ -102,18 +102,23 @@ app.get('/api/high-scores', (req, res) => { const { nickname } = req.body; console.log('req.body:', req.body); + // Trim leading and trailing whitespace + const trimmedNickname = nickname.trim(); // Check if the nickname is empty or contains only whitespace - if (!nickname || /^\s*$/.test(nickname)) { + if (!trimmedNickname || /^\s*$/.test(trimmedNickname)) { return res.status(400).json({ error: 'Nickname cannot be empty or contain only whitespace' }); } - if (nickname.length > 20) { + // Check if the nickname contains only numbers and characters A-Z (case-insensitive) + if (!/^[0-9A-Z]+$/i.test(trimmedNickname)) { + return res.status(400).json({ error: 'Nickname must contain only numbers and characters A-Z' }); + } + + if (trimmedNickname.length > 20) { return res.status(400).json({ error: 'Nickname is too long' }); } - // You can add more validation checks here based on your requirements - // If the nickname passes all validations, respond with success res.json({ success: true }); }); diff --git a/react-front-end/src/components/congrads.js b/react-front-end/src/components/congrads.js index 1c41b117b0..965a42020b 100644 --- a/react-front-end/src/components/congrads.js +++ b/react-front-end/src/components/congrads.js @@ -50,14 +50,31 @@ const validateNickname = async (nickname) => { const handleSubmit = async (event) => { event.preventDefault(); + // Trim leading and trailing whitespace + const trimmedName = name.trim(); + // Client-side validation for nickname - if (name.length < 3 || name.length > 20) { + if (trimmedName.length < 3 || trimmedName.length > 20) { setNicknameError('Nickname must be between 3 and 20 characters'); return; } else { setNicknameError(''); } + if (!/^[0-9A-Z]+$/i.test(trimmedName)) { + setNicknameError('Nickname must contain only numbers and characters A-Z'); + return + } else { + setNicknameError(''); + } + +if (!name || /^\s*$/.test(trimmedName)) { + setNicknameError('Nickname cannot be empty or contain only whitespace'); + return + } else { + setNicknameError(''); + } + // Validate the nickname on the server const nicknameValidation = await validateNickname(name); @@ -89,6 +106,7 @@ const nicknameValidation = await validateNickname(name); console.log('Score submitted successfully'); // Optionally, you can update the state or perform other actions here onLeaderboardUpdate(); + navigate('/'); } else { setSubmissionMessage('Failed to submit score'); console.error('Failed to submit score'); From 0823cafd2b974eaadfa2c3d620bd6eab868db427 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Mon, 30 Oct 2023 16:04:22 -0300 Subject: [PATCH 084/184] fixed warning in console, delete hint emjoi and settime out for dude --- react-front-end/src/components/congrads.js | 1 - react-front-end/src/components/quiz.js | 33 ++++++++++------------ 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/react-front-end/src/components/congrads.js b/react-front-end/src/components/congrads.js index 965a42020b..97e32712ba 100644 --- a/react-front-end/src/components/congrads.js +++ b/react-front-end/src/components/congrads.js @@ -142,7 +142,6 @@ const nicknameValidation = await validateNickname(name); - ); }; diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 8809676eae..c2bd7454f2 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -118,10 +118,10 @@ const QuizComponent = () => { setShowDudeImage(true); setShowDude2Image(false); - setTimeout(() => { - setShowDudeImage(false); + // setTimeout(() => { + // setShowDudeImage(false); handleNextClick(); - }, 1500); + // }, 1500); } else { console.log("Wrong answer!"); @@ -130,10 +130,10 @@ const QuizComponent = () => { setShowDudeImage(false); setShowDude2Image(true); setScore((prevScore) => prevScore - 10); - setTimeout(() => { - setShowDude2Image(false); + // setTimeout(() => { + // setShowDude2Image(false); handleNextClick(); - }, 1500); + // }, 1500); } }; @@ -196,27 +196,24 @@ const QuizComponent = () => {

    Round {currentRound}

    {currentQuestion.question}

      - {options.map((option, index) => { - return ( -
    • - -
    • ) - })} - -
    + {options.map((option, index) => ( +
  • + +
  • + ))} + {showDudeImage && Dude} {showDude2Image && Dude2}

    Lives: {Array.from({ length: lives }, (_, index) => '❤️').join(' ')}

    Score: {score}

    {showHint &&

    Hint: {currentQuestion.hint}

    } - + - {/* } */} ); }; From 5d1df754295665fdcd7feaa27e781d1fef0d0e37 Mon Sep 17 00:00:00 2001 From: nick stilwell Date: Mon, 30 Oct 2023 20:32:35 +0000 Subject: [PATCH 085/184] add sound functionality --- react-front-end/src/asset/sounds/Select_008.ogg | Bin 0 -> 6339 bytes react-front-end/src/asset/sounds/Switch_004.ogg | Bin 0 -> 8965 bytes react-front-end/src/components/SoundHelper.js | 13 +++++++++++++ react-front-end/src/components/home.js | 13 ++++++++++--- 4 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 react-front-end/src/asset/sounds/Select_008.ogg create mode 100644 react-front-end/src/asset/sounds/Switch_004.ogg create mode 100644 react-front-end/src/components/SoundHelper.js diff --git a/react-front-end/src/asset/sounds/Select_008.ogg b/react-front-end/src/asset/sounds/Select_008.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8e99411d668be407d93d7498818baf95766c3935 GIT binary patch literal 6339 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 { + new Audio(sound).play() +} + +const sounds = { + click1: Switch_004, + hover1: Select_008 +} + +export { handleAudio, sounds }; \ No newline at end of file diff --git a/react-front-end/src/components/home.js b/react-front-end/src/components/home.js index d3acdc748e..67bd62f172 100644 --- a/react-front-end/src/components/home.js +++ b/react-front-end/src/components/home.js @@ -5,6 +5,7 @@ import { useNavigate } from "react-router-dom"; import HighScores from "./HighScores"; import { useState, useEffect } from "react"; import Brandon from "../asset/brandon.png"; +import { handleAudio, sounds } from "./SoundHelper"; function Home() { const [highScores, setHighScores] = useState([]); @@ -24,10 +25,12 @@ function Home() { function handleStartClick() { navigate("/quiz"); + handleAudio(sounds.click1) } function handleInstructionsClick() { navigate("instructions") - } + handleAudio(sounds.click1) + } return ( @@ -39,10 +42,14 @@ function Home() { quizjs
    - - From 82ac4b76b20645d57719dbb68449e50b068fd1c0 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Mon, 30 Oct 2023 20:35:13 -0300 Subject: [PATCH 086/184] added thinking dude to quiz --- .DS_Store | Bin 6148 -> 6148 bytes react-front-end/src/asset/thinking-dude.png | Bin 0 -> 110002 bytes react-front-end/src/components/quiz.js | 29 ++++++++++++++------ react-front-end/src/style/quiz.css | 5 ++++ 4 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 react-front-end/src/asset/thinking-dude.png diff --git a/.DS_Store b/.DS_Store index 137cb6dca61f8d1b0d261d54a994c61e45c8a7d2..dfdf55e265fd76a6c128469b7ea468964c454608 100644 GIT binary patch delta 21 ccmZoMXffEJ!^&Y~V5Fm9WN5P4g!O_D06zBxmjD0& delta 21 ccmZoMXffEJ!^&Z5X{w`OWM;bAg!O_D06)|PtN;K2 diff --git a/react-front-end/src/asset/thinking-dude.png b/react-front-end/src/asset/thinking-dude.png new file mode 100644 index 0000000000000000000000000000000000000000..b4288450d16ba40816dbd8cef99713434f8c152d GIT binary patch literal 110002 zcmbTd1zeP0*Def04Jk2%lrV&J4h>2S9a1AA-Q6vSfHcxwQZjUhG^2EbC?N`?h@c>X zgb1kL=KnnJbI$qB`=viXV&8l3wf5R;UF%xwPSDp=CnsSf!NI{H*VI57;^07#;Ijfs z2!3-}MrjTHBlgxX^~1pt;<)<64X(T$h=W7e>SBD)|DLXnteuyKkd3{Ut%Fdohc_6F zgCl=C*xSa=&B33|*1^feQvv?HcM#6zVy^%tOUi&)DvPo1Kh3 z{Prz2`CwTvfro>?4O_5>yQiOQumb#_d1b-(SHBj9v;8x~-%SCobhRMcJzae^6)#^0 zHW?vNK|2u5(8#?%T1^C)Is0M;r10@pn*wU!9wvsED8l!dO&N_UhT%GNIJ#YX2@%cNxF5r6Exc~p2 z2i$@GA>n_`q68%J1Bd7L?;E0QA+99yzd!LWH(~E(2Nd`}1hTP{5w!)o z5|oy>~mb2-`|#6;{74uaBRk|KiQb_hE` z8*w{FK~Wim0|FuGASNLq{=e_*$|$Z5RZLo1N?OX+R!|C92QUiBt9hiv1;r&D5R%f8 zHlj8nj{nos|LE{vY8U<=;{12#^Usx*)o{5wuaJN1+{nS_KiX&e=N8M_*j;%i1-RYS zwREtD|NGZ2|G(|`U(*ITJAg_5Z!YV|53reBoY2U z3;ECA{wJ^dU&Dbbzxwt+VFdi}pFrf`38IfL2s8fK4{zb%qS2a2CF9_ty?&=W=Is!4 z=p)pd?oe5s*}MoPJ$&LcTbv3FKErk{vkb1#RC}5F{vU5Gu@lm*zL-BoU+s| zpq*2>$u^Op7MGUP2!0J4(WhLw#*E{SCG)0YAR>VgWXS7r zQ7703q(^DMO^Fh1dGIgkvFZ`rig-U1=?@-alQ2gZ{lmY4A$?k$)DvIX2-1nnZNr-xe>!83Job1(Z55m!V%gLLa9CpNVq8jZ#-v4Kq*iB zWTY2vXmRJE3uBLqZJzc_ZJFH#!^8UET?ko7y*7|ft~K@_ZGE(-UUPCz`ADTGPl?sH zU`bx!u|!#Dd882<;|!98u>{|sq?hDxxwzWERvHyN!M>QMHghcE4(^}TpG5Mk`>UPF z=gwJW_8CbW9R7FoGA6f0a|7RfU2$pOAkbr5bOsNK5nXMI){)qN0oNUG0OBw0p-)BP z^QzQ=L7euT}Yc$6h-@#zSBYd$RE4dn+8Ov$lV0~UFtw0-Z z4D&IE^R4jmlONcqhhL6tNMOV_(Ky+dIb3ybO`8iu^5=U`zHMz8#|)iGBpa7uIu3n= zl2gR;bTSrCMo22;4{l;^;BdTpV*pRraDT>@@$Pt<`WBZ#g>6!fNZ_F#tv=px(%%#u zgT1An&OW_3%cM8R59ms?Uo_J45pyRF@{4yCK1bg%g7K-a2cl35IU1A)!5W{Bj&*f? zeC(s2CJ?`hd1<@eN)d*4ri#siU7Z`8ApH}!eJl=N!i^h&yP-_plq-1ccBCc2hvC9a z2|4*uj@)jqo`HF!jZMY|zPc(~3dg!+2*Gwr3O>F&5HT4YohP>wrK-5Kx4>=%dFGXl zgm>2f<80l^=ZZj-k~tGn;6BHD4tcYZ{xoA}b)F?J!8$F}?7nm2h<@VtxmE$O9=+`q zhNk16i?<~@^bb1{SOm{muyYZj-K;>ng|y&s%u-BwMabof-$Ync9pN+&o_!Z7eBEGS z1lxD_bbO>s&Wh^azcqxoK4lLA6y{4L?vL1(`Ngf4-)Xm?MVY*a1f;KcEAJgb>Irv8 z)yTe;4uy*dDZC&%^=K`Kvx@qooTOSF<7nk~3$KwOBI8L43QwHcj>yALAlGcGX2aE> zhZ1bU0at?M0~4D-k0{~4u~Cm)$A1TDZ;iLzn$ZBpc~6^k?c?E>tbCdtmsjF46NgV( z8>+xnm?LE=3QPF=^&Ez*U-wf*~_>)eWG;d$!w*d$OfBa6BudPl{2LN{js`$}7Kr zigQo#kNh=?&KpR$J~%fpWB++j(4DG+iSW9`O)rKWv<%C8gJ`y$!{#P*>~9H)=)QG= zpKFj&@#~gfzil03*yURb@5$-R z)0fM5Tww$#XkS6By1{`PV?jCgXYfG{-!0vtDwkmGLHb7zP_()RjWjaikAxF=-9{gZ zr@naQg?6yXtk;(YT+y^0tsU{3$<_8 z0AeTsG3w>OtcmZ5JDGY#&e^T$rzn*m`Y?i$TI!RFngnDuMO*?AB)Z=+Y{YmaEM~%t z3iy&a$B+Q;G;tLb9ibv+yk3RBYnUeMYY7rt=j>pwBw(*g$)+OVFks)O{s76Tbf$@sKJHteZ!iTd%Q&RK6YqMPU9tQPg1{G&A+tE?Hw zDh-R68L*Q(JBFXj9+HQ$zP&!xI*od-dF8sV&aIwUyj;oBS}w5ga#N8g5aIk~j@Y?Y zYkaeeo4RbE{z;LEeRa!@fQrk9G9Tx)_UO}&Kt=$X~$ z8~O4=Np@^hW9uj>#F_Q%CU!ZJ-}g8U3158zVx6gvW97)#X1B-T4APV2$j4e9`?#rb zwcdHa=K@))H&UPHQDoLLqaD&Gx4UI;&3=iDtb9#pK@d)O#;2d=mIUU}xtd4R@!7~F zIDnrxskkTaA}IM1N`u)H?GRcIO|K_dd%xv0XzkeXtPgDcA|_G2Go%e?^)11ts)PSTOxG+2>_N~ zzFXDjS5U|kTne;e?*rqazViH(ZLe(KU^p-rk;N+~N=bCeTur6bbLtNfT1EnDC?4ea z?g)qKd@QC};Og#w`My1kWiz#~+F`GRy`6*Hfg6F)X8)K2XjyYwE9o2lIz=Czvwec< zD+u&Ke-_c>_Tf#0T1D2c-+?~uFeRo8|1wPWf`R4!cPF-dbDef)hBF21CMM6^3wRJU zRp3FQrsL;%R`gy~dbad7SEy)fCGjd#9{zHEqUNH@SxpuLy$EZSevnyO$j$KuA$)S` zYhxe%@@2(s?#M?&Pve%jdgrfZLV}t4U?XWnW@qyFVG+wk&uoZo$E#e1e}~_vCN8iO zrG9};Mn0ad>_gk1fY4QRo%xgfquZOLsek4pze8>l6(K1SvNbrF$Ut21%ad>zAeZAh z#lu*7mTJ6ha(S%^Z|9_botsT{a*_L%>n`8qn-;g6XKZiTKKU0vozP7AdHPC0v?cHK zl4d1b^$x_e`wuv@b4HVoWt+NdQ6J{`rco zp5F48f;?=@z9*p(FPWdEl^RVj!P?N*t}A?C-=7w>!)>ePIvw|(_jD1n)@=5LKAVvy zqLybE5BKflluOD;JQ3tfLiYiYCVD|PbD)OTa(}nN&)vPO2OfcoRgY|9m%GxAEE~as zuCf8yuZZ_6CY#@_i7O=VLBOddiE$PdE|D}a-trGgAVoW@w#^d~$tZ{@qV@0Xun%D# z5!{N~Q_KVq`w0wbR#Z-D80mpYwIeNa%wda$uwEly;JJcSaYM+kTdRWHrid@fk$x&F zeJg8I#*$MI{#lU&Im}qZGxHL#iTmsX3v_BLuGP%Fc6(0EH|K?G9}XZ~!p-DoPk;CV z*c4^iRDTWJK7t`E(5&$3@jO5!3!W6XdZ+Q)8~#TwAEO_X$vbFuy5kMnl|CQLbDgAgeW%B0AwJmOXW7=p|f5L`2Wm zIg2-#T&!G}wVMrgAP9CaJndX@&F-4zZ!ZiL9dC44L5^3#*s29;t0@5qD?u1$)w9#6 zI_(TSC1M)j8ub}*y8wVBOkph}! zSeGIH2q7`{G6h!5#P|{D;nk6PV#Z3b(_rKim?mciN|B^ocl3$mIo+NC(`|g?w)pBa zII>foVfuSx?T_c2)a%uAaeQmrT)R4GeJsE=8-sz#^^J4SU8v7gus_ozu52?VJ<6HJ z0Hz{}6~eNU#U#SFs5ZQAlT<8@oXk(I29N zZAHCCD=A}3LAQbSk?!&z3Q;N{A-ln7+SUQHvKoso+NJX{!2 z-{|M*91pz469=&)kAh)3dL-*GM4NDl_u-#OIq;yG54fWhXp=&$pHZyGy|V zG9gLI$zv&%3HAy8Kzoy>X;q=+;kQF;>sBo-_3}4_xr=*V~)eK65!)^~;@WNcrpmI`7r^6mYvQ% z!}gL>2?MwEj!()8(QA&TSY3>iy~33{1=y^CMm({~3-1r(%8b0N1`75SPDQc2ya-F0 zpb(qToj^)X`7Jm4Jn&8nS!y(CdDz>tbq?gEOOmf^#8VahG{!o9&g@W$?Pc7MFU8yL{Gq_sDb9Py z=^8kvjCFSmJgwD-szL=Yt@XR%ki3z(#^dV+IT8vJmb8#maIq5ikeTkLgqfNHVSnT~ zzO=7#Z(=GieyzJY@bu|87}5>%#CY{)#0~$o*@{|3R(4B8Yewmq%DTun6QPU+z^X8v z%sv}^olMD+K558XK8RAfoR024?_lEf+8fJe}l2l!?t>=(_}V}@>8h$Pj8%F+e55P-!X(n zHtje*47KCP{?H5@S0|@YH}l4TZw%?sP*=U9<{o@^?q1H;eQ%IzczW8CFTDNW6gl|Z z#q<;T1}kGJ-JYA=#0Jj!($@}EpFjEP6cO3(Hqn#-8TuO=PfP7}v8++P5w1XjCnUi(1UE4yxL*8! z`l5=p7U_eFO#8l!lq7L~JOU)cbWlc`Mkju_ZiNJZ>@Z(9HvNd_co&MN3;-gbNkQN+`qf+x0V3+sRW=~vpB^B#r5S9nVMNEjeR z6)9ay7UoZ1X7yTob^}H?Ah*fwx6W^-YiNP!lQIom<6mJ!`}6;{k~sh|W%`V zi!ROO8io-Rz_HWsAJ{&<0|gwnMreqPM*@C=HKlI4sli0fsQr?v^6<7@5Q5rSqrqKT9s59-X#ZL6zI z{9#R*T0421_sP*Ng{?IL5IFQ$sP!F0jmB7DnAz?B<0GDUpEE_+}~@P3NU z9hfw8D2J!Ufn3i5g#wuP!}2F}-foxtOnN#+2Ogw)hz!6t(#gmA5sxv25qDaL_jN&V zKS^_12(VWhGbKHs$2=A|$PZ2;SnRE<1%wSWr2nYnqR)p0qFW^Llkz1hfR0&;B?ROUy0LzGpVh45 zcb0~vTxB}z8b9CX-uN!OE}Acvg6Z#G14|kOj4kt-#a;pX*qkC%$$@7Wc-OtA8uqV0 zr|z>Sd?Gxk3R@3Phwdy=I@j|#p`TwxQZc}CMSQA)gn5MrFWj}U9v!9j)te!C)1#8 zUQ3T9+($U=y&m*O7c%Bn!Xs(OR;?^XT7Z3}Mk;LPsQl}{0mp8}6!O_ZHPN=3`V4y1 zz6_{Kyp9f#GX^`%fCpRwGjpGY*mygMf3anH3ZJM7*>Bvy7W5H`0RDxW zD}W#pRy{x^qrn27>ssv~Fm`N>gXterCoAT!J1F%xu z_(@rK!l%#5B;~Zq&`1DhSc(2X={HrI6%n^UVDw#v-(FaK%;3fgjm9jDs=b|>atQ55w(8*{lH=#b?s0GW2T`t2 z6yXS9bcdmPNm>N@iQ#sW^?yr#Dbk4GSU_!He?4Zy4X0W?cND<1TR@Rwyh2%grvlGz z<5GLBjb4U(HZ)ZUrl;8gQd}LOn$Mc&K1<7HX)Syp!yX;;Fzlkm2?@ zPLH88vc#BN%7~L?6LCixSVMR42oncWacMAFlyK6W2(A%OWC#S-ABKObKfXaE`%aQ1 zSf07Mp|YWmxrBL%FTI|>ww&_k1(kB%y`{Z68iFpC6@u3|&vBnyhr&?SNhR5QJwmDp zuQ1Sgf+8YI!l!h~MMPqT44RyEscA%SlZ~EGblA+@l#A8Y%|Y`pd$`+M>5?n0S_-Gv z%b^{7T0B}RD08RJ3vk~-gcZ^2Kmmr z&fEk?sh085ZCZN>+WZv71qMSdDwt$^>kiF4?z7@CDTj2KvjdP#Kc!w5HI>(Esu315c~TrI+L<6s3)=~*rP!9 zLJTuo5vyaqd2`DIlv_EZY0NeR&`Ph@JFp+7-7bv7xLM z<4rqSBVT^w!y{EJ3Q$EFcL7IEr)faO)ofAC$=yj?ySsBv7ku;LZ9hinWrqL}ah zSp*jO3j`-BK-ydjy|udQL#4vrlncB8V0~W&8vuj+5v%m~HSFg3`3^HvZ`pC43F-*- zp}A9#)udLr%*6n95G*2?RAZj9pFrHGt0R)9(|GR_F~e}+#2@?vu08+!y`Ef+yVrpX z*0D4vauHVcPfySL-@E}hWIRO-RCJmJk`l~QKu%x8$Y9Nv>*re@s2Xwo_`yt1t5{`4 z-#fD#$<)We`q3CjYYYU?(z)vD-IAg&?1j`{bbCCi*})`XoFcp+^v(Tg&nPoAmY^Y@ zEg2%e8D8{ubuE%u15gWG6*R zIsrKkBVfl5v2cPHIsozo6hIVcXr7VAa1jgA|5(|S8=$yU=#)F*Jna*gSp?-UyJu_# zakl=|%x3|m>po1Sz^Z`HqWb3|$mBSr^TE2rWGAP7{|0eXo0?yA(CW6nS>2oLY~Jj$ zdH-)#cbB`xBu7WmsQ^|6wHvJfG&$ZJt`*Kx{GLeVFZ}>tohXr%|5}K+LBJZg2FM-1 zu7Rg{8v&Sp0O`4OrflJbTYx~AB_kKjpAkB5Nu>OInn<$m>A5tSIM!rSz1KA9^GuJ^#zN>IvaN` zYXefo#uV(m@AcYLOnN%kn;(D`I?}f&Zf$Gz?fE>{F3`ix9o$kC_os%}TUf>H}IFRARwdXjd5kpED{U;PGIN_AJjaMnnk)lTfTyByxql3$W$J-`2Z#(osP6k|@U#0BwPXVJB zNdBYyEMe^9Uu7SUG`1vFRA_5;&y;6TU(ma=`xA`Ytg%lxgBVDh=5%B_eZYK9yocN9 zcTns4;E_keZNA-D&I}2z>^VP>2b!Fp=S^?XoiOMc{18mQCvtVYeDgsB)K^*sxZ6yD z;;+c@p&Hm|azc*JUe?NOJ9>?4xUn!r>WR-PBygwuk#XKB6!`$PIH!!jOr=0%WC58x zVEp^uZQOD7Q8AqnD-j-SYkf6X)l&c%Za6;LK{P|}NbAwf32;lbbw^TTn}AioA&GqfyqM+A7gNs$%9Www?~p$fyg*{zR2Wj62R-$1r9;K< zk0fMz)cLg)6R+J*GI@r~*@W6f*d zwy}$dO2KqC{l2##snZ^77cl$<5=z8xBctP+nSgJx4`3NWH0?6bjC>=Xx}Oz694!A? zFd*RVel6e2TQ@4Fa*S`yb$_q{#WM%7LJMP)0vu2dyR!&t3=FgACzjZ6n8g)V6@IZX z72xI-3@K@O)xsc{)DJ&`c&`xxfADNO4e5)Q zzz*gtdewUL@11o=vwb{i1<6B7A_>6TiIh9s88XX3FbvaB z8us@eC+(xTaP^`9@N)E?PJxIPr?#Th%(9vr8AXPNl&;dR@ek(@?teVo#V1=~ zai}6B%)1wDm2S1TVr4Y+^sB3F_}?NlF<3fbEPvcFq@`-iW5AT*>^jyAlg|`p210gm zTGY7Oi+uq%{~mGdp|nsJ0Gugx3|gS1z{r5j9vGlaC5bHNP9lQ5TVK&|gNv$TK$Lvi zADAru`0)|?Gd?9LzO=d39d%WLBbm7iKq=AEf(jWR{(WeIcYrU&@#G<>!Mor4lbg zR946h&IqK)__yR_#Mma!$kHV>pst%N`^G2!g!^y9cU%%J6 zf8W+n!CU+26P8q@Sq&3TJAL!|z}+Oba4JCX0B>dSo7W1V8MqUIQXOo3mZ&AjZ4zlZ z=o=&)lwe-P8^H79KzS>_jNNkYi;Zh!0Sm5k?PN+Uq31?-W-&Q=G#>8O#rE8yj0kq= zEyapUYv}#^&OH2u;X-vgjus+hpiblaLZMhfcYJp%1wiV_soZxw9}G}$sfhs((j_nZ z_4s}z&%)oUq!T0`tukFT1XO|kI}I4tD!KkztT7V(#WiN^P6`Y1u@VAR>E;~oH22g2p6&av{?4NG+Z7Ev1j)*PT8;yI;?V@)Xs(=T z48f_A^^G-fJY~j-z|Y=U)X()^pgH`tVrr`Sb2!>8tD4YxjP;Z+T|*LAs)4P*K<@a~ zUe1LKpi=-F-1^26?o(>b02)w!078D5n_FiHv8|wwKy7uVP_W8`<$0h`!HF)l?ziT& zbA=W_|Dl(Cl?e*OwE*vGfS(Th`Ok&iKLBe}pyG8GlxrL<|Px{br^ z-LqIx>)uq&_VuXY8z3B+iZV8jW74ToejbZFow2>2Q^!E9$U})uAByYt`WtTh;h?>% zIpS$Lm1UQA{0u3FjqG{O8Rpm%PuyFcybManVYz4vdA#lOEx@9DhCX3Jz zc~EEsm39zV0o=q*B?3kAgJ6KAnrdzHJ|72D#x1{T?!9ZVp9A)nOfDSn_D~D|2**#P ztWJyqZ4fSu;krW=wNIWcdN$SJh%F1HyTc{h*$O_e^tV+{f^Xg|^0rdb%}dF; z4!l~e`SjT*gCbZyWvqgLj61V${{75rzF?MY5kb<$)_L7bW`QLWO`=#6k1D|DCbroS zERcyFb6~t|moIS0a0baQt=N&CHRaW3eHW3}us{B|!Kv;$MsIUv6tV!1lUML@)omFx zMTndbe2s~^bt7o+?FdKQH6xnTwQq-Q>rIRWeRvx=L=HW19Ed(Yo5b##%Vs zEsm2KE73OM)MO#vl#*&Es4r|xo8gO|t#axY;c+N;$q}Bzh`op^Oe|(i|r; z%l_%4RlCPfn{yE~5HWxMCLx@fGRx0-X(`;x$P{wCWVUK)66Y0Z$790def|}N7Q6m) z`!zzAkAE8(2T~W%P{5FHaJGjG;e4q=bj`QAA$h{TVD^QQ(CO(b(AaeFiF3j|=OrXS zKMDEbl;vC#D}Ac^_PE3iU9(H5^9>|wa3)hqQ$^pW7j-R*PEPa>%0EWIaQ=`6GJ5Ly zYfwdb9G(@`86{NT+rU#d#Ttb7ds`7pDvNOuMT$o$Or`{S*|A zJdJ25=6n*Q1e4roXh5~PV0q!~_M!Lg={II)4=zR$13EIpObzeqj_d^gf)5j#gkxi0 zSXt3d_R;ARn%u8kmX{(u6^K+_!bawWqK{Pbpw>3-tdtaA4&vyot5PtJ8!2!9SR_cXO7EF)ssflFvN9e8#ge3rDR`Vx zU^64?D$EW^8c5C@EO(82DN4`_z?xCg0!}%aoPBgGzS`QvY}8~wR#<|(xA)&iU#3*x zu<-84g5u-0ge^=_aj{X3RU8~OAt7j>EBN_~zue$x{r5%o=%m*2rm6L^e2t}WcvEho zGfeB-Nvu+%KAQRN#tc$iCt;%-#K!5b+kJ z4F27Jq0PEbAJ3;FV|aZ;T})NVuIzx0aM9+ZQ#b@Uz*m5Y0Xzs|siZpi6};*3+-GjR z-*1|Z9-ck5(4jav#drQEi-&>GWNZv{DtWITva+HizOQs>ufBgB9Yj3VhC>PIaK=ct z5!Rl$YPsnqOBGKgKka!SA)3n5!_-A|CUv)TNC(PZp#xa6mW3pTjEK$BQn<}tqo}&v zmyd5g=W6^dAitmF@$3;3#;)uB zrU{1r0N2MZf?lkX^!%ziGHVl~%pW}#z43(a8_RN1c-HwQC)=MhD->u%53PnsE;lzQ zzvQR#$hl(6DMCQ;j^6`1<_}`;5$|uVw7_|ab%!o0S9)0W{mJKi(+q&5< zwUZAoezw)M_@K70o%dM+EM-)aGPb>@gBuRZC8PlENpy85Y8)~eJVU%heET#w)dgi_ zUj2AQuvxT<=ocaxuqvR_O$^1I4g)`sp9@iSdCQpbM=O$0EKWe^?zrb_! zy$T`^&6>LxrsZ+!75JbYjz81F(BNwc$lLPTg)v+cc=sxha>9JJ1#kLgk%RxKKAlfIyKWlwrB7`*Qp{4N8{f)WV*jUvNHbE+aP}kqgwYH)_vPy>-O?Zsxi+D0V2_v0eMTLChTR;0YXGj*q`am_PHWN=Cp~l#A1+R|${K zx9c|ulKj|WmSx+A>o=%ud)y|!TzJtLIi}1B;xAZJeiw7~*O~Hta%+aWZr490Sx~ww zz{HLtXn#G~>qN*C;V#_1YsvQMXu-hh3J|9Irdq#`Q4resl0JQcP7_`)@TEO#lHTxLQ38siMaVKc8%YwL_-22w?UD=Q!fI?w9 zi?4MvqipheT*?d4h9YDF`i^Su0#i}tw{$0Wk=YpeQ`GAB|(T68&ex-EyT}P)CQwy2hkrE5u;+)$DFgudGNyq94gT; z_IQ}W;O8WoZrXs{_?RJi?*q2A-LFfwr=|1^FH(?qn(|RC3@j%n{xe>5zdW&CF_d_( zjDSI`0GDfz+rPrT8)K|P8LTi*!C533PY7ur-K=|?!@mlu(c)cz8RaW+k}h`S$+nfw zwgvQu5l?9@{vA=-_IQ|y=8nK0X@A+8S*a)OUB7K#(o|->4V&9O3eL%Py&GLB#yGNl zl2NRFJpD81$eA(j?OW-0>jMQft*gcm7e{0Q#8No4px|u1t|`Mml{&zBPXCf8ska#v zZ+3@)dabLb-^H=^$HrO=uk86(@!{((@X)r-ShnKpOu>zw{2}AaJl4?@%hF00g7Gkn z_GKYcX!j=x6pDMxzCTZpogtbs6o<{NiG&3^38 zhRs2G6)y=nbe3rad6o4G0r+Z2-v997S2?l+lZrRU7Co+M09Xlm$;WJBk=qe}hskFN zYe`~2hvwa(F5T7y;1cT_#q+d$Ku;2&o<5o1pQWGDX}Y0mVCfbo{Od0?5?vcuDAzfT zBX?fLOJbQy)DhgeWK8QYdRplik%1$oLxa2gt;yy2t`W~bY6fw+O~FpA4SnpcY^+Tw z{olEwRRX7i#;6)GMh9RaZ^eWJ2uH`dB@yk<#(0$H4J~FsCPH&fjxdtm{xp4XIvXo% z)t)vt1_Gd-RsUqZ+wwcs3S2LoTZDameYxOp>s~lgBI&%D*NC3k)?7QS<^!CB@~iCo zhW3uGd!ROw3p#@7cOT~{YhpnPH@ErX`w2BMAyDJ+kj-S2(#!DM9~5y0$5iIOk9|MH zo&+DbGP*8YRKZSoiIX$Dg@2Li{`LI(k>QZ{w?GJM_P%icM*h!ie0|GhO@}re^x_j8 zT~UPS3+$QnZ#%muT$wO`mb$Lnhu(R1p+8@>K6zUlWdn>N^~1!($lv6c(n@sf*!R9n zbZu?2En2p!t7o9EXiZjjhmo;Bm}LdpN4}P;v2ebw@O&P@u~%V zMkX}=B)cD^MTc9tW1zIG>DcB^PVQ4y71v^)k+w1S^s{52grpF^L(Zh5OvuUCFqg_* zecG7!y1IRb<5b{gdpY-#4K7bzso#8HdSX`Z`S+|?!T3LF&;|ahD($H45NY}Km^T}^ zfvwT9aCUs~3Qh~^X@ubF*$#TbS$1Y*!2r~jM4nCv)GTU3mFBlA_!u2RA1VN!`8qe3 z=2{$aaDTNbZu=^ws^93B>eM-PQy!$Q{4B_fNqSPywZRe|rZr*_f50@y#{#Zqspyuv zmh|WA;c^}w9aDVemiz$Ttt`GC&TkYV**|(4XqS3?CQvw+uLNIx<$j489mN^IxnvOX zIMF*Z&PLyJSFtkHx=TOR3c82QS(!EgMKJW`*q_f?G}t)XnP+$(&3)>zrluVr(c;Ze zGG?d#=x)IGWo8!W+rQNTHAQzi5D|=NyvXZh#W4%M= zyt;n}7Vz;e+X{>&8ZxD}4OYf@^@ryAMI%BGFXq_;tdeFNoaHQSknv249I)JLN0m?4`H&J=X?`6+j=^nC)5LdIMjS zW9vt_GdF}M6?sto)qi`fh=nrh%1VCiEa>vaV(4B4?Y)~gOrpQ8&HY|-jr<*Mn9H|Q z(5@vgjHX16$d*G6La>4YwjYF!et{M+DcvrMR(UODXFwBw9EX~Wj$PNT%H@pyIyu!H zI>+ki;&qdiV)G=}laRfg8_Mq7P-6p3rV2ErZK^zjeSdU0E9cT!`!>rKy7%2sTbKL_ zqR|ijeb`pItLHULdI>)eWJlgtO8`aq7hru=0cQodAi1kH#JoOK59` z#bP_)AM(Z>w@(&%*_(@F>&gu*pNC34_uSA!3B;mne}uM?aKfq9eUEuSPB~CT)PHYk z>nK=y{?$vSROYe{wBur888yhrE>6E!Ie}u4FyIuYd>^Q&M-sKTaa6(qTaRPgW?l^Y ztsaFjiCmU(w>?MbYT`pc!^>3@=^i1o2Uj89Vk_EgN0{uIpM(1o|FY&%yjJkO3nIC6 zPTd0j;!h6Ul}QE&II2fW-ZQ(rI|SZ6;pUd!SX9~A;VGzXZRjajDqyrNn^!x$eqS=j z;VK5E{<#%xf&EPhGVJ?d_In(Zgh1XXnMW_QTJZ?33?mTN7YhBj3fi*)>+(uUV#HYJx%EXK4nmiMm15D@R5R2=aLv`VI(dwk2(makFIC7;AoD)_ z!TcA#P_CLpWnFo_00GJ0-7X`8zwatTm5dy?g7)8zY?p-2>Q-++Kr=r@Z=MApggFY; zC}~9_y==EPoI=m|LA^?>7Gfbzk6QJME&w)>}|buWgP*9VF}PiiTL z-!4GE5Bo?I+OFQHpBGrodZ$vuQS4c(DS(0F+ZEjDAnhm>U@-4slxH8#c|LRyBLD8y z`fL)tFkk}4d4=f+*NMVVfkm2}yK{~-NSy5mVrK3&ClUgXwedy05DXd#Y0Fp)&^!Hk zMd;FWzbm(>q-6)Zz@Dr7r+tOc9cO2@oul{ubY$T5wwdjGovQ0ki=KJ;XZ-t+FCl!RSbTI=)f{Lr7@tGa7RN}hDCQz}DiH+?8NI~JrQ)n2RyVjDkx zOB%lqIvFfhjiag=UfsZ(g`Bi~ml8<&V4V2*9@#f;xkC>LpcO>shpmBIfNIV({nSMi zEGT%?^S(Fa{cN%EsI62oWh;)wvgWog2t+=hS_J5z2Wn~z%uIHCg(D(Q^8MBt&G7t( z^wqd;hJ4-w+Imr#%33+l7q&<*+eEKalKQxzp)dFYM1g}NrO;YEVF35plK(cK6$9M) zl#G!?0~GJZ>Q6)4c;fvRv)ZO4MZxQ9z&fTLKJ-sc&9sOvvm!1TQvq@38ms*Hi=`#< zEq3D!wz`(v08~wE1GQ`$THOF8)UK7~v7Ohi%gK42_MIB_v0GEQs~fMB9S}XXDQ~2h zv|4g@mcFfBFUs>yqE^6p#}|FpsZ$6JYs?Xbq&r|vbG-X@x>aDb)wH!IsHZQ@IT`tS-=UN^Jd4#X%sCyk-9o0jm_BPWl?DCXTa&c2 z=Dlj*(tI)ZT%9YPbiB^@bhwhO#|LujM%;6+?W>x@ZP~APwU5OyKVvAbU)7~fY{Y8` zNxPz1ET0;wXH9NvZXN02S!i<*b23r>s}}&+Y|rS}grLoO9;l@>bmlDIkR1j{k=(1g z>)k_f!KAP<43cl8@=rLRoX5NOJ-Nm6UA#(Ym7oGsK%L2TF*uBqQ!=lYMjt&%?F}e; z|M-2tse-*AXu=V4S5v}2Wk~fbeQ?SWGGq-etdykA?@!YfZN~*j4fH*FhGcqSb8F0ME~qtXV!5t5;OegxdR7*GQ1@q*9^R9MFWL)az7WyP z5?o*E%?G8EC>!uLkE7^U@D;RGY{$ld#t2Rep04h5%Q$o`2p#V_oUR3ZTUCKmueK_W zw+evQw1W9Yw*G|cS$4k!6e_ql@4p({eFB^ph+>s&_i^#(^$lJCP!fCd=KFGF6Va(n zE| zB^sw$>|iie6Z*pf!dO*_3W7oz#3&lT5GYkDh%V}|ny($={#1{+sL@1IaHpnGY7z{JX+np`vn3r|{TtbuXi5I45at^TWXJ z3z?NyQC4(DO$>>Y?sbihK}Iwi4^L21HWz`|xfsgrD|ljRCK=6Ez#fi&I$=N{uXtUb z;aYiY%vh{sBv`aY?A;Az^;an!~dPY9kW(~~F$cXHYo|wGM1d>nH zH<@5w2f%m0tHoVVFtag|cy#f+^#yM&oF9n@x}9%e{27ZZpTzOW-_a$pBZxF+1Z?{NjtU zd0MUfLgXEsDnsHWh`Wh2JGuO^pDT`e?~ul;hVP5t@fQCbnN|J>rKzE-UaU39PvR>2 z(U@AVjo@`V4>e>6AxiexyiBoEpDl9=xWtLiNA{!y7oXe<`0v9SU<9j%DY&Xoz6yi= z)!y9RpZk@4_3lQAWf|kV#QGIyZHPvDcyXty6Ss|udc$zybF^kq1Jz3A;m zRTXx5evy4us;JW**;B8z(IBgbZ#2*NFme%tbjs%01|YzEyGO5N3{zp8C+oW&`tbd)W!@IO2`(LPXicSr;Dc4L+R@m{IvzwOUY)X`Xw&MWpUY_#`B;SV}x+>bv+~g$+sm1UP6c=lFDz z!3zUiP*P(Fjdf0p^5px_(<_1pT1YzZu411{wC=d+u|d=U1m-HP=9NM1X%_`oMC?(FycK zf&#ylS)R|3T~d;=rmc_zcd)rrtpJu0oEbEp88xr#aCO0Z3OKnc_{8y8j|=xY5zWCaBb@v>~;RxI|44iVJ0!UABFbmkiEXdxUWK!LHt8F_6hfs+sD4}q0E z70l9Km<_vv^XWsTl{L&-mTP9404{@SNsUd54!AaZZ0yr{6`l32^?pZ&M%|)5r(*WL zH82g#13gHqeK34~ru*JvRw_1b{zp*QQ(yA$W~-V`wK0WtNOO%hWTQt4;h;$Q;C|rDmbr@fdL}fI#G;Os-3kCh~P{{ zoy?*V!B%n7?)$8|@nY|}O3x~pp7rk6KS>6*Jlgv^D-0|xf3MQh;nc!rUb@ME8r+x} z!J*~jtGBzbHcI|j&o2Def7jZ?_5UOo8cV!uzxH0_# zoC%`aB2zV?NNJU+tn^`zv27oPoN-|qWNpYBB2;-DWeGECVZE4%kLDa>{zyO}Vn9=U zxjgS7!?x<}1;}i)Tpo)R)rO>af8AuqV}>~?;>ld{`4t#@A5;(!-N0Lin-K|ggeAu| z*D<|sCQP2ciUw0=0#)N`#5wq;J$&S=4xUJ;fOh2-|8R!Te-neNq$IqUj3urAc%?hk z9t*>|tT=quY40cK>_M`=KGc3MH!g0_ zbFXq!OCI7alPMTa3~2m55+cbc91%7;K?_1uAkST!kweb#fFcrr^&ermwWkCcKXXXb zg(@0`Dz&tL)uwh$wl#5a7zl$4I&{Nc=$UL3|9g;7csY36+A(kwI=j^!Av(`4qaRTB zfvLa5rot+uKRsS-ydX6H>$4Oc81Q}rVB6*Kp=w4r-WT5lSD1!GC zo-QyqHYp*_-tZf>8bxz!dzq!>QoQye`-vygty6ymr;(G7ScSi;jj)o2@>_OsQ_vN8 zvPKOG8Zqk;JegAI06HNczbp`WrRV+Vv5Y7~&HF;O*-T^C!J@4N>3Gq0R_F5CghQQ1 zPB+RVwW2rbM~!7nl$)97j?{vSbL<^OhXp9GmE1K3eFDCqu<6!eJOws!#dg-e!%f@Q z_OS)>1YZM8li%P%paL*^9Hs6Ic=K>HtwQgjgd#zAVZr~%k*VD`d#5t!nIJV_WVOAp z0Kn2fX9!#)zl?382k=62AH%Xur<(@{MI*@tHRrWeHZh%>QP@^ghURyN(NR0 zBc1YRBuNNl)~#>1`|tukSPT^z$*)tlNt>k|_%3>Udsc-N2rxQd#`KQB;gVKXEU#a` zhEbTFwon2t15mm>rhVo4_smf;>8qwq zeAS%zo9K`9;+bDyN+BYj-#sr)Qh0mn>isMBPf)C^HkmQPbmW(`0vDj!rJLpYn99JUqSAmBv>q z#I1i-T22UEU0pW_C5V0iU}}2$)8^7kNnYMMP;-()Rt@J+FQMe$tv0*j7{X{{WK*j2 zG-99x(>_2yPS1e%iaxijkE#Fq$eHuTW1gLuKwShCBnALU-55cr!p3PP55b%GtVcNv zH>o8+t^H!y00b|5B1WSV!2!_>&ja%@{EyuDKiF0U00?V+RH4Ov9Zivq*9f^ArL{O5 zzG#cCa(#1EYn)-opOjiV)$oo8IGcb-2KUGr2t*dLf<}x&7NYsicABeqt>-s$$VJh` zI51%bKx_+c9Z>3!^c!rT4)}u^bpvRgD7l^Gr>95CeoOh2vH8!tDvUU^xNTr$+)vid zLEX&tdrxdVE(1LixtiCR%*{+Qi;6H>7bAOC+jq~hn1ylFY`J&PZg3v856)^q=702;2nrkz zYVj}WDVIWYVCP7lQLwW{B3DlDef+B0hGZaL5i@$8ITm+qe$19C%N8xm7BvV$JZ|XS z13F6!=wiW$3~-F>ET565bR^9$SQ$fs|0sQD&*0l6q2j4!$p@ z@k+C>fNpu-%Pkz$)PhDYm!d}n3C8|{ifXf$He*en>V{-k@P={Q-c=#;%!Qxa++sab zG;j*kflHUIfOgPH#nHB$a|o!=al3yrT}o>sX3P%)#eX$G(FhneiH}qlSnvN<70vil zW}^w4x$rzQGXu+KREZEMoDw$pw|RjZP&A(ad;#e^KvzF^zH`k*sGAGC&{?Lw7pauRES`&th6 zquti~UHzRcf#;*AB|4X-l1Jvhp&R&wb^rZ%B+veGry!KEO1t0gw%x4*!sxG|gvgPq$ zrH}+>EowG+6OLDfbt3ldxZLrU#^MfRfDx)z9w|G#%IqDJ@-4qVj&rj%FE8(9eZ~!s zW$T@z;Bm0r(OQh$2X=OLD|dikd|v#E`f!A_zrt#g;DzdNqkjPQ)3AhK4(nLf4vz^oD_LM|~zfb)9KK1kar2Z&| z+*YGphIn6HHK6pjhjrB=4bvut8ma*$Ytsl!KQvQKr6}s-%Li}|ol^=6N^U$~A#;?I z>{nN(?(J!YBrUC6gu}C>bAndQ{cv)>RyoNNc8`Z3^#NIN>D2TV5ML`j(xP`(Cg@iB z_>RzRc+Wm{{)(H8SMl=`VhmrPtu|l=1}Na0ul=P!#&+z&kKoYin$w;zF@at(^t^4F zktDabI`dTt7A8*#rU>dm-6|HP+pSGsh{E69#CHMlpWl7m8p)!<3gmIzBcY(6Am?)o zqfK}ANzm~~GWf8qu3_N)AxZW$XEQ^R3j;A?g;Z2*9|lW8rYFXKDM@6zK1?MlURNMF z^BwWO)Hr$*4f!_e^V@mpY1wAv-FqDEt@j{UgO~hIUP0>C?(3xC7}(kNQ0m0TN9xC2 zG-?ze#0JPtY%KKjB7TF9zZyB`YIX#GEW*548GiB&P)?)_D>Zj^HL4HWp{ntQP7#ku zB(}TQ*dWWl$Hk8C$8PZ0vd}GCJMHzo)JW+YNNyf;@rw_qXw1wa5Si-}TPWpl1Cc-} zQG>2EKy}|GxTaM|`BAwHyP24o*?IUtZd083DM`u5T;Poh-Qe$Cb`ZC;2|b(&o$eHt zW)0)trS=(IZuGOPPOwMp&q}JXs?I@#9T@*CY#13@Lp8ZJCFTjuh5zM=1j!=og39UQ z&$IMGif}J6mn7A?d`bvQv)pKDRUnUeKxPUB-y}^xts>nK0@Mo#*l@ zw14go3Bati!o$J8#zU#gInoJi@w z8r&3maCy3M{Fzkx?G>O~0Ou8PFy&pFxPozW2SDTbn`SoSv2D$vcNWUQ^F9y6|Lt?# zNh&ymrM!?Ohc+GE*}p7xW$4<{8bvSP*4UZVT(WIcu_R}Ka5syft1lYiK%fk~{y@@` z@;bmrQ0FAQ+3mGe^WFK>Ue@UJWwW*;C;L=XL=C6*_TJh=3A03QF5T9(!@Mt9Vh*(3 z^0J@KON#aH`L*l8OmoWq*;$uJCKJ`;>aym*r?hX$Eii$)cUh7$GdI_0-^r4wpa3tj zr~c-kak|Bw&uQL)*z+pEv)67|U{h7Y;BjY648O}Q_e41f5Fg~a|4=vk9t#-f?Nwry z>!e0OxANEjG6+QeyF`B*LNVZK>kxe8iA|>;g?@uZk<07IXN^~fl!}s$65vhsgwnxP z9z>GxlgypahE>1SqC47YdjwKqHc{ux7OfUq%v7c|A}G^jA2a&p76A4G$m_sx7xqQg z7KBro0fZ?MkdI%Y2MnY(Z3*n%8%FMpIyR3-RMmPdW^3&L-`r$ z2NtpWiH3Y5g72Vh)9yDxYF?Q;hXN$-`r4J!^VVi&cJ}J8q+mykoZu(U6o)DCQ1B=C z?KUvL)sD)eCe{?t@d4!4pq&*Di=`61(eZS*XzD9NlvJBI4xysKSzD^#Z;gYT3|VYXQ9kXqqIH8#yg4JPX{wrMy^U zF$1)ec$h4z%AC(23PH$7Vn~lk85nvA(EzyskS8!u+8@V*YXx-gudiPWKYaNGgZaEu zq5Dbp$0(SQDTrE(lM?HuaMgyCfgW_bpjiP@Jb=#tVXa`~v(_Gf*8JA6_QZ&Gmznu$i00b^EOXh@offx zlfOtNPG)<#1t)r0su8W`$MPig(hHI?v*2_DDzq=tx!$9tUol-SR($d`ycmWe?{U*FEl_+yRZ)QOMZWW9_8 znwAY@{%!MkduGXkOSYKd znBMh7dWodyX~ul>_%FvT(9DkutgInVf4*t`Io9ipDaV7hl$Kt&@$%`{De-!N&Q7qA zc4eCamE8{B^BVX>d0u@|KnR+M$3t#OHp5nfz)E+{&xVo~%EKb5GQ(t&fbv(!xF9I4 zX4Z1mm+JOqT3VXDgTtVU5TGZ4X1Kv=Ur$95R#iKmSyR)8;DS|o6YTKB*4s3^h5mPk z0-ge?d2^ej*E6*ig_Pj5mCt%|W**O-Ni`mw>1vFod`anM{%-5QafDy@>kz~_0s-6e z{wN9tA6+#-`JCQXo7r{YeB{Pi0<2hFPO*hnKmgjSqv6XUh&fAw7hD=@v}394m;ZBj z4GpE@s_Cv0XjH?f*U?byVKh2l+T)sh!K_@myCu%{cdRA}nhsK!40s2X-o^|Qqvf8> zpoT#puVGp5GH6qV*?2j+0bSDKazXA zkKP$nnvgMS9h|w=AGX{$UoskoNPkU* zyq$F6ScA=q3MSGtz>*R(nn~D(B=Pkf5Ep;gDf3F$U=y%DT55`Ef`{(5JjTM!l^-3w zY>1)|H}YhY_T`s;SNla!?g5N}C0eWYD#W0&)3Ci@>^~{FFwOr)0;XB$;lK;+dRzZy zpk?YAN~?lT;66v@gmnF7lz5aTAEKoNubw4-?b`R0z;o0jwzhfS0=kT@voxNsXg4VY zV|U4^jA=aI%PeV{qYT+Qv;CEwePFMmQt@;5ePG@^_MR{=;x!3)3VqtBzbmmaki$M@ zv-Hpzf#jesc}`66I5|?!-h}MPu1?dT=hg$v%qxp8GfxI(c{70jiVE0S?RG4IrW*8V z=8J-QT=HVgQP%d<>6KAs*@Rd8&Dq&a_S<+YnsseUUC0f(jJu7^>ZM`Tqhd?}G_ToY!k`_cY0@OH#rF9^uMety* zIYkr*P{p#z1l0}H;tN+Rv*`RpGIvpa;QS_IRac`X!8lp+#XiZGa}NPL(!kZ1N`E94 zVB`X3f*|6}R7h-`jkKFvk+Fdo*B99K_rqsii})h;7Gk=FN1^Zctv(C;gkym~=m;97K*+RGIx=sklqrALu zeK_77kK-pFpk93%iYsQigxWd5vKz5(i)Lu+X z06vX2yO?eEJYK$O1sx%a40#>xA%Ok>pW6^muno&Ow6c|0B<#OJ z#J_RIluFd_;{j%!os}l zkCc(m0D!4pgs+Ci#KeU7Q6Qyj5L9q@ZH*>@MQ0;FFMS08m2?H;|N5Hm5~R7;@On_xQhPs$ZY8po|_j5um&0k~sac_svUAD(;^>sd2z61(gS!}FmE{q=GUzCvbsfFh8uGQT#Co^A55_@p% z!;5#!fS(|SF#MuJ15bP-UBE5Y?XWq4@1V|ia#FdkzyCQh5=_=oGK~R-u(=B=B;jo!woR)0D-5B&AcSKtAxs(V5E{w&Fu8%X$?6yl>F; zmd@Io82i<^-YaQ7YM#>jJ#R`@T2RrP<#V#4xBQXv1%*00(0vHJU*3|ybez$%vSZ^T zBjprd`<4&3%C;#I9rx`wK&~;&cgRS9cKr8sgw8tX`(6`;7Wg*qX6;H@~>f<*~{&Rc)4Vs&x4REZRdAxzv%?+YWS^%}=$(gq98> z-#m?8Y?c(t2YyAn)Rtn%RjbQYs77rqW$a_zI+`L@1X} z0Qf2Kf?x{mmX%qhH!c%rR_}f7;}RFm?-4XZfL1A7U0tJ?*?Wu^g^Cbc1of{pPbUG~ zVIhevwGKMXMB$C&18R`qWjprCP3yxA|H!0nOx%kJ@E@+)gDb#|uE-ri3|G9<5%8tbknHLP-q ziwBSS3`hcOD=HN;5?@_6QDTD)U2&Opq(%zmNcgAu6L*$3(K7zPnaEl#-1Xzx<)aZG zdIx@S2t=HE>$l67cp=~YTz&o+-Iq!BO>(#$a}!f_^qm@9NGMvH|0W8do8#|lu_y_| z!Mq-zb5pIey6JhpIbCl@yAUqGBDY-q8#hxvNWUlIc((O!_BQh2Sjfb}qS<4un-K%1 zbidk7JV?x}`LgjZR^tSs>d-|jV|B77rlzKHCD)E3-d68tl-309M08rdzUqftTmRgY zLa>fO*Sk@;+L-4&o9yoaNTO`D`07{REkkJM1g0qP?aBfe(;en=R zq4$$5a};iAk3Qvmx#)Dr=&SyUEi$rI#O}W}9=pm3WN3wjSJgT<91CY9P6`_y4lTIl zksdVchbg|&Z;`wmlIlQ#AlzKxuW;$f=Fsh)!CC~-9e`^iNXL*ec zpmVTxok0fDe3(d3`9NIm1QZ>wH+gB%(P2>AOf)Dciv;b_14Tk?f(m3>OG~D!o=DH` z&k#H*wFD->6MT^B$_ik}0SgWejSsxBL+j4V9VpCaXY~@m97TV5mGR)>u@&fHQW=~H zr}Jg%bq;BVXx|>635en2Wb{>bb0t+;B1}b#_VId+^s>p> zk+?$y3?|F>8#yR}C)(HKFQt71g#%yad2C8nA3 zbX|z*b#h+Yns!NaqJ84bzqi<$f$hE}diziAp~~!f00{`L%?0hw8BK{dZTAAgAiag} zLPY*<+I>k%itoPc>dJL`Ra8>4(f*9ep0Tgi3y3e6FD`W8GAcwEwl_m*v69r56EM;v zA+MQ_((r=4S`hiC=JZM-Oc1#|Z<;S+3xENDx#_6&r-+7=b|R7p{?=XAI}1=YXSXcK zYM8$tn`UIuY7l$a`n}C9qou$Nbamhjbpxwa_4H1|0=x_@E$KSfIXWwn9&3`CjcX?j zCHxN8Rnx$>Pb98Utw#@1nA(4u>7M=FqVsnsvQd8y)``=iJC}olL&Sygsf%_C^s3>S zQyg{1%*bDmv7ug~fmnl1W7GeXl$B3T0UAm!;5rU* z{udekZV|dpXh)ys=#~t@6$hzfl)>DSENb!HTR^3S`3<{_oIqT+CxW8H(-T%vH!>@I z`1h~FC~F41f1l53OcSzB^yX_B%BYrid`YpxBWaq#zY;iNq(_{4HKROTNRL4v-|C`I zRLB`k_AYR4M+CSdO-+w1VOq88?Pvl#Q95CZjKZO5arf-x4_8YR=(bFR57P%DaC{;n zun^_(tHQGLrLGzgVuCuBPRMn)nFPJVI~E4JGip)_Dr0*C114jJ614U8b^hzEY`@Nk zb{k++m34B6%E0Yqy26|HTxx^jY6=~Ja8mDh=6dJPG@;+LP)5Uo&m+0_L#dHv$`b{$ z^h3qzC-KoqKIJ4@n{t2#dSmF1#2}wp`TSfSrQ1UwNaeZjK|=YyL9I2a=9FMbxieO19#1WX8wfkcRg=joPOg10bRcs%?htQXIiiI)ycXHOAsK* zYZpEE_V@RP(#3Ln`x98$_<3CB7qt~3Shclw&Nt^*=`Bc?{PL((_U;TLV`mS@>J2l$ zK1NHWPNU*x-FfMI{+5G*7!Sk!5i~_s4A;5FemeB0aSdW3_3cTT{e}~~2`BzYrS^^u z)r{E%^pQgM+yGA74Ig?v8yg!JcdRdTu0Q9pnHE87h~Bunr$H;1{Ne&>mr(rC=(mvx z9QKT1yYoFYTQdOdd~$ae0M#N$-?b)orFk6AMJq!59NBrP?QwyAd3V#mdk}aoZtneW zAG}U(PnfhYKNP=>nku>|IBb_q;Q15E;3EuzTfpY7`@tUx*i|F^E06%HRy+Xfu27Hd zfE1pmk*6iE093q0T4>-`eSH#Qc=xN>8mPINs<9vwI#U!9A6Q@eo|ts{W8F&jY`Cb%br1J9rr&MPF+XqGlD9fX<*RWhil72qnCNp_ zy$$w}Qya%iGL!A=6!2m1z+w&BlZ}}x0zx->X4{D=Hs_7KKziixauRPBO@}wqJsp%A zygOfi?2NL5#o3L<)SrwT({+J{A4uTqzcyCl^EFRC2}4nD@OV8kRxO%4Nu!bGfGgJB z&56-O6*XE zq`PdqsMzHXa(n~kb;L}!H(NUl32T9_qXGQIF3U~?HMy|B83YPEzf$2JA${UO!Hxb4 ztk_n3lkJ%oCfn+Vw&=kI-D;&Q)sHMuuz2V5(S)U`h2?Yml@TY}^c#@a9LEBLKH}OH ziOkJ;J9-q;7rnW;gsuN`@i~~N%$khJ&|%=*6l(tSDg8MIxK@e(`nG1ou+RlL0JI7l zgpl~I6%wSlYZl1@+S!KrMLj(q!kz`oki97=E!`Zn@~G6W&1fs}=5s$Q(6=ATHl1s5 z=ewZdE=#W5ylpE*GWJsXnX_99J~Gn>TbgP5qWYJ~?`!w&>If8jo;(KOK$C{Q*OdR1 zF+Pp{RAIUOAtSP;p@C^rRv=C`A&i9L(8|ngwWRT2W=nBTB`x~VcT>|O$8E>Z5l0}l zJHw~dR4io>|9hAR_Bj{&CPSO;u{T2*LPBYr_+Hf#;)@L7i-((_ANvOO0lWJHBFBU^ z;IbVwZD#?9IKtU|URzZpZZIDy;CAw1gc!VK`5&cKa*BAO&5b6dZT65UtzF$g#}Lv@ zH@lMSyekY6^wW}U&zC?UdH;RYMun|uFvwI52xROWtViD4{xl`MSoC~|Cm*$Wjr!{7 z3W^{xxmu3HOEzKyOi%u8!+;E_=(~4yK>@&`@$5dOV1nxySCng>^k@xkZ4^O8bZ!C{ zbE}$~m%O`3$q6TleIMekh$W=-jk%hb+9pLHWoQ@aDW7dk}Hqmw^t(GFfFYw+!*DAB0%(n zz*sH&ly9zn=jSh{9YSeA*JLA;Ci4r1;Hi=zjAg)~%1fEo(ll3ncTcu>`PALry;Q&m zUot*>lnzX#baBi>%k|K7V3>KiJx2Z$wH@eJDFvV;t?))l2hTt+md8n;bY&2Rzl3|R zfOxBKGAa=(KFa7#o%{CzCb1#%CNQESOC^kcJ?^x(+qNfY*HHWMiA;;kEIo9$f9**n zCA)6}h7G_Y1dWwvzrzGm!kE|WMboB0$%0tC;qhlf;Ba?1-QV{hRY*;}|cbTgDn( z0~N4ZEk1mwncgZo%ZWv5LP^;A0fq|@b^b9uRXJ6}Cb2N(g+4!dE-&RGnu7++_&JQd z9>9xjmvyVpXIGDpz>Fuaq0t!7SnC4NsHSC1t0h2}SqqfsR;ZK&+to5LB#9qvoa!mSz4uqX}OwB{wG zyt$Ab!YDYdrGDlVDuW}!$f7v-ZV0nQ4clhRVMca{C?LRr6rUGp^9Tp>6<8yiLoHwzbEw^wZR)rgE6N?AW_^D{c- zoM*qK%&X4*^WL^-mv`}M$f-m+#llDlvc5H%jp)K0TBd>WqaiRbEz(%K@HuqtNVku3 z$fg*a*Yyu+80`L*F%;jU!@JZ2pEy3bN!5lI7F4~#yEL#j=`QyQHjn?5P%nqDjh9#o z%;l^2ZXZsne&_|ZP;xoakSy!VBVE8Jaybn4eqa56CIC^-N#7**{i^5ma2YBpj-w$* zEvv16QQGhH4?J-Go4rZ`%|8|9oB$(nhNUd5eIMtZ_YoStnNW&D_=y+q@0>Zc>2DpE zZa&I^=lq_>TDbyOwV%y9M4)zH6pb4f<10g2z6uHu{C~>pZA>i#!XDtlB(oW9(ghoq zn?aYu53_AC9c}HFKW;U^zs$0Ucw-1l{9E4kumH(pL-s$pPb zP@&x<)^_#=9bF^Qh!rQe>n?lcJx7goau<=|HU~4+C={IxeSOYbOTzH+Btv0AY|q=) zmD_16T4$K=W2AeIR@O5lPd}zG5771zYV1;gl-`r%Z$k2$_JN?|3zMi-^3!__%;zNb zrnST(i6FE^VHi1|N8g)xLpr(Ni#t>|Qe>eaEj<^6q6ct`R3Z^$kS@dXb z$tgTFRvBjAX9i6QN(_C0le28A*8{VMXDs8^__VMVF%m;d%O{nRfnI7pu(>^ch zZl-4UFS|`1ypUE%Oj<*ps30a=wXoD4vuto1D-w|=ZJv*RA^|wv0CQpXO~yA~fL3KX z80)Q21KkXW20}X>#~$R$3w@z25e)~MF8|TeZoX6S2Lk&TMJ*L6qq#eq_)rzt)ac04 z3@#5ld)GEBPlwG^^J%>9x19zGK{Z--nbna@QG0uP?$D1ggajm4GqundtfCtYb?))W zjq7~u9#jXX^L8%Jbb`ianv94mg|Nav*}JD68Cy3W zqlselt(Jd<#Qlid!&~3`(ecNRpeqXomi%N{eID^mrMQg(dc(pA%WaUVJC$hG=&q$j zflCbIGk;GrQU4@IO{3?)z3mv-ORSG)P&<30AfY9{LqxP(cr2*}<31mcNwY*b9H%4k zO;j!2Kljcuec9DOYzm*897^HbrFfzH&D>nU^Az}?foS=+3=KJ4v(qoHHDjIXfvH>R z`~AhdYThw}5dQi&*Y0IsUcu#ZkBAv0><-pu0G>nwXxJ+7B`frb;$HHG2vA&I^ZEUx zCh2PImid_SkOmJJ|DnqkJ;lKaM9h~I zirn!icdyl$F}2koa#<# z-r=AgHNcxAocRx&J$Vzd?Y?<+P~UGLj86qCQj&q$c`=5<^cKgSLTPKgR))RAME7LR zANL#_oz{A44#jQmTy^S1!bTh3Zf`|CS_N|x73h_EV}cB(i~L`Xc{R(H=797`x~g?F zS1vTL56Ab$-UgQ3+@QZ)y8!uVRy_J5unHg*iJ;|=>=Bib8HApR7IOIl0@;-G2ADys zt0xqG5TFs|l{yabDeKiELj?hyNp75yl-nEEpYS3@K|W)6b9;Y(y6>wkO% z0vWIcKs#i%Cr%8^QwMXOBqak^?@&6IzUnMy@!bM{ED%y5q^qP!hg2Uf3+28X@6;nn zKmQ@#PjG)4Db9Udt$u$O18G`cep%QAa^YypFewjXUklUp>q3V8x=~=*+~-_oA$lN9 zJSju$VkE7>Ssl5?V#{ABu5?nF87B* zZ(opWyH?4e);-7yWn2}a4GBVqS#Awpj8;IjwhO)U$|Zf+rFCiQaVJGWyB_tZma0HN zl(ntnG(Cus(r3=k9)te=5xPBV^oLyrt>Iv+5zs`2hK8r^n;;Y3>*LEdL?=CS#hyfO z?Q&FLrf_4cfN&DNT8lm(F!+!v=$;Hn-2V`HY>y*f=muMcu8E0B!xV2q|FJ&{)LYJd zM=_8ZyV{x~m20Ir z$2ndAy-d*8gyyC{+>zO+Co7-fG*WCK3lf2`ja77xCdIcJM{L4twQn8H-rd^0qr!>z zpC{CT;Aue?a88yRHr`;s?8Be{D13=CWoz0|Ee2yh-<$4ialaw=&neLWY7>L+gpw`@ zMNYPYu~3$X_o3h!0oDCc;8oh<6-5a+2t}1dfS0%LKR(E1BMEa08qPhNZ)frTFn|z zPW}$=q3F&r6h8E7r@Eh@VQGmre)D}DLbz}(^&{`0IDqBeo$z9=<-5Xn%u8hJw_yHP z%pIjcFDLr`iztxY4+p6=w_d$hI$p9jlXtV?W5AQgH)w9?_jgRz#X7hmFF8LloEg#L zpjt1wU({nk2RAUaxB2D1Qwmp*^CwGaxzrcFBz-}l6-%t}A!$uo=NgadZcFmh+Zcul zs{mbV08)8uI(Y>C_W~W*WoSfYRs#8l?=$R%nnmoe$QaxAuN_1Y;%ZLY!xncxtudS2 z=d{CXSH6+5wi_#BAw|S1-i^1nJ$Z$f=Rzu{TX#dHtw{EdjJ+NJOf=)lffP-sUra4# zhk{$vn+#4~@U=|FXw*zX1EzYKruTOlU*e~?b5NI)@fe;{179p#uZtH~bRN!hk`lp*0(NfA+E^64Vys*II3D)jL&^^#)?sCWJ19WYemfL|jvZbR0O%m(sax+rp_PwzLS|ugTr}{dWxj z-j}}jAPEq5a^j-8nd-TW)43vSIr3*=WoP%(CDClK4;H$E39SQWJ*zBixt20AaDTS8 zacHTZ5bYm}UdgmMvOGm7LUy({TQkV<-8}iopO)?Rur+yY;*=pqFlBK0PWyg8n7-xg z0b=)%R!AM@)5hiH86^&no-Pviqw|9W%cJs#RN%fQ&_J4J|FmISf-*5tKBaywWLoD5 zS6=7i*0E538v{;(B5d0|vjyy^y1F{~AqxS9tX8v#ZQPiVZfk}KUDX!HFZ(R65Un5p z>}U!K-Ccs~6g)4FJifnZ%@DeZ5n2Y;$TeFYj81C;sQ}#{{p)p;6Ww_a%T$-g;D2Cy zUUrfTdE7QUt_0eT`&*a)Czs>j`~mzefG+LdXa3yPB%^G}JP>?^j7dlcvP2XBfT>yA zPt4eId&Wq0V-Vf1bsdsBY-Ib7i0a|Km;Qbg2AOlThA_`jJ_!KLhE?<^^{3!!)KTtq z43rwh6Xhb^X;h#ns{Yx)e*Y~TeFnbQ{TY{<7Nc{Dz+y7R-(t1~@knhp29kJ2v0*+y zK%z-TN=<}Td|6&%N_uQf@~X>+y3-F5`NXHEzAoN!MX`-=pPjnB#U3N*R?(kx4EoId0nRW7R1we>{0wV$ zo-dmxsRuiHZtiy>c_zStR{Z{3`miG6*xl3I10%GzfUHbRTv}JrUS8XV-FD^)h5r|& zBpcZXvL`{jLd6w-gEX=!XJ=<86qKh`p#7*CWc%j88E;A*(o-{2hP3x z+e;d02*ORaMILvqTWy^>?g%8EaddVIxu*-~XSA9t;#wjSMFdn7^K(5L#A`w3HN-pQ zCw-S}n#})jd)jo=fgZZ!m9h}|Vi8gb?~kD1(?l;+oMr@uOY|8E)a90zYjF1XTxB5F zyrZAgh(I(4|M#O!s*E*_#s04&DxS@gO3n|B9jUhxOjNhWADYq$wOZMi*xH;BlaA;r zjYfJkD(-K~Qs6oQ!HECb9_jGA#Sf?Rc5lk2t?Yt?Xuy>+%c*nunW}+YypmA8kxe^? zym>U#y_lcYzqKkEr6+NUSs@U}oae*crIzNfTYzN!++yoWx)^BjUW5;6py$z{LCU9m zRy^Mme|zIuc$Fv%Z)jTB+M?6B9!p4U5cd9EKo3|QB?yG4B@g6VREv|a4-vmX0`7i< zsR#&oY4B_#_LAP(pOM^7EXvp%hY0HYuoMrDe+OM_?cu(kP+vGHt7O%D>h#zb^x0g0 zXR=ZvL3>lOs0yoa210WnltSc5#0|5>^&_lH;EXnrhw<1jg84_F@s1mAteJaucVC>w ztl!}F_gH4*^onQuX>T|_##4k9BrYy4f_6Jqd#Ni&nucv?JAq6bRhXT?HgyKekyc%c zT3FO@J((6?rV z-WVUcv68H{-QPt#31M2AIXVg<(L?)5Pqcb}7dYKm{9MNFp3KOO$n&9|Aj8x4YE{6} z&rN4@vz}$*Xjvzs*q#Z-=e+=+*M&If*WN#dpq3CDKfJik%T2VkQRev1-3M3G#B&0l zJ9{_6KQ{zN%(tD1DJT|>9QC?hQx+VRlv`937D(lh7$o|>)UaKQcMxQAo%A0q+jQ(6 z13R16A6eDJcz;P4XY9+*IbRWXK2$bkkeT!XK;QiKsF9&KsZu#xRAd^s$M5_QnsG_X z`m~4u`Z=V2{Ft|%cNdCHt}SIo`ISk|0zNvIy&tr%)hVpp?8RXw&zBH`Xe(f7IENCX zD(H*E6{^iJN86A}3KXySeS6nJv>^)^B=LsCxqNeAk*|l+iOml%jytx-`Y89VAP5!L z-C_i3bbJq>v5Lx=lmQv z;m)GBc=^#Qp+&i0u9<6vbfV$$K|6C@i#U;{mCPjdmnG+aB)Rq9)_N)!L89ScIU)0( zxgD?zJG=*nDyeceRlgRSiehE#FAtE4I8dbkq6`F;2+B{y#im0V(8YYCPSY-jgRFGF zlsu3dG`I;4lXwxjJpVD<=R*=ko?J$YZj5{@NUNJ~)Oyx@9v%^`z48<8AA}4tJ@m0} zG*aXVjcs@YO;5UvziRGiHkPn)QNQvRy4JC2IiCLRXrWV{wfpjj`pE8sf6bZdJ~*Tz z6nj)phc9k81*m3o&D(XziGHwQsPqG>ol7%n`*Sv3h`W!yOXStcr>_+isIP#aiWor# z-QK9jcgJ~ql>9p@RwdPBs+r&;veU24)QA_S#>?bwIY0kknJ(5)g7D&wg%Si-W^@Al zc4;JYTg{xUyv(d7cWj%mxRv0e1OJe_n^kr>?@nE~X-BZ4i{OJnvVp69(X^!1@o_WD z_|d75!XLDF+57iLatN)#u8u7}*xxD*-yCB0kAaLX*<6)65<5h&c|LUE%x`tH3ezE{ ziBz>)L|rrF3bXTv#YLeQKt@L;soq3M0hw3akoC#V1YxK)ow%JuWPcJfNREa(fOs1K zGlEPnhLeU+aR|X?RlF{c^trsHr6s-)t4tS#KzJSZUap;Ze4S38{uX`6WE?z4CwN22qP_ua9oI5FT#ck{xGhjOr*jR22Q=yLMuQ4Cq8SsYj8ed_{x||kESgn$_;I0 z>Zd+j8KqGZOwP3d_`b^K_fB@6`H9}8%gd0abZX?NZzE@X7Kv~3%_k{MQl-io>yv&+ zhr>Q+=hG98(iQZhNO^+jdQnlXe_Bce{sjf}dgY0$NE#y!*AkM%>?TdPNFe-4ozJAS zSky);O^rx%d+aKKCGW+H`IjNT|Bh-v`A@q^JvM~I=aBwN=U_H+Jp2vePchI^+eeLh z&RA32g-njW(_rd4jEybVK!_%--Ff{m?RI#{d2n<8;NmnDLo%m9kT1X}eL`tNJ{!Es z{V65aqG7g5MkU#5^8(J9y_zy)&t;LE8^QM>)zp~BrYVp{!!3s3LVJqL>Eh%H#$}+5LEvgs&V-8yaH!DaFd#S{4TqQUDLov^mR; z6ijw%>WUR=oA&n3;*d_ne7fgC{l--7EkStJZ~CWc5g>KRv9`MSYK!y}f$52>X=!0U zSrjHR(!Yy~Qf_rMpp3JV4mJ9&s!Z_q?mny0S9GJJU}$}%MC-&bdZ>qMj7Ds91+nzOEM`GU)*4At1#!8yj`jK_(tO}g}2AeGIC*4+{^LhD=lhm}Z zP+!B2O*;?YF1`1>7Yq{#EHUc3JYMbJer9LCwz?ZPXRUjSOZ``@)sdZ}+*4Xod$@GD zoL!Ee(9o!cJ(BBU(QqZ)3VymJDt^jz{cP!U<2-XvE2b=1Z5K5P1B$E4s8I4~zU=`; z@NwApImxg*SWUS+U7FQ5Q-7*&1NbO?6f`VY*fI2jCK?J6sXi~)O8SV&6A8rg2R>-% zBMX1qoh;_RT=JcP z3uh+up$kdGc>2AdU}|)%VW9Qj@B_Y zfFbNuSn)!FRf^b=ub2+6`YjRgCC*nlF$LFH8CV$5U=?wl5{tBcDL1X@VG8>QqBwj% z=ouYq<^#zvMz*+IJbHlsyLJoW=Ys@lOLY!On>A0rC&yjSPi0>r=6WHVa2!@2uTJew zPe9{u`sDRG=Y__h5%fjByo=3D6~OLU5wzIQd(Wr8(<2Dn(TJZ6A#5Q~CY#27po5*g zZFOFNhr(k*h^6StDJVrb}OeKcE5j*gFvj3-knn@UfM z)+iC&9;-`>2!^oz#irCpfjTfR>x;~&!LGbM~N~Q;m0eT$rI<6D<*=hm)ALTG*zVu_+esPd?E=n);{mflfoQ5zP$Djrx zl0+akCEPM-_>o=;L(!nHke!>myR#D+AYmwnaj~=zUESyz!?Ar8nHl16O%@mA zJfxT}7i%Jwyu8jLB3XWGLsw>!Ry`kbi4VP}{e*@EsucB9lQM`}RC*q+L2|42yT;l4 z$|p&K2cKRbE=8W#7JK^=Or~+UZ1r#c{bZQ;^x@S}QR^W>CbAAPV1yGYFO__!{-EWc zSODDssxEV$a{VA-k1^ZGx}$zC-s@O`z{T=+8GOzWQkgdJ!7w}>)eEwLj~}oLj(} zYt_>zmqsL2iib>F=CHX>w%vJT(=LP6-Oba@UkG-eHc`Y>waY@FH!dH3 zj&gs_I)AsdsLqY}G;Yh34 zC)W1bS0q2XV=Zga+3VZEQ-;F60w&d~&Al>?1})Zj_V%2qtw_Ec_>OddDLET4=DhQq z706zYRAL7I@*0@rWo3(JQQP#{A#r6)nvgp-v8? zrWJ~6O}vPot;%hGl*jA}Jk{?_W6-Iy^-UViq*o?ggM?KGza@O-7eQ4h8ZsH&-7UU& znsK=v`7OY}PUrBi&iTE`JJK0N&G5I;Xjo#@BwL%$d7ZbN>IYnLB15bIkO*XQ{TZG< zg2t8aZSs?0g|avQ_QpPZ;YqEt>WONkP^e=V-J_SOZM|`KcG_{FPI-u|!&&>H#N7Q;V0AV=3eJZY z$@STLIN1g9YCD{o6z)>6>cTMp$jIqa*Q_T4$cO?CyZCWp_AeGqk=a!@uBk=;7~0Qp zgk;!MDk>>;JQ`p?ohbBUeYv`xz*NL%7w-2VZc4_#CwoTwr{U9# zw>(xVvZ9bqYxa$UPIP2MK#91Ej8;?k=fp{ki;1Rz`dV3u2dDnXh8t}Xz@L2ZO*%i6 zK28+xS^F{XiY1T6Ul(frhmy})&iu6p(^8TBX;a0={KGw0eYG&;jtvJ06WS4f%j&Ys zgH9y8c~@!kp!L1O?dN;56YHuVe)7O5== ze)9?p$ZQRlnWg?^XPCYJIdL3ElP+JT(b}p1F6!m`cANW6o0I0trsy6@AJ1!t0&BJi zahgZRJ~|BQ@g2*Ecl}gL`>3+Fmd#Pzd%B z>AHtLcweaB@6DK8?{f?v%^dn<((AZ~5)EY-89LYKy`X8LEiWku6+9@}KA$C`x&PWu zFHE+%v$YB~|2pCOY|9yEJV>*UmlTyU?IM?cp9`*fdJmmulb(QZU|}L*c)lD9qYlCi z)sg`zK*gBvb{+SB7QBj=wYPV~FCi_iVm_Vi3b(W|*SGPwEu8%!gCG@qG8y-?P?~}N ziapb`Pl7!;r>rd624r77YWo0Q{Y(V=3V1d=JcTGJuUen}1PydM|Fpn*1nJU6P3q+Cj7?Gef$@fHU8owkA&uf8bB$8xgf}wI1Bnw0U1<(X*&N-gT0Y&2oAFEVWyBA17Qax7M>jK zHv$xO2xnJ5Lm2OXv3qy7>n(6+E2|PYra5Uazx+Edv$W2DWbmqVDx(lR8_(?ix*S{X z95>j8ozMaCUrMD{QASdWPLIOfEasAr8qASOm#JoPixEt+zv!2=^m#EoQk*IA zd4b_>2xG}*;FqzTX-!p$qW)YoH%x33e~}DfhoDwE$%hcXZ#-gv-B_{x{X^21xnEXZ z{^V*c`t(t2?s?Tgx!E3w(OV(Qm!1c7Ckoytad+TvIHaCG8xsG5nzSp zoA-r%e~08>PF*uUYt>@t+-Vjnjfi{~S3)nHqj*Z=S^6NA3m*vj*fX`WFQU+2eE-qg|9?}&az${&svlLpJl0=C#bB3h5JJcb29b>PC~~1z6(}XYA53ZUBEMkiB)=g&w_>sRk2ufdX4+6`QhIo z2M0&x_9;WyN9q_oYwIWulcA#)5PWiXZ}Y(YaC<$B*YI{By@*7y;`~$KHvlM6kiTyB z8*Vpc`&H}q^p?LykKHs=A6F`YJ~QfAST{5tDhR808 zjE9DtxX-BsO$ZHrcK>hbA^nl-+6<-7pn8e5MW6^8FpzhadH*N#Xrj!!8uv{-R(MxC z7}}&YHB-T$Ber>-VJ&WAqS|=4LmN62gh~opk2wOUQQx77IT9(FEGkm98)_e8SUa#9 z?(FTs=UYJkUs+k1Cgc>>1H63R|5UvLDZQr}uBvtaK`9>Qx3D>_9F0v(Jl<%`pFlm4;{h8~;drM8E=IHF23=mr@o`{{61_&#GX zSuSJ9lbaFiCZg;D<=k`c!0p$e2NM(eGEiuW00b7ZW3~u(zfL6Fh-c$3JVYzkP5>|1uKBAU(>e1MVBYriO}^MMAQ}Wa}rM1!;%K zPp3kKAmEMN=W>TCf0&+VoGbz3(6cD;(7Tzi%mbRQgu|_kn+I-{gFO?4$*vm0W&IaZNZXVSd2uv%0Vd*L=IXSrzksip$u*#-9JhzdVtaCf3d~G z_1)GEhYhF6Wb`B+S|6TAxi&mN= z`~Y3q52SrK%X~$b*T*C0W1Hz~(xNP30WZ9XXM~yhznOT;@zv}DyqP;$K5p6-udPB1 zd<^@}`=Yuu`x8;<-r2~YHwN&^#+>}tKmvRp_>-pGALVT_1?7=tz>CMz?ASlRYL4ocvVHR87& z3u6G_zORDM4LnWQCxfP}se6B)xxmpKTEONj>nL3Y|1z@kD@Ar%mJSS--TNVAZ!DBn zeyN$Bxo%sU{-9HEFZ*$6!D;`)fC;aeB!k}}(a?OwBqniXZz*)NT5Q?<)$ym6SSNyyRzt$`Xbi z?N=Oo7O7Jf#3#3KUsumI9EKQK`}&ql|Mc|nhW_EVpXjB)q$eu!fhmg(9C;u1JJ;-h zB+yLgW;B{Gp1MDnxxewao6K|j6XojR{oljs1{a$)tNTkuJyVc1%|q$w z?!HQGxhBIsz6#?vLt$@+|A2!AyP%*D22jAwU32rI!e6O_#LrP_MLxvlL?`tFP z!%OezIC_Or_n;IQ!>RB_7_HRfEcM8Sr65B7AH5gL%LxuW{HR8jkAD?abJ^5>S(+yP z;}pfYRX>>4)>JRSv)5Qz!MX%d~ z`5G^Nu+nzCVc|EZ-#0^s?bh4|{r74S-D28{svn2M?y`_-$8>blr=YD{s#kM9FYNv* z7Fuqmo2@v8c>XIlUvyq7H2x84__9PZtg0Bj|HI9;gmC?+#mN5&hOL9GUrO<;5z(M@ zctCY*WJC2kX1!+N+Y)OIr@VlfdUqO2>454FjXp5dr;%*aB^ zyM9%#9`lzlSQ~%+oL2i2`Vk66MMdQW0SfL-8IF8%%!H|w>_vuhC(6+DORm0!MEQIm zOF{M*0m?33?>k=I+u5lQ@oY{mF0-0nNl0{Y&(h_4Tv~3m2T57fA?(ke3=T5M&ur#R z=#rAWf~~Zc{$vEF!69|Eco!W@KY%klSJ+neipkKyF%p4_1h5W%O-;AcW-kHTp??cI;c>02Ti#P(XTxb!K>RVbzMcv#~NGpWFBohXMbn?AEM~YGp7)gjd zHhzz}9yVTkn&DxuDn}(5({*BkBf%$mvs?6d)_|BROKvi7S1Q5pYuT+|{uv4lgzt2k zm+Ntoj_#d{(%{h1(UXu-nt;w|bQEH2Vlq=}Lz#Iqo
    ;nHUD21OLIzTD>j==6Ey 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�@G{e7yx)W(;C8*QT>(P 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 literal 0 HcmV?d00001 diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index c2bd7454f2..c4f7b9fe2e 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -5,6 +5,7 @@ import "../style/quiz.css"; import Quiz from "../asset/THELOGO.png"; import Dude from "../asset/dude.png"; import Dude2 from "../asset/thumbs-down.png"; +import Dude3 from "../asset/thinking-dude.png"; const QuizComponent = () => { const navigate = useNavigate(); @@ -15,7 +16,7 @@ const QuizComponent = () => { const [showHint, setShowHint] = useState(false); const [score, setScore] = useState(0); const [hintUsed, setHintUsed] = useState(false); - const [showDudeImage, setShowDudeImage] = useState(false); + const [showDudeImage, setShowDudeImage] = useState(false); // thumbs up const [options, setOptions] = useState([]); const [fiftyOptions, setFiftyOptions] = useState([]); const [clickFifty, setClickFifty] = useState(false); @@ -71,7 +72,8 @@ const QuizComponent = () => { const handleSwitchClick = () => { setCurrentQuestionIndex(prevIndex => prevIndex + 1) } - const [showDude2Image, setShowDude2Image] = useState(false); + const [showDude2Image, setShowDude2Image] = useState(false); // thumbs down + const [showDude3Image, setShowDude3Image] = useState(true); // thinking face const [startTime, setStartTime] = useState(null); useEffect(() => { @@ -118,10 +120,13 @@ const QuizComponent = () => { setShowDudeImage(true); setShowDude2Image(false); - // setTimeout(() => { - // setShowDudeImage(false); + setShowDude3Image(false); + + setTimeout(() => { + setShowDudeImage(false); + setShowDude3Image(true); handleNextClick(); - // }, 1500); + }, 1500); } else { console.log("Wrong answer!"); @@ -129,12 +134,16 @@ const QuizComponent = () => { setScore((prevScore) => prevScore); setShowDudeImage(false); setShowDude2Image(true); + setShowDude3Image(false); setScore((prevScore) => prevScore - 10); - // setTimeout(() => { - // setShowDude2Image(false); + + setTimeout(() => { + setShowDude2Image(false); + setShowDude3Image(true); handleNextClick(); - // }, 1500); - } + }, 1500); + } + }; const handleHintClick = () => { @@ -148,6 +157,7 @@ const QuizComponent = () => { console.log("Quiz completed! Remaining lives:", lives); try { + setScore((prevScore) => prevScore); await navigate("/congrads", { state: { score, lives, startTime } }); // pass the score as state } catch (error) { console.error("Error navigating to /congrads:", error); @@ -206,6 +216,7 @@ const QuizComponent = () => { {showDudeImage && Dude} {showDude2Image && Dude2} + {showDude3Image && Dude3}

    Lives: {Array.from({ length: lives }, (_, index) => '❤️').join(' ')}

    Score: {score}

    {showHint &&

    Hint: {currentQuestion.hint}

    } diff --git a/react-front-end/src/style/quiz.css b/react-front-end/src/style/quiz.css index 51d6ca144a..a074eb087d 100644 --- a/react-front-end/src/style/quiz.css +++ b/react-front-end/src/style/quiz.css @@ -72,4 +72,9 @@ .dude2 { width: 200px; +} + +.dude3 { + width: 170px; + } \ No newline at end of file From 87c145ac071bae6f34ee8a078a1e65608fa4ee70 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Mon, 30 Oct 2023 21:06:24 -0300 Subject: [PATCH 087/184] fixed last score not updating to congrads page problem --- react-front-end/src/components/quiz.js | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index c4f7b9fe2e..85278d1f35 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -109,13 +109,19 @@ const QuizComponent = () => { // console log for debugging console.log('correct index:', correctIndex); + let lastScore = 0; + if (selectedAnswer === correctIndex) { // Handle correct answer logic console.log("Correct answer!"); + + if (hintUsed || clickFifty) { setScore((prevScore) => prevScore + 10); + lastScore = 10 } else { setScore((prevScore) => prevScore + 20); + lastScore = 20 } setShowDudeImage(true); @@ -125,22 +131,22 @@ const QuizComponent = () => { setTimeout(() => { setShowDudeImage(false); setShowDude3Image(true); - handleNextClick(); + handleNextClick(lastScore); }, 1500); } else { console.log("Wrong answer!"); setLives((prevLives) => prevLives - 1); - setScore((prevScore) => prevScore); + // setScore((prevScore) => prevScore); setShowDudeImage(false); setShowDude2Image(true); setShowDude3Image(false); setScore((prevScore) => prevScore - 10); - +lastScore = -10 setTimeout(() => { setShowDude2Image(false); setShowDude3Image(true); - handleNextClick(); + handleNextClick(lastScore); }, 1500); } @@ -151,14 +157,16 @@ const QuizComponent = () => { setShowHint(true); // Show the hint }; - const handleNextClick = async () => { + const handleNextClick = async (lastScore) => { if (currentQuestionIndex === questions.length - 1) { // Quiz completed console.log("Quiz completed! Remaining lives:", lives); try { - setScore((prevScore) => prevScore); - await navigate("/congrads", { state: { score, lives, startTime } }); // pass the score as state + // setScore((prevScore) => prevScore); + console.log('score:', score) + console.log('last score:', lastScore); + await navigate("/congrads", { state: { score: score + lastScore, lives, startTime } }); // pass the score as state } catch (error) { console.error("Error navigating to /congrads:", error); } From d55c1345d34ee8c0183b3d7098e64577ca1b0c3f Mon Sep 17 00:00:00 2001 From: ychento Date: Mon, 30 Oct 2023 23:09:05 -0400 Subject: [PATCH 088/184] styling front page --- express-back-end/server.js | 2 +- react-front-end/src/components/quiz.js | 3 +++ react-front-end/src/components/timer.js | 0 react-front-end/src/style/App.css | 2 +- react-front-end/src/style/index.css | 1 + react-front-end/src/style/instruction.css | 2 +- 6 files changed, 7 insertions(+), 3 deletions(-) delete mode 100644 react-front-end/src/components/timer.js diff --git a/express-back-end/server.js b/express-back-end/server.js index 8e7ece8a18..80d7201403 100644 --- a/express-back-end/server.js +++ b/express-back-end/server.js @@ -8,7 +8,7 @@ const database = knex(config); const cors = require("cors"); app.use(cors( - { origin: "http://localhost:3002" } + { origin: "http://localhost:3000" } )); const PORT = 8080; diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index b26a868580..eb46b0fa28 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -28,6 +28,9 @@ const QuizComponent = () => { 3: "D", }; + const timerDuration = 300; // 5 minutes in seconds + const [timer, setTimer] = useState(timerDuration); + useEffect(() => { if (questions.length > 0 && currentQuestionIndex < questions.length) { setOptions([ diff --git a/react-front-end/src/components/timer.js b/react-front-end/src/components/timer.js deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/react-front-end/src/style/App.css b/react-front-end/src/style/App.css index 05bece3479..9290776d83 100644 --- a/react-front-end/src/style/App.css +++ b/react-front-end/src/style/App.css @@ -56,7 +56,7 @@ } .home { - height: 100vh; + height: 100%; display: flex; justify-content: center; align-items: center; diff --git a/react-front-end/src/style/index.css b/react-front-end/src/style/index.css index cee5f348fb..4bf9638837 100644 --- a/react-front-end/src/style/index.css +++ b/react-front-end/src/style/index.css @@ -12,3 +12,4 @@ code { font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; } + diff --git a/react-front-end/src/style/instruction.css b/react-front-end/src/style/instruction.css index a0b45d3f5c..0d2dc09a40 100644 --- a/react-front-end/src/style/instruction.css +++ b/react-front-end/src/style/instruction.css @@ -41,7 +41,7 @@ bottom: 90px; .div-style { background: linear-gradient(to right, #9c0fbb, #770890); - height: 100vh; + height: 100%; display: flex; justify-content: center; align-items: center; From af793d3aa9d45bc13e4bba151ce47de4abade57d Mon Sep 17 00:00:00 2001 From: ychento Date: Mon, 30 Oct 2023 23:56:09 -0400 Subject: [PATCH 089/184] edit css code for quiz page - choices --- react-front-end/src/components/quiz.js | 20 ++++++++++++++---- react-front-end/src/style/congrads.css | 2 +- react-front-end/src/style/instruction.css | 2 +- react-front-end/src/style/quiz.css | 25 +++++++++++++++++++---- 4 files changed, 39 insertions(+), 10 deletions(-) diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index eb46b0fa28..be01deb31c 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -21,6 +21,21 @@ const QuizComponent = () => { const [fiftyOptions, setFiftyOptions] = useState([]); const [clickFifty, setClickFifty] = useState(false); + + const timerDuration = 300; // 5 minutes in seconds + const [timer, setTimer] = useState(timerDuration); + + useEffect(() => { + const timerInterval = setInterval(() => { + if (timer > 0) { + setTimer(timer - 1); + } + }, 1000); + + return () => clearInterval(timerInterval); + }, [timer]); + + const optionLabel = { 0: "A", 1: "B", @@ -28,9 +43,7 @@ const QuizComponent = () => { 3: "D", }; - const timerDuration = 300; // 5 minutes in seconds - const [timer, setTimer] = useState(timerDuration); - + useEffect(() => { if (questions.length > 0 && currentQuestionIndex < questions.length) { setOptions([ @@ -246,7 +259,6 @@ const QuizComponent = () => { Time Left: {Math.floor(timer / 60)}: {(timer % 60).toString().padStart(2, "0")}

    {" "} - // show timer {showHint &&

    Hint: {currentQuestion.hint}

    } -
    From a15e2a315e1d89367053738e5bd62d5ba6c19ae6 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Tue, 31 Oct 2023 19:22:52 -0300 Subject: [PATCH 095/184] added some styling to the front and instructions page --- react-front-end/src/components/home.js | 62 ++++++++++++------- react-front-end/src/components/instruction.js | 8 +-- react-front-end/src/components/quiz.js | 2 +- react-front-end/src/style/App.css | 39 +++++++++++- react-front-end/src/style/instruction.css | 25 ++++++++ react-front-end/src/style/quiz.css | 5 +- 6 files changed, 110 insertions(+), 31 deletions(-) diff --git a/react-front-end/src/components/home.js b/react-front-end/src/components/home.js index 67bd62f172..6d1bd9cd2d 100644 --- a/react-front-end/src/components/home.js +++ b/react-front-end/src/components/home.js @@ -32,32 +32,50 @@ function Home() { handleAudio(sounds.click1) } - return ( - + + return (
    - -
    -
    - quizjs -
    -
    - - - - brandon +
    + +
    +
    +
    + quizjs +
    +

    QuizJS is a series of questions that defy conventional thinking and logic.

    +

    Test your wit against a series of fun, unexpected, and absurd questions!

    +
    +
    +
    + + brandon +
    +
    + + +
    +
    - -
    ); + + } export default Home; \ No newline at end of file diff --git a/react-front-end/src/components/instruction.js b/react-front-end/src/components/instruction.js index 8a5a00e5c4..3ce14307db 100644 --- a/react-front-end/src/components/instruction.js +++ b/react-front-end/src/components/instruction.js @@ -28,21 +28,21 @@ function Instruction() {

    Welcome to QuizJS

    -

    QuizJS is a series of questions that defy conventional thinking and logic. Test your wit against a series of fun, unexpected, and absurd questions! -

    +

    Starting Lives:

      -
    • You begin the game with 5 lives
    • +
    • You begin the game with 5 lives ❤️❤️❤️❤️❤️

    Answering Questions:

    • Each Question provides 4 choices
    • Correct Answer: +20 points
    • -
    • Correct Answer with Hint: +10 points
    • +
    • Correct Answer with Hint: +10 points, Wrong Answer: -10 points
    • Incorrect Answer: Lose 1 life, 0 points
    • Skip the Question: 0 points, no lives lost
    • 50:50: eliminates 2 wrong answers, 10 points
    • Swap: no lives lost or points just your Question get switched
    • +
    • Time limit: you have a 5 minute time limit to complete all the questions

    Lives:

      diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 13a7d9ed35..5d2c066a27 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -222,7 +222,7 @@ const QuizComponent = () => { return (
      quizjs -
      +

      Round {currentRound}

      {`Question: ${currentQuestionNumber}/${totalQuestions}`}

      {currentQuestion.question}

      diff --git a/react-front-end/src/style/App.css b/react-front-end/src/style/App.css index dc9c78db8d..97e3a441ac 100644 --- a/react-front-end/src/style/App.css +++ b/react-front-end/src/style/App.css @@ -11,6 +11,11 @@ cursor: pointer; } +div-style { + background: linear-gradient(to right, #9c0fbb, #770890); + +} + .rectangle-button:hover { background-color: #e0e000; } @@ -63,7 +68,37 @@ flex-direction: column; } -img { - width: 500px +.quiz { + width: 500px; + padding-left: 500px; +} + +.dude-container { + display: flex; + align-items: center; + padding-left: 500px; +} + +.start { + display: flex; + padding-left: 490px; +} + +.dude { +padding-left: 20px; +} + +.top-page { + display: flex; +} + +.des { + display: flex; + flex-direction: column; + align-items: center; + text-align: center; } +.des h2 { + margin: 10px 0; /* Adjust the margin as needed for spacing */ +} \ No newline at end of file diff --git a/react-front-end/src/style/instruction.css b/react-front-end/src/style/instruction.css index a0b45d3f5c..cae47330d0 100644 --- a/react-front-end/src/style/instruction.css +++ b/react-front-end/src/style/instruction.css @@ -29,6 +29,7 @@ .welcome { position: relative; bottom: 90px; + font-family: Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif; } .how-to-play { display: flex; @@ -59,4 +60,28 @@ font-size: large; .bold { font-weight: bold; font-size: large; + font-family:'Segoe UI', Tahoma, Geneva, Verdana, sans-serif +} + +.rectangle-button { + width: 150px; + height: 50px; + background-color: #ffff00; + color: #000000; + border: 8px solid #000000; + border-radius: 5px; + font-size: 18px; + font-family: "Pixelify Sans", sans-serif; + margin: 10px; + cursor: pointer; +} + +p { + font-family: Georgia, 'Times New Roman', Times, serif; + font-weight: bold; +} + +li { + font-family: Georgia, 'Times New Roman', Times, serif; + font-size: larger; } \ No newline at end of file diff --git a/react-front-end/src/style/quiz.css b/react-front-end/src/style/quiz.css index 26629cd403..0b5ca3fc56 100644 --- a/react-front-end/src/style/quiz.css +++ b/react-front-end/src/style/quiz.css @@ -10,11 +10,11 @@ } .game { - width: 50%; + width: 80%; height: 80%; background-color: white; border: 2px solid black; - padding: 5px; + padding: 10px 25px; box-sizing: border-box; } @@ -58,6 +58,7 @@ .buttons:hover { border: 2px yellow solid; background-color: yellow; + cursor: pointer; } From ba5a8be6c74c7acbb606ac34ed05dee620ccb4d9 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Wed, 1 Nov 2023 15:37:30 -0300 Subject: [PATCH 096/184] added styling to front page --- react-front-end/package-lock.json | 6 + react-front-end/package.json | 1 + react-front-end/src/components/HighScores.js | 6 +- react-front-end/src/components/home.js | 8 +- react-front-end/src/style/App.css | 99 --------------- react-front-end/src/style/home.css | 119 +++++++++++++++++++ react-front-end/src/style/instruction.css | 1 + react-front-end/src/style/quiz.css | 6 +- 8 files changed, 142 insertions(+), 104 deletions(-) create mode 100644 react-front-end/src/style/home.css diff --git a/react-front-end/package-lock.json b/react-front-end/package-lock.json index ccc0cfb00a..0062250f26 100644 --- a/react-front-end/package-lock.json +++ b/react-front-end/package-lock.json @@ -8,6 +8,7 @@ "name": "react-front-end", "version": "0.1.0", "dependencies": { + "animate.css": "^4.1.1", "axios": "^0.18.1", "react": "^16.8.6", "react-dom": "^16.8.6", @@ -2719,6 +2720,11 @@ "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==" }, + "node_modules/animate.css": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/animate.css/-/animate.css-4.1.1.tgz", + "integrity": "sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ==" + }, "node_modules/ansi-colors": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", diff --git a/react-front-end/package.json b/react-front-end/package.json index b8aa50a04f..cf51ffc1ba 100644 --- a/react-front-end/package.json +++ b/react-front-end/package.json @@ -3,6 +3,7 @@ "version": "0.1.0", "private": true, "dependencies": { + "animate.css": "^4.1.1", "axios": "^0.18.1", "react": "^16.8.6", "react-dom": "^16.8.6", diff --git a/react-front-end/src/components/HighScores.js b/react-front-end/src/components/HighScores.js index 1fcdc4b3c9..5608b75c1c 100644 --- a/react-front-end/src/components/HighScores.js +++ b/react-front-end/src/components/HighScores.js @@ -1,6 +1,6 @@ // highscores.js import React, { useState, useEffect } from 'react'; - +import "../style/home.css"; function HighScores() { const [highScores, setHighScores] = useState([]); @@ -30,8 +30,12 @@ function HighScores() {
      {highScores.map((score, index) => (
      +
        +
      • {score.nickname} {score.score} +
      • +
      ))}
      diff --git a/react-front-end/src/components/home.js b/react-front-end/src/components/home.js index 6d1bd9cd2d..ae385b2cc5 100644 --- a/react-front-end/src/components/home.js +++ b/react-front-end/src/components/home.js @@ -1,4 +1,5 @@ import "../style/App.css"; +import "../style/home.css"; import React from "react"; import Quiz from "../asset/THELOGO.png"; import { useNavigate } from "react-router-dom"; @@ -6,6 +7,7 @@ import HighScores from "./HighScores"; import { useState, useEffect } from "react"; import Brandon from "../asset/brandon.png"; import { handleAudio, sounds } from "./SoundHelper"; +import 'animate.css'; function Home() { const [highScores, setHighScores] = useState([]); @@ -41,10 +43,10 @@ function Home() {
      - quizjs + quizjs
      -

      QuizJS is a series of questions that defy conventional thinking and logic.

      -

      Test your wit against a series of fun, unexpected, and absurd questions!

      +

      QuizJS is a series of questions that defy conventional thinking and logic.

      +

      Test your wit against a series of fun, unexpected, and absurd questions!

      diff --git a/react-front-end/src/style/App.css b/react-front-end/src/style/App.css index 97e3a441ac..1e2cc9f104 100644 --- a/react-front-end/src/style/App.css +++ b/react-front-end/src/style/App.css @@ -1,104 +1,5 @@ -.rectangle-button { - width: 300px; - height: 100px; - background-color: #ffff00; - color: #000000; - border: 8px solid #000000; - border-radius: 5px; - font-size: 30px; - font-family: "Pixelify Sans", sans-serif; - margin: 10px; - cursor: pointer; -} - div-style { background: linear-gradient(to right, #9c0fbb, #770890); } -.rectangle-button:hover { - background-color: #e0e000; -} - -.score-box { - background-color: #ffff00; - color: #000000; - border: 8px solid #000000; - border-radius: 5px; - width: 800px; - padding: 40px; - font-family: "YourFontFamily", sans-serif; - font-size: 18px; - text-align: center; -} - -.score-columns { - display: flex; - justify-content: space-between; - margin-top: 20px; - flex-direction: column; - flex-wrap: wrap; - max-height: 140px; - gap: 5px; -} - -.score-column { - width: 30%; -} - -.score-row { - display: flex; - justify-content: space-around; - align-items: center; -} - -.player-name { - text-align: left; -} - -.player-score { - text-align: right; -} - -.home { - height: 100vh; - display: flex; - justify-content: center; - align-items: center; - flex-direction: column; -} - -.quiz { - width: 500px; - padding-left: 500px; -} - -.dude-container { - display: flex; - align-items: center; - padding-left: 500px; -} - -.start { - display: flex; - padding-left: 490px; -} - -.dude { -padding-left: 20px; -} - -.top-page { - display: flex; -} - -.des { - display: flex; - flex-direction: column; - align-items: center; - text-align: center; -} - -.des h2 { - margin: 10px 0; /* Adjust the margin as needed for spacing */ -} \ No newline at end of file diff --git a/react-front-end/src/style/home.css b/react-front-end/src/style/home.css new file mode 100644 index 0000000000..48a31769ca --- /dev/null +++ b/react-front-end/src/style/home.css @@ -0,0 +1,119 @@ +.content-container { + margin-right: 150px; +} + +.rectangle-button { + width: 300px; + height: 100px; + background-color: #ffff00; + color: #000000; + border: 8px solid #000000; + border-radius: 5px; + font-size: 30px; + font-family: "Pixelify Sans", sans-serif; + margin: 10px; + cursor: pointer; +} + +.rectangle-button:hover { + background-color: #e0e000; +} + +.score-box { + background-color: #ffff00; + color: #000000; + border: 8px solid #000000; + border-radius: 5px; + width: 800px; + padding: 40px; + font-family: "YourFontFamily", sans-serif; + font-size: 18px; + text-align: center; +} + +.score-columns { + display: flex; + justify-content: space-between; + margin-top: 20px; + flex-direction: column; + flex-wrap: wrap; + max-height: 350px; + gap: 5px; +} + +.score-column { + width: 30%; +} + + + +.player-name { + text-align: left; +} + +.player-score { + text-align: right; + padding: 0 5px; +} + +.home { + height: 100vh; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; +} + +img { + width: 500px; + padding-left: 500px; +} +.dude-container { + display: flex; + align-items: center; + padding-left: 500px; +} + +.start { + display: flex; + padding-left: 490px; +} + +.dude { +padding-left: 20px; +} + +.top-page { + display: flex; + +} + +.des { + display: flex; + flex-direction: column; + align-items: center; + text-align: center; +} + +.des h2 { + margin: 10px 0; /* Adjust the margin as needed for spacing */ +} + +.score-row { +width: 180px; +} + +.list { + padding: 0; + display: grid; + gap: 1em; + grid-template-columns: 1fr 1fr 1fr; +} + +.score { + list-style-type: none; + display: flex; + justify-content: space-between; + padding: 0 1em; + +} \ No newline at end of file diff --git a/react-front-end/src/style/instruction.css b/react-front-end/src/style/instruction.css index cae47330d0..c6d18cb1c1 100644 --- a/react-front-end/src/style/instruction.css +++ b/react-front-end/src/style/instruction.css @@ -15,6 +15,7 @@ .instruction-image { width: 1000px; +margin-right: 500px; } .instruction-container { diff --git a/react-front-end/src/style/quiz.css b/react-front-end/src/style/quiz.css index 0b5ca3fc56..be99e859cc 100644 --- a/react-front-end/src/style/quiz.css +++ b/react-front-end/src/style/quiz.css @@ -1,4 +1,6 @@ - +img { + padding-right: 500px; +} .container { display: flex; @@ -21,6 +23,7 @@ .logo { width: 400px; + } .round { @@ -46,6 +49,7 @@ list-style: none; padding: 0; margin: 0; + } .buttons { From d7de2e3e8fdf25fa1d0d9e2b9f42fb9ae33f34d1 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Wed, 1 Nov 2023 17:40:26 -0300 Subject: [PATCH 097/184] merge --- react-front-end/src/components/home.js | 16 +++--- react-front-end/src/components/quiz.js | 2 +- react-front-end/src/style/home.css | 70 +++++++++++++---------- react-front-end/src/style/instruction.css | 2 +- react-front-end/src/style/quiz.css | 4 +- 5 files changed, 53 insertions(+), 41 deletions(-) diff --git a/react-front-end/src/components/home.js b/react-front-end/src/components/home.js index ae385b2cc5..21b1db5ba8 100644 --- a/react-front-end/src/components/home.js +++ b/react-front-end/src/components/home.js @@ -38,15 +38,17 @@ function Home() { return (
      -
      - -
      - quizjs -
      -

      QuizJS is a series of questions that defy conventional thinking and logic.

      -

      Test your wit against a series of fun, unexpected, and absurd questions!

      +
      + quizjs +
      +
      +

      QuizJS is a series of questions that defy conventional thinking and logic.

      +

      Test your wit against a series of fun, unexpected, and absurd questions!

      +
      +
      +
      diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 5d2c066a27..057bd704b3 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -251,7 +251,7 @@ const QuizComponent = () => {

      Lives: {Array.from({ length: lives }, (_, index) => "❤️").join(" ")}

      -

      Score: {score}

      +

      Score: {score}

      Time Left: {Math.floor(timer / 60)}: {(timer % 60).toString().padStart(2, "0")} diff --git a/react-front-end/src/style/home.css b/react-front-end/src/style/home.css index 48a31769ca..29bb17d113 100644 --- a/react-front-end/src/style/home.css +++ b/react-front-end/src/style/home.css @@ -31,31 +31,10 @@ text-align: center; } -.score-columns { - display: flex; - justify-content: space-between; - margin-top: 20px; - flex-direction: column; - flex-wrap: wrap; - max-height: 350px; - gap: 5px; -} - .score-column { width: 30%; } - - -.player-name { - text-align: left; -} - -.player-score { - text-align: right; - padding: 0 5px; -} - .home { height: 100vh; display: flex; @@ -63,11 +42,15 @@ align-items: center; flex-direction: column; } +.quizjs { + display: flex; + } + +.quizjs img { + display: flex; + max-height: 200px; + } -img { - width: 500px; - padding-left: 500px; -} .dude-container { display: flex; align-items: center; @@ -85,7 +68,7 @@ padding-left: 20px; .top-page { display: flex; - +justify-content: center; } .des { @@ -95,25 +78,52 @@ padding-left: 20px; text-align: center; } -.des h2 { +.des h1 { margin: 10px 0; /* Adjust the margin as needed for spacing */ +/* max-width: 20%; */ +} + +.player-name { + text-align: left; +} + +.player-score { + text-align: right; + padding: 0 5px; +} + +.score-columns { + display: flex; + /* justify-content: space-between; */ + margin-top: 20px; + flex-direction: column; + flex-wrap: wrap; + max-height: 350px; } .score-row { width: 180px; +display: flex; + } -.list { +.list { padding: 0; display: grid; gap: 1em; grid-template-columns: 1fr 1fr 1fr; + display: flex; + justify-content: space-between; } -.score { +.score { list-style-type: none; display: flex; justify-content: space-between; - padding: 0 1em; +width: 100%; + +} +.des-container { + max-width: 500px; } \ No newline at end of file diff --git a/react-front-end/src/style/instruction.css b/react-front-end/src/style/instruction.css index c6d18cb1c1..e7bd95e967 100644 --- a/react-front-end/src/style/instruction.css +++ b/react-front-end/src/style/instruction.css @@ -15,7 +15,7 @@ .instruction-image { width: 1000px; -margin-right: 500px; +/* margin-right: 500px; */ } .instruction-container { diff --git a/react-front-end/src/style/quiz.css b/react-front-end/src/style/quiz.css index be99e859cc..d19b22fc8e 100644 --- a/react-front-end/src/style/quiz.css +++ b/react-front-end/src/style/quiz.css @@ -1,5 +1,5 @@ img { - padding-right: 500px; + } .container { @@ -70,7 +70,7 @@ img { font-size: 30px; } -.score { +.your-score { font-size: 30px; } From a053d341c4d07379893ea501b9e99bb2a951c6be Mon Sep 17 00:00:00 2001 From: nick stilwell Date: Wed, 1 Nov 2023 21:07:40 +0000 Subject: [PATCH 098/184] add css normalizer --- react-front-end/package-lock.json | 184 ++++++++++++++++++++++++++++-- react-front-end/package.json | 5 +- react-front-end/src/App.js | 1 + 3 files changed, 181 insertions(+), 9 deletions(-) diff --git a/react-front-end/package-lock.json b/react-front-end/package-lock.json index 0062250f26..6e5f47f36b 100644 --- a/react-front-end/package-lock.json +++ b/react-front-end/package-lock.json @@ -8,12 +8,15 @@ "name": "react-front-end", "version": "0.1.0", "dependencies": { + "@csstools/normalize.css": "^12.0.0", "animate.css": "^4.1.1", "axios": "^0.18.1", + "postcss-normalize": "^10.0.1", "react": "^16.8.6", "react-dom": "^16.8.6", "react-router-dom": "^6.17.0", - "react-scripts": "2.1.8" + "react-scripts": "2.1.8", + "sanitize.css": "^13.0.0" }, "devDependencies": { "@babel/core": "^7.23.2", @@ -2046,6 +2049,11 @@ "node": ">=4.0.0" } }, + "node_modules/@csstools/normalize.css": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.0.0.tgz", + "integrity": "sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==" + }, "node_modules/@jest/types": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", @@ -5565,6 +5573,19 @@ "webpack": "^4.0.0" } }, + "node_modules/css-loader/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/css-prefers-color-scheme": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", @@ -10020,6 +10041,19 @@ "postcss": "^6.0.1" } }, + "node_modules/icss-utils/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/identity-obj-proxy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", @@ -12562,6 +12596,24 @@ "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", "optional": true }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -13580,16 +13632,31 @@ } }, "node_modules/postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true, "dependencies": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" }, "engines": { - "node": ">=4.0.0" + "node": "^10 || ^12 || >=14" } }, "node_modules/postcss-attribute-case-insensitive": { @@ -13617,6 +13684,18 @@ "url": "https://opencollective.com/postcss/" } }, + "node_modules/postcss-browser-comments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz", + "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==", + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "browserslist": ">=4", + "postcss": ">=8" + } + }, "node_modules/postcss-calc": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", @@ -14698,6 +14777,19 @@ "postcss": "^6.0.1" } }, + "node_modules/postcss-modules-extract-imports/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/postcss-modules-local-by-default": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", @@ -14707,6 +14799,19 @@ "postcss": "^6.0.1" } }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/postcss-modules-scope": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", @@ -14716,6 +14821,19 @@ "postcss": "^6.0.1" } }, + "node_modules/postcss-modules-scope/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/postcss-modules-values": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", @@ -14725,6 +14843,19 @@ "postcss": "^6.0.1" } }, + "node_modules/postcss-modules-values/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/postcss-nesting": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", @@ -14752,6 +14883,23 @@ "url": "https://opencollective.com/postcss/" } }, + "node_modules/postcss-normalize": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz", + "integrity": "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==", + "dependencies": { + "@csstools/normalize.css": "*", + "postcss-browser-comments": "^4", + "sanitize.css": "*" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "browserslist": ">= 4", + "postcss": ">= 8" + } + }, "node_modules/postcss-normalize-charset": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", @@ -15485,6 +15633,12 @@ "node": ">=6.14.4" } }, + "node_modules/postcss/node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "peer": true + }, "node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -17332,6 +17486,11 @@ "node": ">=0.10.0" } }, + "node_modules/sanitize.css": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz", + "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==" + }, "node_modules/sass-loader": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz", @@ -17985,6 +18144,15 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-resolve": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", diff --git a/react-front-end/package.json b/react-front-end/package.json index cf51ffc1ba..bce4bb34da 100644 --- a/react-front-end/package.json +++ b/react-front-end/package.json @@ -3,12 +3,15 @@ "version": "0.1.0", "private": true, "dependencies": { + "@csstools/normalize.css": "^12.0.0", "animate.css": "^4.1.1", "axios": "^0.18.1", + "postcss-normalize": "^10.0.1", "react": "^16.8.6", "react-dom": "^16.8.6", "react-router-dom": "^6.17.0", - "react-scripts": "2.1.8" + "react-scripts": "2.1.8", + "sanitize.css": "^13.0.0" }, "scripts": { "start": "react-scripts start", diff --git a/react-front-end/src/App.js b/react-front-end/src/App.js index 2022e709ed..5d057f1e2d 100644 --- a/react-front-end/src/App.js +++ b/react-front-end/src/App.js @@ -1,3 +1,4 @@ +import "@csstools/normalize.css" import "./style/App.css"; import React from 'react'; import { useState } from "react"; From b544156c08581612dd8f77be35e77505aa097773 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Wed, 1 Nov 2023 19:25:25 -0300 Subject: [PATCH 099/184] added a header components for logo description and mute button --- react-front-end/src/components/congrads.js | 4 +- react-front-end/src/components/header.js | 58 +++++++++++++++++++ react-front-end/src/components/home.js | 18 ++---- react-front-end/src/components/instruction.js | 4 +- react-front-end/src/components/quiz.js | 4 +- 5 files changed, 68 insertions(+), 20 deletions(-) create mode 100644 react-front-end/src/components/header.js diff --git a/react-front-end/src/components/congrads.js b/react-front-end/src/components/congrads.js index 97e32712ba..9265922fb9 100644 --- a/react-front-end/src/components/congrads.js +++ b/react-front-end/src/components/congrads.js @@ -1,8 +1,8 @@ import React, { useEffect, useState } from 'react'; import { useNavigate, useLocation } from 'react-router-dom'; import "../style/congrads.css"; -import Quiz from "../asset/THELOGO.png"; import 'whatwg-fetch'; +import Header from "./header" const Congrats = ({ onLeaderboardUpdate }) => { const navigate = useNavigate(); @@ -122,7 +122,7 @@ const nicknameValidation = await validateNickname(name);

      Congratulations!

      ON

      COMPLETING

      - quizjs +

      Your final score: {score}

      {completionTime && (

      Time taken to complete the quiz: {formatTime(completionTime)}

      diff --git a/react-front-end/src/components/header.js b/react-front-end/src/components/header.js new file mode 100644 index 0000000000..57d7e9e61d --- /dev/null +++ b/react-front-end/src/components/header.js @@ -0,0 +1,58 @@ +import React from "react"; +import InstructionImage from "../asset/instruction.png"; +import Quiz from "../asset/THELOGO.png"; +import 'animate.css'; + +function header(props) { + + if (props.page === "home") { + return ( +
      +
      + quizjs +
      +
      +
      +

      QuizJS is a series of questions that defy conventional thinking and logic.

      +

      Test your wit against a series of fun, unexpected, and absurd questions!

      +
      +
      +
      + ) + } + + if (props.page === "instructions") { + return ( + quizjs + ) + } + + if (props.page === "quiz") { + return ( +
      +
      + quizjs +
      +
      + ) + } + + if (props.page === "congrads") { + return ( +
      +
      + quizjs +
      +
      + ) + } + + else { + return ( +

      header

      + ) + } +}; + + +export default header; \ No newline at end of file diff --git a/react-front-end/src/components/home.js b/react-front-end/src/components/home.js index 21b1db5ba8..796df1fff4 100644 --- a/react-front-end/src/components/home.js +++ b/react-front-end/src/components/home.js @@ -1,14 +1,14 @@ import "../style/App.css"; import "../style/home.css"; import React from "react"; -import Quiz from "../asset/THELOGO.png"; + import { useNavigate } from "react-router-dom"; import HighScores from "./HighScores"; import { useState, useEffect } from "react"; import Brandon from "../asset/brandon.png"; import { handleAudio, sounds } from "./SoundHelper"; import 'animate.css'; - +import Header from "./header"; function Home() { const [highScores, setHighScores] = useState([]); const navigate = useNavigate(); @@ -37,20 +37,10 @@ function Home() { return (
      +
      -
      -
      - quizjs -
      -
      -

      QuizJS is a series of questions that defy conventional thinking and logic.

      -

      Test your wit against a series of fun, unexpected, and absurd questions!

      -
      -
      - -
      -
      +
      brandon diff --git a/react-front-end/src/components/instruction.js b/react-front-end/src/components/instruction.js index 3ce14307db..89e9137b55 100644 --- a/react-front-end/src/components/instruction.js +++ b/react-front-end/src/components/instruction.js @@ -1,7 +1,7 @@ import "../style/instruction.css"; import React from "react"; -import InstructionImage from "../asset/instruction.png"; import { useNavigate } from "react-router-dom"; +import Header from "./header" function Instruction() { @@ -22,7 +22,7 @@ function Instruction() { return (
      - quizjs +
      diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 057bd704b3..9c3d1f12d9 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -2,10 +2,10 @@ import React, { useState, useEffect } from "react"; import { useNavigate } from "react-router-dom"; import "../style/quiz.css"; -import Quiz from "../asset/THELOGO.png"; import Dude from "../asset/dude.png"; import Dude2 from "../asset/thumbs-down.png"; import Dude3 from "../asset/thinking-dude.png"; +import Header from "./header"; const QuizComponent = () => { const navigate = useNavigate(); @@ -221,7 +221,7 @@ const QuizComponent = () => { return (
      - quizjs +

      Round {currentRound}

      {`Question: ${currentQuestionNumber}/${totalQuestions}`}

      From 88bf9b68ebd3b681123dd4ee81127eb44ccaecf0 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Wed, 1 Nov 2023 19:39:36 -0300 Subject: [PATCH 100/184] changed max nickname length to 12 --- express-back-end/server.js | 2 +- react-front-end/src/components/congrads.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/express-back-end/server.js b/express-back-end/server.js index 80d7201403..48ad00a1eb 100644 --- a/express-back-end/server.js +++ b/express-back-end/server.js @@ -115,7 +115,7 @@ app.get('/api/high-scores', (req, res) => { return res.status(400).json({ error: 'Nickname must contain only numbers and characters A-Z' }); } - if (trimmedNickname.length > 20) { + if (trimmedNickname.length > 12) { return res.status(400).json({ error: 'Nickname is too long' }); } diff --git a/react-front-end/src/components/congrads.js b/react-front-end/src/components/congrads.js index 9265922fb9..d5f5c4f272 100644 --- a/react-front-end/src/components/congrads.js +++ b/react-front-end/src/components/congrads.js @@ -54,8 +54,8 @@ const validateNickname = async (nickname) => { const trimmedName = name.trim(); // Client-side validation for nickname - if (trimmedName.length < 3 || trimmedName.length > 20) { - setNicknameError('Nickname must be between 3 and 20 characters'); + if (trimmedName.length < 3 || trimmedName.length > 12) { + setNicknameError('Nickname must be between 3 and 12 characters'); return; } else { setNicknameError(''); From 39b832284f8ba868862bc407c77040b97a106d8f Mon Sep 17 00:00:00 2001 From: ychento Date: Wed, 1 Nov 2023 20:19:23 -0400 Subject: [PATCH 101/184] create new game over page when time is out or lives are out --- react-front-end/src/App.js | 2 +- react-front-end/src/components/game.js | 102 --------------------- react-front-end/src/components/gameover.js | 12 +++ react-front-end/src/components/quiz.js | 63 +++++++++++-- react-front-end/src/style/quiz.css | 14 ++- 5 files changed, 80 insertions(+), 113 deletions(-) delete mode 100644 react-front-end/src/components/game.js create mode 100644 react-front-end/src/components/gameover.js diff --git a/react-front-end/src/App.js b/react-front-end/src/App.js index 2022e709ed..1856999a73 100644 --- a/react-front-end/src/App.js +++ b/react-front-end/src/App.js @@ -3,10 +3,10 @@ import React from 'react'; import { useState } from "react"; import { Routes, Route, BrowserRouter } from 'react-router-dom'; import Home from './components/home'; -import Game from "./components/game"; import Instruction from './components/instruction'; import QuizComponent from './components/quiz'; import Congrads from "./components/congrads"; +import GameOver from "./components/gameover"; function App() { diff --git a/react-front-end/src/components/game.js b/react-front-end/src/components/game.js deleted file mode 100644 index aeea830ac7..0000000000 --- a/react-front-end/src/components/game.js +++ /dev/null @@ -1,102 +0,0 @@ -import "../style/game.css"; -import React, { useState } from "react"; -// import data from "../data.json"; -import Quiz from "../asset/THELOGO.png"; -import { useNavigate } from "react-router-dom"; -import mockData from "../mockData.json"; - - - -function Game() { - const navigate = useNavigate(); - - const [currentQuestion, setCurrentQuestion] = useState(0); - const [selectedAnswer, setSelectedAnswer] = useState(0); - const [showHint, setShowHint] = useState(false); - const [showResult, setShowResult] = useState(false); - const [score, setScore] = useState(0); - const totalLives = 5; - const [remainingLives, setRemainingLives] = useState (totalLives) - - const handleAnswerSelect = (answer) => { - setSelectedAnswer(answer); - }; - - const checkAnswer = () => { - if (selectedAnswer === mockData.questions[currentQuestion].correctAnswer) { - if (showHint) { - setScore(score + 10); - } else { - setScore(score + 20); - } - } else { - if (remainingLives > 0) { - setRemainingLives(remainingLives - 1); - } else { - navigate("/home"); - } - } - setShowResult(true); - }; - - const showQuestionHint = () => { - setShowHint(true); - }; - - const nextQuestion = () => { - if (currentQuestion < mockData.questions.length - 1) { - setCurrentQuestion(currentQuestion + 1); - setSelectedAnswer(0); - setShowHint(false); - setShowResult(false); - } else { - if (remainingLives > 0) { - setCurrentQuestion(0); - setSelectedAnswer(0); - setShowHint(false); - setShowResult(false); - } else { - navigate("/HighestScore", { state: {score} }); - } - } - }; - - - return ( -
      - quizjs -
      -

      {mockData.questions[currentQuestion].question}

      -
      -
      - {mockData.questions[currentQuestion].choices.map((choice, index) => ( -
      handleAnswerSelect(index)} - > - {choice} -
      - ))} -
      - - {showHint &&
      {mockData.questions[currentQuestion].hint}
      } - {showResult && ( -
      - {selectedAnswer === mockData.questions[currentQuestion].correctAnswer ? "Correct!" : "Wrong!"} -
      - )} - - -
      Lives: {remainingLives}
      -
      - ); -} - -export default Game; diff --git a/react-front-end/src/components/gameover.js b/react-front-end/src/components/gameover.js new file mode 100644 index 0000000000..f362c03a1c --- /dev/null +++ b/react-front-end/src/components/gameover.js @@ -0,0 +1,12 @@ +import React from "react"; + +const GameOver = () => { + return ( +
      + Game Over! +
      + ) +} + +export default GameOver; + diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index be01deb31c..4c11272d04 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -20,9 +20,10 @@ const QuizComponent = () => { const [options, setOptions] = useState([]); const [fiftyOptions, setFiftyOptions] = useState([]); const [clickFifty, setClickFifty] = useState(false); + const [gameOver, setGameOver] = useState(false); - const timerDuration = 300; // 5 minutes in seconds + const timerDuration = 20; // in seconds const [timer, setTimer] = useState(timerDuration); useEffect(() => { @@ -35,6 +36,12 @@ const QuizComponent = () => { return () => clearInterval(timerInterval); }, [timer]); + useEffect(() => { + if (timer === 0) { + + setGameOver(true); + } + }, [timer]); const optionLabel = { 0: "A", @@ -94,6 +101,7 @@ const QuizComponent = () => { const handleSwitchClick = () => { setCurrentQuestionIndex((prevIndex) => prevIndex + 1); }; + const [showDude2Image, setShowDude2Image] = useState(false); // thumbs down const [showDude3Image, setShowDude3Image] = useState(true); // thinking face const [startTime, setStartTime] = useState(null); @@ -205,13 +213,17 @@ const QuizComponent = () => { setCurrentRound((prevRound) => prevRound + 1); } + // if (lives === 0) { + // // All lives are gone, navigate to the home page + // try { + // await navigate("/"); + // } catch (error) { + // console.error("Error navigating to /:", error); + // } + // } + if (lives === 0) { - // All lives are gone, navigate to the home page - try { - await navigate("/"); - } catch (error) { - console.error("Error navigating to /:", error); - } + setGameOver(true); } } }; @@ -222,13 +234,34 @@ const QuizComponent = () => { const currentQuestion = questions[currentQuestionIndex]; + + const handlePlayAgain = () => { + setGameOver(false); + setTimer(timerDuration); // Reset the timer to its initial value + setCurrentQuestionIndex(0); // Reset the current question index to 0 or any other initial value + setCurrentRound(1); // Reset the current round to 1 or any other initial value + setLives(5); // Reset the lives to their initial value + setShowHint(false); // Reset the hint display + setScore(0); // Reset the score to 0 or any other initial value + setHintUsed(false); // Reset the hintUsed flag + setShowDudeImage(false); + setOptions([]); // Reset the options + setFiftyOptions([]); + setClickFifty(false); + setStartTime(new Date()); + }; + + const handleHomePage = () => { + navigate("/"); + }; + return (
      quizjs {/* {currentQuestionIndex > questions.length - 1 ? No More questions : */} -
      + {!gameOver &&

      Round {currentRound}

      {currentQuestion.question}

        @@ -260,6 +293,7 @@ const QuizComponent = () => { {(timer % 60).toString().padStart(2, "0")}

        {" "} {showHint &&

        Hint: {currentQuestion.hint}

        } +
        @@ -276,7 +310,18 @@ const QuizComponent = () => { -
        +
      +
      } + + {gameOver && ( +
      +

      Game Over!

      +
      + + +
      +
      + )}
      ); }; diff --git a/react-front-end/src/style/quiz.css b/react-front-end/src/style/quiz.css index 9f519a7253..6c2c9756ef 100644 --- a/react-front-end/src/style/quiz.css +++ b/react-front-end/src/style/quiz.css @@ -58,24 +58,36 @@ font-size: 30px; } +.powerUpButtons{ + display: flex; + flex-direction: row; + justify-content: space-evenly; +} + + .hint { - font-size: 20px; + font-size: 30px; + font-style: italic; } .h-button { font-size: 30px; + font-style: italic; } .s-button { font-size: 30px; + font-style: italic; } .fifty-fifty-button { font-size: 30px; + font-style: italic; } .switch-button { font-size: 30px; + font-style: italic; } .dude { From 8892b21b960120ba28d92fc103f6a7dc37ab4c47 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Wed, 1 Nov 2023 22:32:38 -0300 Subject: [PATCH 102/184] added completion time to db --- README.md | 2 +- .../db/schema/add_time_to_game.sql | 4 + express-back-end/db/schema/schema.sql | 4 +- express-back-end/db/seeds/01_seeds.sql | 42 ++--- express-back-end/db/seeds/02_seeds.sql | 162 +++++++++--------- react-front-end/src/components/HighScores.js | 5 +- react-front-end/src/components/congrads.js | 144 ++++++++-------- react-front-end/src/components/quiz.js | 1 - 8 files changed, 185 insertions(+), 179 deletions(-) create mode 100644 express-back-end/db/schema/add_time_to_game.sql diff --git a/README.md b/README.md index d65cb67a63..94d6db41ac 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ photo of congrads page ## Getting Started -1. Create database in PostgreSQL called quiz_app_ +1. Create database in PostgreSQL called quiz_app 2. Create the `.env` by using `.env.example` in the back-end folder 3. Update the .env file with your correct local information - username: `labber` diff --git a/express-back-end/db/schema/add_time_to_game.sql b/express-back-end/db/schema/add_time_to_game.sql new file mode 100644 index 0000000000..6804b15a23 --- /dev/null +++ b/express-back-end/db/schema/add_time_to_game.sql @@ -0,0 +1,4 @@ +ALTER TABLE game +ADD COLUMN CompletionTime INTEGER; + + diff --git a/express-back-end/db/schema/schema.sql b/express-back-end/db/schema/schema.sql index 3608fe64a7..93dafbfb8c 100644 --- a/express-back-end/db/schema/schema.sql +++ b/express-back-end/db/schema/schema.sql @@ -10,7 +10,6 @@ StartDateTime TIMESTAMP DROP TABLE if EXISTS Question CASCADE; CREATE TABLE Question ( id SERIAL PRIMARY KEY, - GameID INTEGER NULL, Question VARCHAR(255), RoundNumber INTEGER, Hint VARCHAR(255), @@ -19,6 +18,5 @@ OptionB VARCHAR(255), OptionC VARCHAR(255), OptionD VARCHAR(255), Correct_Option VARCHAR(1), -Created_At TIMESTAMP, -FOREIGN KEY (GameID) REFERENCES Game(id) +Created_At TIMESTAMP ); \ No newline at end of file diff --git a/express-back-end/db/seeds/01_seeds.sql b/express-back-end/db/seeds/01_seeds.sql index e05749915a..ddb5dfbe10 100644 --- a/express-back-end/db/seeds/01_seeds.sql +++ b/express-back-end/db/seeds/01_seeds.sql @@ -1,21 +1,21 @@ -INSERT INTO Game (NickName, Score, Lives, StartDateTime) VALUES -('PlayerOne', 120, 1, '2023-10-12 08:00:00'), -('GamerGirl', 110, 1, '2023-10-12 09:30:00'), -('QuizMaster', 150, 2, '2023-10-12 10:45:00'), -('TriviaBuff', 110, 1, '2023-10-12 12:15:00'), -('CreativeBro', 300, 5, '2023-10-12 13:30:00'), -('PuzzlePro', 110, 1, '2023-10-12 15:00:00'), -('RiddleSolver', 180, 2, '2023-10-12 16:15:00'), -('SmartyPants', 110, 1, '2023-10-12 17:45:00'), -('WiseOwl', 160, 2, '2023-10-12 19:00:00'), -('GeniusGeek', 110, 1, '2023-10-12 20:30:00'), -('QuickThinker', 140, 2, '2023-10-12 21:45:00'), -('SmartiePie', 110, 1, '2023-10-12 23:15:00'), -('CleverClog', 220, 5, '2023-10-13 08:30:00'), -('MindMaze', 120, 3, '2023-10-13 10:00:00'), -('IntellectRuler', 190, 3, '2023-10-13 11:15:00'), -('KnowledgeKnight', 110, 1, '2023-10-13 12:45:00'), -('SharpMind', 170, 2, '2023-10-13 14:00:00'), -('BrainyBee', 110, 1, '2023-10-13 15:30:00'), -('SavvySphinx', 130, 1, '2023-10-13 16:45:00'), -('WittyWhiz', 300, 5, '2023-10-13 18:15:00'); \ No newline at end of file +INSERT INTO Game (NickName, Score, Lives, StartDateTime, CompletionTime) VALUES +('PlayerOne', 120, 1, '2023-10-12 08:00:00', 276913), +('GamerGirl', 110, 1, '2023-10-12 09:30:00', 256783), +('QuizMaster', 150, 2, '2023-10-12 10:45:00', 487241), +('TriviaBuff', 110, 1, '2023-10-12 12:15:00', 356209), +('CreativeBro', 300, 5, '2023-10-12 13:30:00', 122345), +('PuzzlePro', 110, 1, '2023-10-12 15:00:00', 423567), +('RiddleSolver', 180, 2, '2023-10-12 16:15:00', 195432), +('SmartyPants', 110, 1, '2023-10-12 17:45:00', 389012), +('WiseOwl', 160, 2, '2023-10-12 19:00:00', 432123), +('GeniusGeek', 110, 1, '2023-10-12 20:30:00', 512345), +('QuickThinker', 140, 2, '2023-10-12 21:45:00', 298765), +('SmartiePie', 110, 1, '2023-10-12 23:15:00', 345678), +('CleverClog', 220, 5, '2023-10-13 08:30:00', 231987), +('MindMaze', 120, 3, '2023-10-13 10:00:00', 167890), +('IntellectRuler', 190, 3, '2023-10-13 11:15:00', 453210), +('KnowledgeKnight', 110, 1, '2023-10-13 12:45:00', 321678), +('SharpMind', 170, 2, '2023-10-13 14:00:00', 189654), +('BrainyBee', 110, 1, '2023-10-13 15:30:00', 567890), +('SavvySphinx', 130, 1, '2023-10-13 16:45:00', 276543), +('WittyWhiz', 300, 5, '2023-10-13 18:15:00', 432189); \ No newline at end of file diff --git a/express-back-end/db/seeds/02_seeds.sql b/express-back-end/db/seeds/02_seeds.sql index 011efa36a4..15448091e8 100644 --- a/express-back-end/db/seeds/02_seeds.sql +++ b/express-back-end/db/seeds/02_seeds.sql @@ -1,84 +1,84 @@ -INSERT INTO Question (GameID, Question, RoundNumber, Hint, OptionA, OptionB, OptionC, OptionD, Correct_Option, Created_At) +INSERT INTO Question (Question, RoundNumber, Hint, OptionA, OptionB, OptionC, OptionD, Correct_Option, Created_At) VALUES - (1, 'What is the square root of a fish?', 1, 'Fish come in many shapes and sizes, but they are known for something specific.', '2', 'Fish', '42', '√(-1)', 'B', NOW()), - (1, 'If you have 3 apples and you take away 2, how many apples do you have left?', 1, 'This question plays with the concept of ownership.', '0', '1', '2', '3', 'B', NOW()), - (1, 'What has keys but can''t open locks?', 1, 'This item is often found in homes and offices.', 'A door', 'Keyboard', 'Typewriter', 'Piano', 'D', NOW()), - (1, 'Which is the odd one out?', 1, 'Consider the category or common characteristics of the items.', 'Apple', 'Banana', 'Orange', 'Grape', 'C', NOW()), - (1, 'How many sides does a circle have?', 1, 'Think geometrically, but don''t focus on straight lines.', '0', '1', '2', 'Infinite', 'B', NOW()), - (1, 'If a plane crashes on the border between the U.S. and Canada, where do you bury the survivors?', 1, 'This is a tricky question involving the geography of a crash.', 'In the U.S.', 'In Canada', 'Nowhere, survivors are alive', 'In an international cemetery', 'C', NOW()), - (1, 'What gets wetter as it dries?', 1, 'It''s related to an everyday item and the action it performs.', 'Towel', 'Sponge', 'Soap', 'Raincoat', 'A', NOW()), - (1, 'Which planet is known as the "Red Planet"?', 1, 'Look to the skies and identify the planet with a distinct color.', 'Venus', 'Jupiter', 'Mars', 'Saturn', 'C', NOW()), - (1, 'What comes once in a minute, twice in a moment, but never in a thousand years?', 1, 'This one is about time and a specific letter''s occurrence.', 'The letter "M"', 'The letter "E"', 'The letter "O"', 'The letter "N"', 'A', NOW()), - (1, 'If a rooster lays an egg on a triangular roof, which way does the egg roll?', 1, 'Focus on the unique situation described and its implications.', 'Left', 'Right', 'It doesn''t roll, roosters don''t lay eggs', 'Down', 'C', NOW()), - (1, 'How can a man go eight days without sleep?', 1, 'It''s not about sleeping patterns but a clever trick with days.', 'He sleeps at night', 'He takes power naps', 'He sleeps during the day', 'He only sleeps at night', 'D', NOW()), - (1, 'What has an endless supply of letters but starts empty?', 1, 'It''s not about paper or mail but a fundamental concept.', 'Mailbox', 'Alphabet', 'Post Office', 'Mailman', 'B', NOW()), - (1, 'What has a heart that doesn''t beat?', 1, 'It''s not a living thing but is often found on walls.', 'Clock', 'Person', 'Deer', 'Artichoke', 'D', NOW()), - (1, 'What has a neck but no head?', 1, 'Think about a container with a long neck.', 'Giraffe', 'Turtle Neck Sweater', 'Shirt', 'Bottle', 'D', NOW()), - (1, 'What is as light as a feather yet the strongest person can''t hold it for more than a few minutes?', 1, 'It''s not tangible but involves a momentary experience.', 'Air', 'Breath', 'Laughter', 'Hope', 'B', NOW()), - (1, 'What is full of holes but still holds water?', 1, 'It''s not a physical object but something you might use in the kitchen.', 'Sponge', 'Net', 'Strainer', 'Cloud', 'A', NOW()), - (1, 'What has a face and two hands but no arms or legs?', 1, 'You look at it daily to know the time.', 'Clock', 'Mirror', 'Sun', 'Compass', 'A', NOW()), - (1, 'What has a head, a tail, is brown, and has no legs?', 1, 'It''s often found outdoors.', 'Snake', 'Stick', 'Cigar', 'Worm', 'D', NOW()), - (1, 'What has one eye but can''t see?', 1, 'It''s a tool for crafting.', 'Cyclops', 'Needle', 'Camera', 'Telescope', 'B', NOW()), - (1, 'The more you take, the more you leave behind. What am I?', 1, 'It''s about your journey and interactions.', 'Footsteps', 'Breath', 'Mist', 'Echo', 'A', NOW()), - (1, 'What belongs to you but is used more by others?', 1, 'It''s a resource you invest and spend.', 'Your name', 'Your car', 'Your time', 'Your money', 'A', NOW()), - (1, 'I speak without a mouth and hear without ears. I have no body, but I come alive with the wind. What am I?', 1, 'It''s about the invisible impact of nature.', 'Echo', 'Music', 'Whisper', 'Thunder', 'A', NOW()), - (1, 'I am taken from a mine, and shut up in a wooden case, from which I am never released, and yet I am used by almost every person. What am I?', 1, 'You draw with it.', 'Gold', 'Diamond', 'Pencil lead', 'Coal', 'C', NOW()), - (1, 'What can be cracked, made, told, and played?', 1, 'You find me in a house.', 'Joke', 'Code', 'Egg', 'Record', 'A', NOW()), - (1, 'I am always hungry. I must always be fed. The finger I lick will soon turn red. What am I?', 1, 'More I am fed the bigger I get.', 'Dog', 'Fire', 'Cat', 'Baby', 'B', NOW()), - (1, 'What can travel around the world while staying in a corner?', 1, 'People collect me.', 'The flu', 'Earth', 'A stamp', 'Satellite', 'C', NOW()), - (1, 'If a cat is black and a cat is white, what kind of cat doesn''t exist?', 1, 'It''s a play on colors.', 'Gray cat', 'Invisible cat', 'Rainbow cat', 'Striped cat', 'A', NOW()), - (1, 'What has cities but no houses, forests but no trees, and rivers but no water?', 1, 'It''s a representation.', 'Map', 'Book', 'Globe', 'Dictionary', 'A', NOW()), - (1, 'What is always in front of you but can''t be seen?', 1, 'It''s a moment in time.', 'Future', 'Past', 'Present', 'Memory', 'A', NOW()), - (1, 'What has teeth but can''t bite?', 1, 'It''s used in clothing.', 'Zipper', 'Comb', 'Saw', 'Key', 'A', NOW()), - (1, 'What can run but never walks, has a mouth but never talks?', 1, 'It helps you keep time.', 'Wind', 'River', 'Clock', 'Fire', 'C', NOW()), - (1, 'What is the absolute last thing both men and women take off before getting into bed?', 1, 'Think literally', 'Hat', 'Shoes', 'Socks', 'Their feet off the floor', 'D', NOW()); -INSERT INTO Question (GameID, Question, RoundNumber, Hint, OptionA, OptionB, OptionC, OptionD, Correct_Option, Created_At) + ('What is the square root of a fish?', 1, 'Fish come in many shapes and sizes, but they are known for something specific.', '2', 'Fish', '42', '√(-1)', 'B', NOW()), + ('If you have 3 apples and you take away 2, how many apples do you have left?', 1, 'This question plays with the concept of ownership.', '0', '1', '2', '3', 'B', NOW()), + ('What has keys but can''t open locks?', 1, 'This item is often found in homes and offices.', 'A door', 'Keyboard', 'Typewriter', 'Piano', 'D', NOW()), + ('Which is the odd one out?', 1, 'Consider the category or common characteristics of the items.', 'Apple', 'Banana', 'Orange', 'Grape', 'C', NOW()), + ('How many sides does a circle have?', 1, 'Think geometrically, but don''t focus on straight lines.', '0', '1', '2', 'Infinite', 'B', NOW()), + ('If a plane crashes on the border between the U.S. and Canada, where do you bury the survivors?', 1, 'This is a tricky question involving the geography of a crash.', 'In the U.S.', 'In Canada', 'Nowhere, survivors are alive', 'In an international cemetery', 'C', NOW()), + ('What gets wetter as it dries?', 1, 'It''s related to an everyday item and the action it performs.', 'Towel', 'Sponge', 'Soap', 'Raincoat', 'A', NOW()), + ('Which planet is known as the "Red Planet"?', 1, 'Look to the skies and identify the planet with a distinct color.', 'Venus', 'Jupiter', 'Mars', 'Saturn', 'C', NOW()), + ('What comes once in a minute, twice in a moment, but never in a thousand years?', 1, 'This one is about time and a specific letter''s occurrence.', 'The letter "M"', 'The letter "E"', 'The letter "O"', 'The letter "N"', 'A', NOW()), + ('If a rooster lays an egg on a triangular roof, which way does the egg roll?', 1, 'Focus on the unique situation described and its implications.', 'Left', 'Right', 'It doesn''t roll, roosters don''t lay eggs', 'Down', 'C', NOW()), + ('How can a man go eight days without sleep?', 1, 'It''s not about sleeping patterns but a clever trick with days.', 'He sleeps at night', 'He takes power naps', 'He sleeps during the day', 'He only sleeps at night', 'D', NOW()), + ('What has an endless supply of letters but starts empty?', 1, 'It''s not about paper or mail but a fundamental concept.', 'Mailbox', 'Alphabet', 'Post Office', 'Mailman', 'B', NOW()), + ('What has a heart that doesn''t beat?', 1, 'It''s not a living thing but is often found on walls.', 'Clock', 'Person', 'Deer', 'Artichoke', 'D', NOW()), + ('What has a neck but no head?', 1, 'Think about a container with a long neck.', 'Giraffe', 'Turtle Neck Sweater', 'Shirt', 'Bottle', 'D', NOW()), + ('What is as light as a feather yet the strongest person can''t hold it for more than a few minutes?', 1, 'It''s not tangible but involves a momentary experience.', 'Air', 'Breath', 'Laughter', 'Hope', 'B', NOW()), + ('What is full of holes but still holds water?', 1, 'It''s not a physical object but something you might use in the kitchen.', 'Sponge', 'Net', 'Strainer', 'Cloud', 'A', NOW()), + ('What has a face and two hands but no arms or legs?', 1, 'You look at it daily to know the time.', 'Clock', 'Mirror', 'Sun', 'Compass', 'A', NOW()), + ('What has a head, a tail, is brown, and has no legs?', 1, 'It''s often found outdoors.', 'Snake', 'Stick', 'Cigar', 'Worm', 'D', NOW()), + ('What has one eye but can''t see?', 1, 'It''s a tool for crafting.', 'Cyclops', 'Needle', 'Camera', 'Telescope', 'B', NOW()), + ('The more you take, the more you leave behind. What am I?', 1, 'It''s about your journey and interactions.', 'Footsteps', 'Breath', 'Mist', 'Echo', 'A', NOW()), + ('What belongs to you but is used more by others?', 1, 'It''s a resource you invest and spend.', 'Your name', 'Your car', 'Your time', 'Your money', 'A', NOW()), + ('I speak without a mouth and hear without ears. I have no body, but I come alive with the wind. What am I?', 1, 'It''s about the invisible impact of nature.', 'Echo', 'Music', 'Whisper', 'Thunder', 'A', NOW()), + ('I am taken from a mine, and shut up in a wooden case, from which I am never released, and yet I am used by almost every person. What am I?', 1, 'You draw with it.', 'Gold', 'Diamond', 'Pencil lead', 'Coal', 'C', NOW()), + ('What can be cracked, made, told, and played?', 1, 'You find me in a house.', 'Joke', 'Code', 'Egg', 'Record', 'A', NOW()), + ('I am always hungry. I must always be fed. The finger I lick will soon turn red. What am I?', 1, 'More I am fed the bigger I get.', 'Dog', 'Fire', 'Cat', 'Baby', 'B', NOW()), + ('What can travel around the world while staying in a corner?', 1, 'People collect me.', 'The flu', 'Earth', 'A stamp', 'Satellite', 'C', NOW()), + ('If a cat is black and a cat is white, what kind of cat doesn''t exist?', 1, 'It''s a play on colors.', 'Gray cat', 'Invisible cat', 'Rainbow cat', 'Striped cat', 'A', NOW()), + ('What has cities but no houses, forests but no trees, and rivers but no water?', 1, 'It''s a representation.', 'Map', 'Book', 'Globe', 'Dictionary', 'A', NOW()), + ('What is always in front of you but can''t be seen?', 1, 'It''s a moment in time.', 'Future', 'Past', 'Present', 'Memory', 'A', NOW()), + ('What has teeth but can''t bite?', 1, 'It''s used in clothing.', 'Zipper', 'Comb', 'Saw', 'Key', 'A', NOW()), + ('What can run but never walks, has a mouth but never talks?', 1, 'It helps you keep time.', 'Wind', 'River', 'Clock', 'Fire', 'C', NOW()), + ('What is the absolute last thing both men and women take off before getting into bed?', 1, 'Think literally', 'Hat', 'Shoes', 'Socks', 'Their feet off the floor', 'D', NOW()); +INSERT INTO Question (Question, RoundNumber, Hint, OptionA, OptionB, OptionC, OptionD, Correct_Option, Created_At) VALUES - (1, 'What do you call a group of wolves?', 2, 'Think about their behavior', 'A herd', 'A school', 'A pack', 'A flock', 'C', NOW()), - (1, 'The marker does not want it, the buyer does not use it, and the user does not see it.', 2, 'Think about the context and purpose of the item mentioned.', 'Coffin', 'Notebook', 'Pen', 'Desk', 'A', NOW()), - (1, 'What gas do plants absorb from the air?', 2, 'As essential gas.', 'Carbon Dioxide', 'Oxygen', 'Nitrogen', 'Helium', 'A', NOW()), - (1, 'What''s 2 + 2?', 2, 'Simple addition.', '4', '3', '5', '6', 'A', NOW()), - (1, 'Break it and it is better, immediately set, and harder to break again. What am I?', 2, 'Consider the context of something breaking and becoming better.', 'Glass', 'Bone', 'A record', 'Mirror', 'C', NOW()), - (1, 'What''s the chemical symbol for water?', 2, 'Two parts hydrogen one part oxygen', 'CH4', 'O2', 'CO2', 'H2O', 'D', NOW()), - (1, 'What''s the largest planet in our solar system?', 2, 'Think about the planets'' sizes.', 'Mars', 'Earth', 'Jupiter', 'Saturn', 'C', NOW()), - (1, 'What''s the smallest even prime number?', 2, 'A unique characteristic.', '2', '1', '3', '4', 'A', NOW()), - (1, 'What is 147 apples plus 68 oranges?', 2, 'Consider the composition of the question and its straightforwardness.', 'A lot of fruit', '215 fruits', '147 apples and 68 oranges', 'Fruit salad', 'C', NOW()), - (1, 'If you give me food I will grow. If you give me water I will die. Who or what am I?', 2, 'Think about elements that need food to sustain and grow, and those that perish when exposed to water.', 'Plant', 'Animal', 'Rock', 'Fire', 'D', NOW()), - (1, 'What''s the chemical symbol for oxygen?', 2, 'An essential gas.', 'H2O', 'O2', 'CO2', 'O', 'B', NOW()), - (1, 'The more you have of it, the less you see. What is it?', 2, 'Think about a condition where the absence of something allows another to become more apparent.', 'Light', 'Vision', 'Darkness', 'Knowledge', 'C', NOW()), - (1, 'How many planets are there in our solar system?', 2, 'Include Pluto if you must.', '7', '9', '10', '8', 'D', NOW()), - (1, 'What is so fragile that when you say its name you break it?', 2, 'Consider the impact of sound on a particular concept.', 'Mirror', 'Glass', 'Feather', 'Silence', 'D', NOW()), - (1, 'How many sides does a hexagon have?', 2, 'It''s in the name.', '5', '7', '6', '8', 'C', NOW()), - (1, 'Who wrote "Romeo and Juliet"?', 2, 'Classic playwright.', 'William Shakespeare', 'Charles Dickens', 'Jane Austen', 'Mark Twain', 'A', NOW()), - (1, 'How many years are in a decade?', 2, 'A portion of a century.', '5', '20', '10', '100', 'C', NOW()), - (1, 'What''s the opposite of "empty"?', 2, 'Think about containers.', 'Half', 'Full', 'Light', 'Dense', 'B', NOW()), - (1, 'How many sides does a triangle have?', 2, 'Classic geometry.', '4', '3', '5', '6', 'B', NOW()), - (1, 'What is the square root of 16?', 2, 'A perfect square.', '4', '8', '2', '64', 'A', NOW()), - (1, 'What orchestral device is not blown, bowed, plucked or struck?', 2, 'Think about who directs the performance without directly interacting with the instruments.', 'The conductor''s baton', 'Triangle', 'Cello', 'Trombone', 'A', NOW()); -INSERT INTO Question (GameID, Question, RoundNumber, Hint, OptionA, OptionB, OptionC, OptionD, Correct_Option, Created_At) + ('What do you call a group of wolves?', 2, 'Think about their behavior', 'A herd', 'A school', 'A pack', 'A flock', 'C', NOW()), + ('The marker does not want it, the buyer does not use it, and the user does not see it.', 2, 'Think about the context and purpose of the item mentioned.', 'Coffin', 'Notebook', 'Pen', 'Desk', 'A', NOW()), + ('What gas do plants absorb from the air?', 2, 'As essential gas.', 'Carbon Dioxide', 'Oxygen', 'Nitrogen', 'Helium', 'A', NOW()), + ('What''s 2 + 2?', 2, 'Simple addition.', '4', '3', '5', '6', 'A', NOW()), + ('Break it and it is better, immediately set, and harder to break again. What am I?', 2, 'Consider the context of something breaking and becoming better.', 'Glass', 'Bone', 'A record', 'Mirror', 'C', NOW()), + ('What''s the chemical symbol for water?', 2, 'Two parts hydrogen one part oxygen', 'CH4', 'O2', 'CO2', 'H2O', 'D', NOW()), + ('What''s the largest planet in our solar system?', 2, 'Think about the planets'' sizes.', 'Mars', 'Earth', 'Jupiter', 'Saturn', 'C', NOW()), + ('What''s the smallest even prime number?', 2, 'A unique characteristic.', '2', '1', '3', '4', 'A', NOW()), + ('What is 147 apples plus 68 oranges?', 2, 'Consider the composition of the question and its straightforwardness.', 'A lot of fruit', '215 fruits', '147 apples and 68 oranges', 'Fruit salad', 'C', NOW()), + ('If you give me food I will grow. If you give me water I will die. Who or what am I?', 2, 'Think about elements that need food to sustain and grow, and those that perish when exposed to water.', 'Plant', 'Animal', 'Rock', 'Fire', 'D', NOW()), + ('What''s the chemical symbol for oxygen?', 2, 'An essential gas.', 'H2O', 'O2', 'CO2', 'O', 'B', NOW()), + ('The more you have of it, the less you see. What is it?', 2, 'Think about a condition where the absence of something allows another to become more apparent.', 'Light', 'Vision', 'Darkness', 'Knowledge', 'C', NOW()), + ('How many planets are there in our solar system?', 2, 'Include Pluto if you must.', '7', '9', '10', '8', 'D', NOW()), + ('What is so fragile that when you say its name you break it?', 2, 'Consider the impact of sound on a particular concept.', 'Mirror', 'Glass', 'Feather', 'Silence', 'D', NOW()), + ('How many sides does a hexagon have?', 2, 'It''s in the name.', '5', '7', '6', '8', 'C', NOW()), + ('Who wrote "Romeo and Juliet"?', 2, 'Classic playwright.', 'William Shakespeare', 'Charles Dickens', 'Jane Austen', 'Mark Twain', 'A', NOW()), + ('How many years are in a decade?', 2, 'A portion of a century.', '5', '20', '10', '100', 'C', NOW()), + ('What''s the opposite of "empty"?', 2, 'Think about containers.', 'Half', 'Full', 'Light', 'Dense', 'B', NOW()), + ('How many sides does a triangle have?', 2, 'Classic geometry.', '4', '3', '5', '6', 'B', NOW()), + ('What is the square root of 16?', 2, 'A perfect square.', '4', '8', '2', '64', 'A', NOW()), + ('What orchestral device is not blown, bowed, plucked or struck?', 2, 'Think about who directs the performance without directly interacting with the instruments.', 'The conductor''s baton', 'Triangle', 'Cello', 'Trombone', 'A', NOW()); +INSERT INTO Question (Question, RoundNumber, Hint, OptionA, OptionB, OptionC, OptionD, Correct_Option, Created_At) VALUES - (1, 'What is the meaning of life, the universe, and everything?', 3, 'The answer is as elusive as the question.', '42', 'Infinite possibilities', 'Love', 'A mystery', 'D', NOW()), - (1, 'July 4th is the day that Americans celebrate "Independence Day." Do the British have a fourth of July in England?', 3, 'Think about the literal interpretation of the question', 'Yes, they do but it''s on the first', 'Of course, they do', 'Yes, but it''s called "Dependence Day"', 'Yes, and it''s a celebration of American independence', 'B', NOW()), - (1, 'Which would be worth more, a pound of $10 pure gold coins of half a pound of $20 pure gold coins, or would they be worth the same amount?', 3, 'Think about the market value of gold', 'A pound of gold is always worth more than a half pound of gold', 'A pound of $10 pure gold coins', 'A half pound of $20 pure gold coins', 'Both would be worth the same amount', 'C', NOW()), - (1, 'Who is Schrödinger''s cat?', 3, 'It''s both alive and not alive, depending on your perspective.', 'A real cat', 'A thought experiment', 'A scientist''s pet', 'A cat with nine lives', 'B', NOW()), - (1, 'Even if they were starving, first peoples living in the Arctic never ate penguin eggs. Why not?', 3, 'The answer lies in the geographical distribution of penguins.', 'They do not like penguin eggs', 'They make you sick', 'There are not any penguins in the Arctic', 'Hard to find', 'C', NOW()), - (1, 'Four men were in a boat on a lake. The boat capsized and all four men sank and to the bottom of the lake, yet not a single man got wet! Why?', 3, 'Think about the wording of single man', 'They all got wet not just one single man', 'Because they were wearing scuba gear', 'They were still in the boat', 'Because they were all married', 'D', NOW()), - (1, 'If you divide thirty by half and add ten, what is the answer?', 3, 'When dividing by fractions, you must invert and multiply.', '70', '12', '25', '60', 'A', NOW()), - (1, 'Forward I am heavy, backward I am not. What am I?', 3, 'Play on words', 'Weight', 'Light', 'The word ton', 'Gravity', 'C', NOW()), - (1, 'How many squares on a chessboard?', 3, 'Add all squares including one of the whole board', '64 single squares', 'total of 204 square', '36 square made of 9 single squares', '9 squares made of 36 single squares', 'B', NOW()), - (1, 'How many 3-cent stamps are in a dozen?', 3, 'Think about how many stamps not the amount it cost', '4', '3', '12', '36', 'C', NOW()), - (1, 'How many cubic meters of dirt are in a hole 6 meters long, 2 meters wide, and 1 meter deep?', 3, 'Think about the nature of a hole and what it represents in terms of space and volume.', '9 meters', '1', '2', 'None', 'D', NOW()), - (1, 'In the following series, which numbers can be evenly divided by two? 1 2 3 4 5 6 7 8 9', 3, 'What type of numbers can be cut in half.', 'All even numbers', 'All of them', 'All odd numbers', 'None of them', 'B', NOW()), - (1, 'I have a foot on each end, and one in the middle. What am I?', 3, 'Consider objects that have a measurement component and are associated with length.', 'A yard stick', 'A ruler', 'A person', 'A ladder', 'A', NOW()), - (1, 'What is the mathematical concept behind the game of Sudoku?', 3, 'No Latin was harmed in the making of this concept.', 'Set theory', 'Group theory', 'Latin squares', 'Probability', 'C', NOW()), - (1, 'Which one of the three would see most clearly in total darkness? A leopard, a bat, or an owl?', 3, 'When it''s pitch black, all eyes are in the same boat.', 'leopard', 'bat', 'None', 'owl', 'C', NOW()), - (1, 'How can half of 12 be 7?', 3, 'Explore the world of numerals.', 'Upper half of the Roman numeral for 12 looks like the number for seven', 'If you add 5 to half of 12, you get 7', 'In a special numbering system, half of 12 is indeed 7', 'It''s a mathematical illusion, half of 12 is not really 7', 'A', NOW()), - (1, 'Mr. and Mrs. Clatter have five perfectly healthy children. Half of them are boys. How is that possible?', 3, 'Consider the information given carefully and think about the total number of children.', 'The family has a mix of boys and girls, but only half are mentioned', 'They adopted some of the children', 'Mrs. Clatter has a twin sister who also has children', 'The other half are also boys', 'D', NOW()), - (1, 'If you were to step into a sealed room filled with 100% methane gas and strike a match, what would happen?', 3, 'Think about what fire needs to exist and how it interacts with different environments.', 'It would explode', 'The match would burn briefly and then extinguish', 'To the match and the room nothing, the match cannot spark without oxygen', 'The room would catch fire but not explode', 'C', NOW()), - (1, 'Therein lies the secret. For you see, there is a seven-letter word in the English language that contains eight words without rearranging any of its letters. What is the word?', 3, 'Pay attention to the wording of the question', 'Wordplay', 'Puzzled', 'Therein', 'Mystery', 'C', NOW()), - (1, 'How can you physically stand behind your father while he is standing behind you?', 3, 'Think about spatial relationships and ways people can be positioned relative to each other.', 'Mirror', 'back to back', 'Hologram', 'Shadow', 'B', NOW()), - (1, 'How many mistakes can you find in the following sentence? This sentence contains four mistakes.', 3, 'One of the mistakes is the claim made in the sentence', 'Three', 'One', 'Four', 'Two', 'A', NOW()), - (1, 'What five-letter word becomes shorter when you add two letters to it?', 3, 'It''s a play on words and the nature of the word itself.', 'Brief', 'Short', 'Snappy', 'Little', 'B', NOW()), - (1, 'If you were to take two cucumbers from three cucumbers, how many would you have?', 3, 'Think about the action mentioned in the question.', 'One', 'Five', 'Two', 'Three', 'C', NOW()), - (1, 'Professor Quantum has two coins that total 30 cents. Since one of the coins is not a nickel what are the two coins?', 3, 'Read the question very carefully.', 'Two dimes', 'Two fifteen cent coins', 'A quarter and a nickel', 'Quarter and half a dime', 'C', NOW()), - (1, 'Many people consider it amazing, and just their luck, that things are always in the last place you look for them. What is wrong with this belief?', 3, 'Consider the logic of the statement.', 'It''s a universal truth', 'Once you find something, you don''t look elsewhere', 'It''s a statistical anomaly', 'It''s a self-fulfilling prophecy', 'B', NOW()); \ No newline at end of file + ('What is the meaning of life, the universe, and everything?', 3, 'The answer is as elusive as the question.', '42', 'Infinite possibilities', 'Love', 'A mystery', 'D', NOW()), + ('July 4th is the day that Americans celebrate "Independence Day." Do the British have a fourth of July in England?', 3, 'Think about the literal interpretation of the question', 'Yes, they do but it''s on the first', 'Of course, they do', 'Yes, but it''s called "Dependence Day"', 'Yes, and it''s a celebration of American independence', 'B', NOW()), + ('Which would be worth more, a pound of $10 pure gold coins of half a pound of $20 pure gold coins, or would they be worth the same amount?', 3, 'Think about the market value of gold', 'A pound of gold is always worth more than a half pound of gold', 'A pound of $10 pure gold coins', 'A half pound of $20 pure gold coins', 'Both would be worth the same amount', 'C', NOW()), + ('Who is Schrödinger''s cat?', 3, 'It''s both alive and not alive, depending on your perspective.', 'A real cat', 'A thought experiment', 'A scientist''s pet', 'A cat with nine lives', 'B', NOW()), + ('Even if they were starving, first peoples living in the Arctic never ate penguin eggs. Why not?', 3, 'The answer lies in the geographical distribution of penguins.', 'They do not like penguin eggs', 'They make you sick', 'There are not any penguins in the Arctic', 'Hard to find', 'C', NOW()), + ('Four men were in a boat on a lake. The boat capsized and all four men sank and to the bottom of the lake, yet not a single man got wet! Why?', 3, 'Think about the wording of single man', 'They all got wet not just one single man', 'Because they were wearing scuba gear', 'They were still in the boat', 'Because they were all married', 'D', NOW()), + ('If you divide thirty by half and add ten, what is the answer?', 3, 'When dividing by fractions, you must invert and multiply.', '70', '12', '25', '60', 'A', NOW()), + ('Forward I am heavy, backward I am not. What am I?', 3, 'Play on words', 'Weight', 'Light', 'The word ton', 'Gravity', 'C', NOW()), + ('How many squares on a chessboard?', 3, 'Add all squares including one of the whole board', '64 single squares', 'total of 204 square', '36 square made of 9 single squares', '9 squares made of 36 single squares', 'B', NOW()), + ('How many 3-cent stamps are in a dozen?', 3, 'Think about how many stamps not the amount it cost', '4', '3', '12', '36', 'C', NOW()), + ('How many cubic meters of dirt are in a hole 6 meters long, 2 meters wide, and 1 meter deep?', 3, 'Think about the nature of a hole and what it represents in terms of space and volume.', '9 meters', '1', '2', 'None', 'D', NOW()), + ('In the following series, which numbers can be evenly divided by two? 1 2 3 4 5 6 7 8 9', 3, 'What type of numbers can be cut in half.', 'All even numbers', 'All of them', 'All odd numbers', 'None of them', 'B', NOW()), + ('I have a foot on each end, and one in the middle. What am I?', 3, 'Consider objects that have a measurement component and are associated with length.', 'A yard stick', 'A ruler', 'A person', 'A ladder', 'A', NOW()), + ('What is the mathematical concept behind the game of Sudoku?', 3, 'No Latin was harmed in the making of this concept.', 'Set theory', 'Group theory', 'Latin squares', 'Probability', 'C', NOW()), + ('Which one of the three would see most clearly in total darkness? A leopard, a bat, or an owl?', 3, 'When it''s pitch black, all eyes are in the same boat.', 'leopard', 'bat', 'None', 'owl', 'C', NOW()), + ('How can half of 12 be 7?', 3, 'Explore the world of numerals.', 'Upper half of the Roman numeral for 12 looks like the number for seven', 'If you add 5 to half of 12, you get 7', 'In a special numbering system, half of 12 is indeed 7', 'It''s a mathematical illusion, half of 12 is not really 7', 'A', NOW()), + ('Mr. and Mrs. Clatter have five perfectly healthy children. Half of them are boys. How is that possible?', 3, 'Consider the information given carefully and think about the total number of children.', 'The family has a mix of boys and girls, but only half are mentioned', 'They adopted some of the children', 'Mrs. Clatter has a twin sister who also has children', 'The other half are also boys', 'D', NOW()), + ('If you were to step into a sealed room filled with 100% methane gas and strike a match, what would happen?', 3, 'Think about what fire needs to exist and how it interacts with different environments.', 'It would explode', 'The match would burn briefly and then extinguish', 'To the match and the room nothing, the match cannot spark without oxygen', 'The room would catch fire but not explode', 'C', NOW()), + ('Therein lies the secret. For you see, there is a seven-letter word in the English language that contains eight words without rearranging any of its letters. What is the word?', 3, 'Pay attention to the wording of the question', 'Wordplay', 'Puzzled', 'Therein', 'Mystery', 'C', NOW()), + ('How can you physically stand behind your father while he is standing behind you?', 3, 'Think about spatial relationships and ways people can be positioned relative to each other.', 'Mirror', 'back to back', 'Hologram', 'Shadow', 'B', NOW()), + ('How many mistakes can you find in the following sentence? This sentence contains four mistakes.', 3, 'One of the mistakes is the claim made in the sentence', 'Three', 'One', 'Four', 'Two', 'A', NOW()), + ('What five-letter word becomes shorter when you add two letters to it?', 3, 'It''s a play on words and the nature of the word itself.', 'Brief', 'Short', 'Snappy', 'Little', 'B', NOW()), + ('If you were to take two cucumbers from three cucumbers, how many would you have?', 3, 'Think about the action mentioned in the question.', 'One', 'Five', 'Two', 'Three', 'C', NOW()), + ('Professor Quantum has two coins that total 30 cents. Since one of the coins is not a nickel what are the two coins?', 3, 'Read the question very carefully.', 'Two dimes', 'Two fifteen cent coins', 'A quarter and a nickel', 'Quarter and half a dime', 'C', NOW()), + ('Many people consider it amazing, and just their luck, that things are always in the last place you look for them. What is wrong with this belief?', 3, 'Consider the logic of the statement.', 'It''s a universal truth', 'Once you find something, you don''t look elsewhere', 'It''s a statistical anomaly', 'It''s a self-fulfilling prophecy', 'B', NOW()); \ No newline at end of file diff --git a/react-front-end/src/components/HighScores.js b/react-front-end/src/components/HighScores.js index 5608b75c1c..5b479bde85 100644 --- a/react-front-end/src/components/HighScores.js +++ b/react-front-end/src/components/HighScores.js @@ -16,7 +16,10 @@ function HighScores() { // Sort the high scores in descending order based on the 'score' property const sortedHighScores = filteredHighScores.sort((a, b) => b.score - a.score); - + + // sort the high scores by time + // logic here... + // Take only the top 20 high scores const top20HighScores = sortedHighScores.slice(0, 20); diff --git a/react-front-end/src/components/congrads.js b/react-front-end/src/components/congrads.js index d5f5c4f272..9e1bb15a4a 100644 --- a/react-front-end/src/components/congrads.js +++ b/react-front-end/src/components/congrads.js @@ -1,8 +1,8 @@ -import React, { useEffect, useState } from 'react'; -import { useNavigate, useLocation } from 'react-router-dom'; +import React, { useEffect, useState } from "react"; +import { useNavigate, useLocation } from "react-router-dom"; import "../style/congrads.css"; -import 'whatwg-fetch'; -import Header from "./header" +import "whatwg-fetch"; +import Header from "./header"; const Congrats = ({ onLeaderboardUpdate }) => { const navigate = useNavigate(); @@ -19,118 +19,119 @@ const Congrats = ({ onLeaderboardUpdate }) => { }, [location.state]); // State variables for form fields - const [submissionMessage, setSubmissionMessage] = useState(''); - const [name, setName] = useState(''); - const [nicknameError, setNicknameError] = useState(''); + const [submissionMessage, setSubmissionMessage] = useState(""); + const [name, setName] = useState(""); + const [nicknameError, setNicknameError] = useState(""); // Access the score from the location state const score = location.state && location.state.score; -// Function to validate the nickname -const validateNickname = async (nickname) => { - try { - const response = await fetch('/validate-nickname', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ nickname }), - }); - - // Process the server response - const result = await response.json(); - return result; - } catch (error) { - console.error('Error validating nickname:', error); - return { success: false, error: 'Failed to validate nickname' }; - } -}; + // Function to validate the nickname + const validateNickname = async (nickname) => { + try { + const response = await fetch("/validate-nickname", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ nickname }), + }); + + // Process the server response + const result = await response.json(); + return result; + } catch (error) { + console.error("Error validating nickname:", error); + return { success: false, error: "Failed to validate nickname" }; + } + }; // Function to handle form submission const handleSubmit = async (event) => { event.preventDefault(); - // Trim leading and trailing whitespace + // Trim leading and trailing whitespace const trimmedName = name.trim(); // Client-side validation for nickname if (trimmedName.length < 3 || trimmedName.length > 12) { - setNicknameError('Nickname must be between 3 and 12 characters'); + setNicknameError("Nickname must be between 3 and 12 characters"); return; } else { - setNicknameError(''); + setNicknameError(""); } if (!/^[0-9A-Z]+$/i.test(trimmedName)) { - setNicknameError('Nickname must contain only numbers and characters A-Z'); - return + setNicknameError("Nickname must contain only numbers and characters A-Z"); + return; } else { - setNicknameError(''); + setNicknameError(""); } -if (!name || /^\s*$/.test(trimmedName)) { - setNicknameError('Nickname cannot be empty or contain only whitespace'); - return + if (!name || /^\s*$/.test(trimmedName)) { + setNicknameError("Nickname cannot be empty or contain only whitespace"); + return; } else { - setNicknameError(''); + setNicknameError(""); } -// Validate the nickname on the server -const nicknameValidation = await validateNickname(name); - - // Check server-side validation result - if (!nicknameValidation.success) { - // Handle validation error, show error message to the user - console.error('Nickname validation failed:', nicknameValidation.error); - // Update state or show error message to the user - setNicknameError('Nickname validation failed'); - return; - } - - // Perform actions with form data (e.g., send to server) - console.log('Submitted:', { name, score }); + // Validate the nickname on the server + const nicknameValidation = await validateNickname(name); + + // Check server-side validation result + if (!nicknameValidation.success) { + // Handle validation error, show error message to the user + console.error("Nickname validation failed:", nicknameValidation.error); + // Update state or show error message to the user + setNicknameError("Nickname validation failed"); + return; + } + + console.log("Submitted:", { name, score }); // Send data to the server try { - const response = await fetch('/api/high-scores', { - method: 'POST', + const response = await fetch("/api/high-scores", { + method: "POST", headers: { - 'Content-Type': 'application/json', + "Content-Type": "application/json", }, - body: JSON.stringify({ name, score }), + body: JSON.stringify({ name, score }), // add completionTime here }); // Handling the server response if (response.ok) { - setSubmissionMessage('Your score has been submitted successfully'); - console.log('Score submitted successfully'); + setSubmissionMessage("Your score has been submitted successfully"); + console.log("Score submitted successfully"); // Optionally, you can update the state or perform other actions here onLeaderboardUpdate(); - navigate('/'); + navigate("/"); } else { - setSubmissionMessage('Failed to submit score'); - console.error('Failed to submit score'); + setSubmissionMessage("Failed to submit score"); + console.error("Failed to submit score"); } } catch (error) { - setSubmissionMessage('Error submitting score'); - console.error('Error submitting score:', error); + setSubmissionMessage("Error submitting score"); + console.error("Error submitting score:", error); } }; + console.log("time:", completionTime); + return ( -
      -

      Congratulations!

      -

      ON

      -

      COMPLETING

      -
      +
      +

      Congratulations!

      +

      ON

      +

      COMPLETING

      +

      Your final score: {score}

      {completionTime && (

      Time taken to complete the quiz: {formatTime(completionTime)}

      )} -
      + {submissionMessage &&

      {submissionMessage}

      } - -
      ); @@ -154,4 +157,3 @@ const formatTime = (milliseconds) => { }; export default Congrats; - diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 9c3d1f12d9..00d4d1a759 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -182,7 +182,6 @@ const QuizComponent = () => { console.log("Quiz completed! Remaining lives:", lives); try { - // setScore((prevScore) => prevScore); console.log("score:", score); console.log("last score:", lastScore); await navigate("/congrads", { From 6cfd584ed116adf2fb013e7807c09a53e7647a4c Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Wed, 1 Nov 2023 23:00:14 -0300 Subject: [PATCH 103/184] fixed a reseting db problem --- express-back-end/db/schema/{schema.sql => 01_schema.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename express-back-end/db/schema/{schema.sql => 01_schema.sql} (100%) diff --git a/express-back-end/db/schema/schema.sql b/express-back-end/db/schema/01_schema.sql similarity index 100% rename from express-back-end/db/schema/schema.sql rename to express-back-end/db/schema/01_schema.sql From 01c4b8b90fa70ac9a51235c3667d69848ecaaa90 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Thu, 2 Nov 2023 00:25:49 -0300 Subject: [PATCH 104/184] sorting based on time --- react-front-end/src/components/HighScores.js | 46 +++++++++++--------- react-front-end/src/components/congrads.js | 5 ++- 2 files changed, 30 insertions(+), 21 deletions(-) diff --git a/react-front-end/src/components/HighScores.js b/react-front-end/src/components/HighScores.js index 5b479bde85..b8604294b8 100644 --- a/react-front-end/src/components/HighScores.js +++ b/react-front-end/src/components/HighScores.js @@ -1,31 +1,38 @@ // highscores.js -import React, { useState, useEffect } from 'react'; +import React, { useState, useEffect } from "react"; import "../style/home.css"; function HighScores() { const [highScores, setHighScores] = useState([]); useEffect(() => { // Fetch high scores from the server - fetch('http://localhost:8080/api/high-scores') - .then(response => response.json()) - .then(data => { - console.log('API Response:', data); - + fetch("http://localhost:8080/api/high-scores") + .then((response) => response.json()) + .then((data) => { + console.log("API Response:", data); + // Filter out entries with null names - const filteredHighScores = data.games.filter(score => score.nickname !== null); - - // Sort the high scores in descending order based on the 'score' property - const sortedHighScores = filteredHighScores.sort((a, b) => b.score - a.score); + const filteredHighScores = data.games.filter( + (score) => score.nickname !== null + ); - // sort the high scores by time - // logic here... + // Sort the high scores first by score in descending order, and then by completion time in ascending order + const sortedHighScores = filteredHighScores.sort((a, b) => { + if (b.score !== a.score) { + // If scores are different, sort by score in descending order + return b.score - a.score; + } else { + // If scores are the same, sort by completion time in ascending order + return a.completionTime - b.completionTime; + } + }); // Take only the top 20 high scores const top20HighScores = sortedHighScores.slice(0, 20); - + setHighScores(top20HighScores); }) - .catch(error => console.error('Error fetching high scores:', error)); + .catch((error) => console.error("Error fetching high scores:", error)); }, []); return ( @@ -33,11 +40,11 @@ function HighScores() {
      {highScores.map((score, index) => (
      -
        -
      • - {score.nickname} - {score.score} -
      • +
          +
        • + {score.nickname} + {score.score} +
      ))} @@ -47,4 +54,3 @@ function HighScores() { } export default HighScores; - diff --git a/react-front-end/src/components/congrads.js b/react-front-end/src/components/congrads.js index 9e1bb15a4a..1735e22936 100644 --- a/react-front-end/src/components/congrads.js +++ b/react-front-end/src/components/congrads.js @@ -26,6 +26,9 @@ const Congrats = ({ onLeaderboardUpdate }) => { // Access the score from the location state const score = location.state && location.state.score; + // Access the time from the location state + const time = location.state && location.state.time; + // Function to validate the nickname const validateNickname = async (nickname) => { try { @@ -96,7 +99,7 @@ const Congrats = ({ onLeaderboardUpdate }) => { headers: { "Content-Type": "application/json", }, - body: JSON.stringify({ name, score }), // add completionTime here + body: JSON.stringify({ name, score, time }), // add completionTime here }); // Handling the server response From 58902d3728144cd53475bc25d1f394f3b8f6ffb1 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Thu, 2 Nov 2023 01:19:08 -0300 Subject: [PATCH 105/184] fixed merging issues --- react-front-end/src/components/quiz.js | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index e49f63c726..e30306b394 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -5,6 +5,7 @@ import "../style/quiz.css"; import Dude from "../asset/dude.png"; import Dude2 from "../asset/thumbs-down.png"; import Dude3 from "../asset/thinking-dude.png"; +import Quiz from "../asset/THELOGO.png"; import Header from "./header"; const QuizComponent = () => { @@ -24,7 +25,7 @@ const QuizComponent = () => { const [currentQuestionNumber, setCurrentQuestionNumber] = useState(1); const [totalQuestions, setTotalQuestions] = useState(0); - const timerDuration = 20; // in seconds + const timerDuration = 300; // in seconds const [timer, setTimer] = useState(timerDuration); useEffect(() => { @@ -38,6 +39,15 @@ const QuizComponent = () => { }, [timer]); + +useEffect(() => { + if (timer === 0 && lives === 0) { + setGameOver(true); + } +}, [timer]); + + + const optionLabel = { 0: "A", 1: "B", @@ -93,6 +103,9 @@ const QuizComponent = () => { setClickFifty(true); }; + + + const handleSwitchClick = () => { setCurrentQuestionIndex((prevIndex) => prevIndex + 1); }; @@ -247,12 +260,11 @@ const QuizComponent = () => { }; return ( +
      - quizjs - - {/* {currentQuestionIndex > questions.length - 1 ? No More questions : */} +
      -
      + {!gameOver &&

      Round {currentRound}

      {`Question: ${currentQuestionNumber}/${totalQuestions}`}

      {currentQuestion.question}

      From c52205093ab398a3f17b32f56f6109df0661de00 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Thu, 2 Nov 2023 01:57:39 -0300 Subject: [PATCH 106/184] cleaned up code --- react-front-end/src/components/quiz.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index e30306b394..7f879a93b4 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -5,7 +5,6 @@ import "../style/quiz.css"; import Dude from "../asset/dude.png"; import Dude2 from "../asset/thumbs-down.png"; import Dude3 from "../asset/thinking-dude.png"; -import Quiz from "../asset/THELOGO.png"; import Header from "./header"; const QuizComponent = () => { @@ -21,11 +20,13 @@ const QuizComponent = () => { const [options, setOptions] = useState([]); const [fiftyOptions, setFiftyOptions] = useState([]); const [clickFifty, setClickFifty] = useState(false); + + const [gameOver, setGameOver] = useState(false); const [currentQuestionNumber, setCurrentQuestionNumber] = useState(1); const [totalQuestions, setTotalQuestions] = useState(0); - const timerDuration = 300; // in seconds + const timerDuration = 300; // five minute timer const [timer, setTimer] = useState(timerDuration); useEffect(() => { From 97506019df06a628d04abdae35221616dea8740b Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Thu, 2 Nov 2023 02:03:50 -0300 Subject: [PATCH 107/184] question counter is working with skip now --- react-front-end/src/components/quiz.js | 1 + 1 file changed, 1 insertion(+) diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 7f879a93b4..5dd5fab63a 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -71,6 +71,7 @@ useEffect(() => { const handleSkipClick = async () => { setCurrentQuestionIndex((prevIndex) => prevIndex + 1); + setCurrentQuestionNumber((prevNumber) => prevNumber + 1); if (currentQuestionIndex % 5 === 4) { // Move to the next round after every 5 questions setCurrentRound((prevRound) => prevRound + 1); From 14d862158f9da3f46a3a2fb2e4613ed63adebec8 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Thu, 2 Nov 2023 02:30:59 -0300 Subject: [PATCH 108/184] got rid of huge padding on front page --- react-front-end/src/components/header.js | 1 + react-front-end/src/style/App.css | 3 +++ react-front-end/src/style/home.css | 12 +++++------- react-front-end/src/style/instruction.css | 2 -- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/react-front-end/src/components/header.js b/react-front-end/src/components/header.js index 57d7e9e61d..cb48b1d545 100644 --- a/react-front-end/src/components/header.js +++ b/react-front-end/src/components/header.js @@ -1,4 +1,5 @@ import React from "react"; +import "../style/App.css"; import InstructionImage from "../asset/instruction.png"; import Quiz from "../asset/THELOGO.png"; import 'animate.css'; diff --git a/react-front-end/src/style/App.css b/react-front-end/src/style/App.css index 1e2cc9f104..6465967362 100644 --- a/react-front-end/src/style/App.css +++ b/react-front-end/src/style/App.css @@ -3,3 +3,6 @@ div-style { } +.top-page { + padding-right: 160px; +} \ No newline at end of file diff --git a/react-front-end/src/style/home.css b/react-front-end/src/style/home.css index 29bb17d113..ba23e612bf 100644 --- a/react-front-end/src/style/home.css +++ b/react-front-end/src/style/home.css @@ -1,5 +1,5 @@ .content-container { - margin-right: 150px; + /* margin-right: 150px; */ } .rectangle-button { @@ -36,7 +36,7 @@ } .home { - height: 100vh; + /* height: 100vh; */ display: flex; justify-content: center; align-items: center; @@ -54,12 +54,12 @@ .dude-container { display: flex; align-items: center; - padding-left: 500px; + /* padding-left: 500px; */ } .start { display: flex; - padding-left: 490px; + /* padding-left: 490px; */ } .dude { @@ -79,8 +79,7 @@ justify-content: center; } .des h1 { - margin: 10px 0; /* Adjust the margin as needed for spacing */ -/* max-width: 20%; */ + margin: 10px 0; } .player-name { @@ -94,7 +93,6 @@ justify-content: center; .score-columns { display: flex; - /* justify-content: space-between; */ margin-top: 20px; flex-direction: column; flex-wrap: wrap; diff --git a/react-front-end/src/style/instruction.css b/react-front-end/src/style/instruction.css index e7bd95e967..a9d9359d16 100644 --- a/react-front-end/src/style/instruction.css +++ b/react-front-end/src/style/instruction.css @@ -15,7 +15,6 @@ .instruction-image { width: 1000px; -/* margin-right: 500px; */ } .instruction-container { @@ -35,7 +34,6 @@ .how-to-play { display: flex; justify-content: center; - flex-direction: column; position: relative; bottom: 90px; From 53fadde542457a2fabe856c57b118e9f6ceec63e Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Thu, 2 Nov 2023 02:42:45 -0300 Subject: [PATCH 109/184] adjusted header --- react-front-end/src/components/header.js | 2 +- react-front-end/src/components/quiz.js | 36 ++---------------------- react-front-end/src/style/App.css | 4 +++ 3 files changed, 8 insertions(+), 34 deletions(-) diff --git a/react-front-end/src/components/header.js b/react-front-end/src/components/header.js index cb48b1d545..8ed2a23ce9 100644 --- a/react-front-end/src/components/header.js +++ b/react-front-end/src/components/header.js @@ -41,7 +41,7 @@ function header(props) { if (props.page === "congrads") { return (
      -
      +
      quizjs
      diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 5dd5fab63a..daa2422e3f 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -20,8 +20,6 @@ const QuizComponent = () => { const [options, setOptions] = useState([]); const [fiftyOptions, setFiftyOptions] = useState([]); const [clickFifty, setClickFifty] = useState(false); - - const [gameOver, setGameOver] = useState(false); const [currentQuestionNumber, setCurrentQuestionNumber] = useState(1); const [totalQuestions, setTotalQuestions] = useState(0); @@ -39,16 +37,12 @@ const QuizComponent = () => { return () => clearInterval(timerInterval); }, [timer]); - - useEffect(() => { if (timer === 0 && lives === 0) { setGameOver(true); } }, [timer]); - - const optionLabel = { 0: "A", 1: "B", @@ -56,7 +50,6 @@ useEffect(() => { 3: "D", }; - useEffect(() => { if (questions.length > 0 && currentQuestionIndex < questions.length) { setOptions([ @@ -78,7 +71,7 @@ useEffect(() => { } if (currentQuestionIndex === questions.length - 1) { // Quiz completed - console.log("Quiz completed! Remaining lives:", lives); + console.log("Quiz completed!"); try { await navigate("/congrads", { state: { score, lives, startTime } }); // pass the score as state @@ -105,9 +98,6 @@ useEffect(() => { setClickFifty(true); }; - - - const handleSwitchClick = () => { setCurrentQuestionIndex((prevIndex) => prevIndex + 1); }; @@ -139,21 +129,14 @@ useEffect(() => { }, []); const handleAnswerClick = (selectedAnswer) => { - console.log("currentRound", currentRound); const correctOption = questions[currentQuestionIndex].correct_option; - // console log for debugging - console.log("correct option:", correctOption); // Map the correct option to the corresponding index (A->0, B->1, C->2, D->3) - const correctIndex = correctOption.charCodeAt(0) - "A".charCodeAt(0); - // console log for debugging - console.log("correct index:", correctIndex); + const correctIndex = correctOption.charCodeAt(0) - "A".charCodeAt(0) let lastScore = 0; if (selectedAnswer === correctIndex) { - // Handle correct answer logic - console.log("Correct answer!"); if (hintUsed || clickFifty) { setScore((prevScore) => prevScore + 10); @@ -173,9 +156,7 @@ useEffect(() => { handleNextClick(lastScore); }, 1500); } else { - console.log("Wrong answer!"); setLives((prevLives) => prevLives - 1); - // setScore((prevScore) => prevScore); setShowDudeImage(false); setShowDude2Image(true); setShowDude3Image(false); @@ -197,11 +178,9 @@ useEffect(() => { const handleNextClick = async (lastScore) => { if (currentQuestionIndex === questions.length - 1) { // Quiz completed - console.log("Quiz completed! Remaining lives:", lives); + console.log("Quiz completed!"); try { - console.log("score:", score); - console.log("last score:", lastScore); await navigate("/congrads", { state: { score: score + lastScore, lives, startTime }, }); // pass the score as state @@ -219,15 +198,6 @@ useEffect(() => { setCurrentRound((prevRound) => prevRound + 1); } - // if (lives === 0) { - // // All lives are gone, navigate to the home page - // try { - // await navigate("/"); - // } catch (error) { - // console.error("Error navigating to /:", error); - // } - // } - if (lives === 0) { setGameOver(true); } diff --git a/react-front-end/src/style/App.css b/react-front-end/src/style/App.css index 6465967362..b42e523686 100644 --- a/react-front-end/src/style/App.css +++ b/react-front-end/src/style/App.css @@ -5,4 +5,8 @@ div-style { .top-page { padding-right: 160px; +} + +.logo { + padding-left: 60px; } \ No newline at end of file From 35e122832819aff873d81e462f80a9579c5939e3 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Thu, 2 Nov 2023 11:55:06 -0300 Subject: [PATCH 110/184] center home page --- react-front-end/src/style/App.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/react-front-end/src/style/App.css b/react-front-end/src/style/App.css index b42e523686..736293eab0 100644 --- a/react-front-end/src/style/App.css +++ b/react-front-end/src/style/App.css @@ -1,6 +1,7 @@ div-style { background: linear-gradient(to right, #9c0fbb, #770890); - +display: flex; +justify-content: center; } .top-page { From 1a4ab3402138e5296642ff3c88f6a09b485d510a Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Thu, 2 Nov 2023 12:16:35 -0300 Subject: [PATCH 111/184] fixed problem with state needing to change when at 0 lives for game over --- react-front-end/src/components/quiz.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index daa2422e3f..06a9b494f5 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -38,7 +38,7 @@ const QuizComponent = () => { }, [timer]); useEffect(() => { - if (timer === 0 && lives === 0) { + if (timer === 0 && lives === 1) { setGameOver(true); } }, [timer]); @@ -198,7 +198,7 @@ useEffect(() => { setCurrentRound((prevRound) => prevRound + 1); } - if (lives === 0) { + if (lives === 1) { setGameOver(true); } } @@ -215,6 +215,7 @@ useEffect(() => { setGameOver(false); setTimer(timerDuration); // Reset the timer to its initial value setCurrentQuestionIndex(0); // Reset the current question index to 0 or any other initial value + setCurrentQuestionNumber(1); setCurrentRound(1); // Reset the current round to 1 or any other initial value setLives(5); // Reset the lives to their initial value setShowHint(false); // Reset the hint display From 96e1db1a1620ae397a6de3df7d8cd903ac8cf336 Mon Sep 17 00:00:00 2001 From: nick stilwell Date: Thu, 2 Nov 2023 17:12:54 +0000 Subject: [PATCH 112/184] add initial code for mute button and more sounds --- react-front-end/src/asset/Sound_off.png | Bin 0 -> 824 bytes react-front-end/src/asset/Sound_on.png | Bin 0 -> 1808 bytes .../src/asset/sounds/Error_008.ogg | Bin 0 -> 9215 bytes .../src/asset/sounds/Glass_004.ogg | Bin 0 -> 8323 bytes .../src/asset/sounds/Question_003.ogg | Bin 0 -> 8233 bytes .../src/asset/sounds/Scratch_004.ogg | Bin 0 -> 16478 bytes react-front-end/src/components/SoundHelper.js | 6 ++++- react-front-end/src/components/header.js | 24 ++++++++++++++++-- 8 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 react-front-end/src/asset/Sound_off.png create mode 100644 react-front-end/src/asset/Sound_on.png create mode 100644 react-front-end/src/asset/sounds/Error_008.ogg create mode 100644 react-front-end/src/asset/sounds/Glass_004.ogg create mode 100644 react-front-end/src/asset/sounds/Question_003.ogg create mode 100644 react-front-end/src/asset/sounds/Scratch_004.ogg diff --git a/react-front-end/src/asset/Sound_off.png b/react-front-end/src/asset/Sound_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3f61c0dd45c97561e59f913ded21a72991650867 GIT binary patch literal 824 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 literal 0 HcmV?d00001 diff --git a/react-front-end/src/asset/sounds/Question_003.ogg b/react-front-end/src/asset/sounds/Question_003.ogg new file mode 100644 index 0000000000000000000000000000000000000000..bbb8b2edc2ce3858cad6daf4d484619fbb900abc GIT binary patch literal 8233 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 T34g^Ubag)Tff%TrwPpG*D^4u# literal 0 HcmV?d00001 diff --git a/react-front-end/src/asset/sounds/Scratch_004.ogg b/react-front-end/src/asset/sounds/Scratch_004.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5324aeba2c62df7d9d8991e7f4bfce910cae7140 GIT binary patch literal 16478 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 literal 0 HcmV?d00001 diff --git a/react-front-end/src/components/SoundHelper.js b/react-front-end/src/components/SoundHelper.js index b6107bfb50..299582b4bf 100644 --- a/react-front-end/src/components/SoundHelper.js +++ b/react-front-end/src/components/SoundHelper.js @@ -10,4 +10,8 @@ const sounds = { hover1: Select_008 } -export { handleAudio, sounds }; \ No newline at end of file +function muteButton() { + +} + +export { handleAudio, sounds, muteButton }; \ No newline at end of file diff --git a/react-front-end/src/components/header.js b/react-front-end/src/components/header.js index 57d7e9e61d..689d5dd4e1 100644 --- a/react-front-end/src/components/header.js +++ b/react-front-end/src/components/header.js @@ -1,10 +1,25 @@ -import React from "react"; +import React, { useState } from 'react' import InstructionImage from "../asset/instruction.png"; import Quiz from "../asset/THELOGO.png"; import 'animate.css'; +import SoundOn from "../asset/Sound_on.png"; +import SoundOff from "../asset/Sound_off.png"; + +const [volume, setVolume] = useState(true) function header(props) { + function muteButton() { + if (volume === true) { + return sound on + } + if (volume === false) { + return sound off + } + //{muteButton()} + } + + if (props.page === "home") { return (
      @@ -17,13 +32,18 @@ function header(props) {

      Test your wit against a series of fun, unexpected, and absurd questions!

      +
      ) } if (props.page === "instructions") { return ( - quizjs +
      +
      + quizjs +
      +
      ) } From 2f86c319b9389e9f8b2ee814cf0592c5075dc9f0 Mon Sep 17 00:00:00 2001 From: Hossein Date: Thu, 2 Nov 2023 10:48:05 -0700 Subject: [PATCH 113/184] handle all buttons functionality --- react-front-end/src/components/quiz.js | 178 ++++++++++++------------- 1 file changed, 82 insertions(+), 96 deletions(-) diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 9fee5fa8e3..78addbd590 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -22,11 +22,49 @@ const QuizComponent = () => { const [clickFifty, setClickFifty] = useState(false); const [clickSwap, setClickSwap] = useState(false); const [numberOfquestionsPerRound, setNumberOfQuestionsPerRound] = useState(0); - - + const [showDude2Image, setShowDude2Image] = useState(false); // thumbs down + const [showDude3Image, setShowDude3Image] = useState(true); // thinking face + const [startTime, setStartTime] = useState(null); const timerDuration = 300; // 5 minutes in seconds const [timer, setTimer] = useState(timerDuration); + + const optionLabel = { + 0: "A", + 1: "B", + 2: "C", + 3: "D", + }; + + useEffect(() => { + // Fetch questions + fetch(`http://localhost:8080/api/questions/${currentRound}`) + .then((response) => { + if (!response.ok) { + throw new Error(`HTTP error! Status: ${response.status}`); + } + return response.json(); + }) + .then((data) => { + setQuestions(data.questions); + const opts = [ + data.questions[currentQuestionIndex].optiona, + data.questions[currentQuestionIndex].optionb, + data.questions[currentQuestionIndex].optionc, + data.questions[currentQuestionIndex].optiond, + ] + setOptions(opts); + setFiftyOptions(opts); + setCurrentQuestionIndex(0); + }) + .catch((error) => console.error("Error fetching questions:", error)); + }, [currentRound]); + + useEffect(() => { + // record start time + setStartTime(new Date()); + }, []); + useEffect(() => { const timerInterval = setInterval(() => { if (timer > 0) { @@ -38,14 +76,6 @@ const QuizComponent = () => { }, [timer]); - const optionLabel = { - 0: "A", - 1: "B", - 2: "C", - 3: "D", - }; - - useEffect(() => { if (questions.length > 0 && currentQuestionIndex < questions.length) { const opts = [ @@ -59,24 +89,28 @@ const QuizComponent = () => { } }, [currentQuestionIndex]); - const handleSkipClick = async () => { - if (currentRound === 3 && numberOfquestionsPerRound + 1 === 5) { - try { - await navigate("/congrads", { state: { score, lives, startTime } }); // pass the score as state - } catch (error) { - console.error("Error navigating to /congrads:", error); - } - } - else if (numberOfquestionsPerRound % 5 === 4) { - setCurrentRound((prevRound) => prevRound + 1); - setNumberOfQuestionsPerRound(0); - setClickFifty(false); - setClickSwap(false); - } else { - setCurrentQuestionIndex((prevIndex) => prevIndex + 1); - setNumberOfQuestionsPerRound((prevIndex) => prevIndex + 1); - } - }; + // const handleSkipClick = async () => { + // if (currentRound === 3 && numberOfquestionsPerRound + 1 === 5) { + // try { + // await navigate("/congrads", { state: { score, lives, startTime } }); // pass the score as state + // } catch (error) { + // console.error("Error navigating to /congrads:", error); + // } + // } + // else if (numberOfquestionsPerRound % 5 === 4) { + // setCurrentRound((prevRound) => prevRound + 1); + // setNumberOfQuestionsPerRound(0); + // setClickFifty(false); + // setClickSwap(false); + // setHintUsed(false); + // setShowHint(false); + // } else { + // setCurrentQuestionIndex((prevIndex) => prevIndex + 1); + // setNumberOfQuestionsPerRound((prevIndex) => prevIndex + 1); + // setHintUsed(false); + // setShowHint(false); + // } + // }; const handleFiftyClick = () => { const question = questions[currentQuestionIndex]; @@ -108,57 +142,16 @@ const QuizComponent = () => { } }; - const [showDude2Image, setShowDude2Image] = useState(false); // thumbs down - const [showDude3Image, setShowDude3Image] = useState(true); // thinking face - const [startTime, setStartTime] = useState(null); - - useEffect(() => { - // Fetch questions - fetch(`http://localhost:8080/api/questions/${currentRound}`) - .then((response) => { - if (!response.ok) { - throw new Error(`HTTP error! Status: ${response.status}`); - } - return response.json(); - }) - .then((data) => { - setQuestions(data.questions); - const opts = [ - data.questions[currentQuestionIndex].optiona, - data.questions[currentQuestionIndex].optionb, - data.questions[currentQuestionIndex].optionc, - data.questions[currentQuestionIndex].optiond, - ] - setOptions(opts); - setFiftyOptions(opts); - setCurrentQuestionIndex(0); - }) - .catch((error) => console.error("Error fetching questions:", error)); - }, [currentRound]); - - useEffect(() => { - // record start time - setStartTime(new Date()); - }, []); - + const handleAnswerClick = (selectedAnswer) => { - setNumberOfQuestionsPerRound((prevIndex) => prevIndex + 1); - console.log("currentRound", currentRound); const correctOption = questions[currentQuestionIndex].correct_option; - // console log for debugging - console.log("correct option:", correctOption); // Map the correct option to the corresponding index (A->0, B->1, C->2, D->3) const correctIndex = correctOption.charCodeAt(0) - "A".charCodeAt(0); - // console log for debugging - console.log("correct index:", correctIndex); - let lastScore = 0; if (selectedAnswer === correctIndex) { // Handle correct answer logic - console.log("Correct answer!"); - if (hintUsed || clickFifty) { setScore((prevScore) => prevScore + 10); lastScore = 10; @@ -177,9 +170,7 @@ const QuizComponent = () => { handleNextClick(lastScore); }, 1500); } else { - console.log("Wrong answer!"); setLives((prevLives) => prevLives - 1); - // setScore((prevScore) => prevScore); setShowDudeImage(false); setShowDude2Image(true); setShowDude3Image(false); @@ -201,33 +192,31 @@ const QuizComponent = () => { const handleNextClick = async (lastScore) => { if (currentRound === 3 && numberOfquestionsPerRound + 1 === 5) { try { - await navigate("/congrads", { - state: { score: score + lastScore, lives, startTime }, - }); + await navigate("/congrads", { state: { score: score + lastScore, lives, startTime } }); // pass the score as state } catch (error) { console.error("Error navigating to /congrads:", error); } + } + else if (numberOfquestionsPerRound % 5 === 4) { + setCurrentRound((prevRound) => prevRound + 1); + setNumberOfQuestionsPerRound(0); + setClickFifty(false); + setClickSwap(false); + setHintUsed(false); + setShowHint(false); } else { - setNumberOfQuestionsPerRound ((prevIndex) => prevIndex + 1); setCurrentQuestionIndex((prevIndex) => prevIndex + 1); - setShowHint(false); // Reset the hint display when moving to the next question + setNumberOfQuestionsPerRound((prevIndex) => prevIndex + 1); setHintUsed(false); + setShowHint(false); + } - if (numberOfquestionsPerRound % 5 === 4) { - // Move to the next round after every 5 questions - setCurrentRound((prevRound) => prevRound + 1); - setNumberOfQuestionsPerRound(0); - setClickFifty(false); - setClickSwap(false); - } - - if (lives === 0) { - // All lives are gone, navigate to the home page - try { - await navigate("/"); - } catch (error) { - console.error("Error navigating to /:", error); - } + if (lives === 0) { + // All lives are gone, navigate to the home page + try { + await navigate("/"); + } catch (error) { + console.error("Error navigating to /:", error); } } }; @@ -241,9 +230,6 @@ const QuizComponent = () => { return (
      quizjs - - {/* {currentQuestionIndex > questions.length - 1 ? No More questions : */} -

      Round {currentRound}

      {currentQuestion.question}

      @@ -279,7 +265,7 @@ const QuizComponent = () => { - - - ))} -
    - {showDudeImage && Dude} - {showDude2Image && Dude2} - {showDude3Image && Dude3} -
    -

    - Lives: {Array.from({ length: lives }, (_, index) => "❤️").join(" ")} -

    -

    Score: {score}

    -

    - Time Left: {Math.floor(timer / 60)}: - {(timer % 60).toString().padStart(2, "0")} -

    {" "} - {showHint &&

    Hint: {currentQuestion.hint}

    } -
    - - - - +
    +

    Round {currentRound}

    +

    {`Question: ${currentQuestionNumber}/${totalQuestions}`}

    +

    {currentQuestion.question}

    +
    +
      + {options.map((option, index) => ( +
    • + +
    • + ))} +
    + {showDudeImage && Dude} + {showDude2Image && ( + Dude2 + )} + {showDude3Image && ( + Dude3 + )} +
    +

    + Lives:{" "} + {Array.from({ length: lives }, (_, index) => "❤️").join(" ")} +

    +

    Score: {score}

    +

    + Time Left: {Math.floor(timer / 60)}: + {(timer % 60).toString().padStart(2, "0")} +

    {" "} + {showHint &&

    Hint: {currentQuestion.hint}

    } +
    + + + + +
    -
    } + + )} {gameOver && (
    From 94694aaa5122678a782eaee0f1f50dea5b18e87d Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Fri, 3 Nov 2023 00:26:40 -0300 Subject: [PATCH 118/184] fixed game over issue --- react-front-end/src/components/quiz.js | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 913a7b93e6..5ccab7bfc8 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -25,6 +25,7 @@ const QuizComponent = () => { const [totalQuestions, setTotalQuestions] = useState(0); const timerDuration = 300; // five minute timer + const [clickSwap, setClickSwap] = useState(false); const [numberOfquestionsPerRound, setNumberOfQuestionsPerRound] = useState(0); const [showDude2Image, setShowDude2Image] = useState(false); // thumbs down @@ -73,17 +74,24 @@ const QuizComponent = () => { const timerInterval = setInterval(() => { if (timer > 0) { setTimer(timer - 1); + } else { + setGameOver(true); } }, 1000); return () => clearInterval(timerInterval); }, [timer]); - useEffect(() => { - if (timer === 0 && lives === 1) { - setGameOver(true); - } - }, [timer]); +console.log('the timer is:', timer); +if (timer === 0) { + console.log('time finished'); + // setGameOver(true); +} + // useEffect(() => { + // if (timer === 0 && lives === 1) { + // setGameOver(true); + // } + // }, [timer]); useEffect(() => { if (questions.length > 0 && currentQuestionIndex < questions.length) { @@ -199,13 +207,13 @@ const QuizComponent = () => { setShowHint(false); } - if (lives === 1) { + if (lives === 1 && timerDuration === 0) { // All lives are gone, navigate to the home page setGameOver(true); try { await navigate("/quiz"); } catch (error) { - console.error("Error navigating to /:", error); + console.error("Error navigating to /quiz:", error); } } }; From 197b0cd1cec64bb3b5e96dcc3ae3290d25a2bcf7 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Fri, 3 Nov 2023 00:48:17 -0300 Subject: [PATCH 119/184] lives running out working now --- react-front-end/src/components/quiz.js | 33 ++++++++++---------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 5ccab7bfc8..4921e845e9 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -82,17 +82,6 @@ const QuizComponent = () => { return () => clearInterval(timerInterval); }, [timer]); -console.log('the timer is:', timer); -if (timer === 0) { - console.log('time finished'); - // setGameOver(true); -} - // useEffect(() => { - // if (timer === 0 && lives === 1) { - // setGameOver(true); - // } - // }, [timer]); - useEffect(() => { if (questions.length > 0 && currentQuestionIndex < questions.length) { const opts = [ @@ -207,15 +196,19 @@ if (timer === 0) { setShowHint(false); } - if (lives === 1 && timerDuration === 0) { - // All lives are gone, navigate to the home page - setGameOver(true); - try { - await navigate("/quiz"); - } catch (error) { - console.error("Error navigating to /quiz:", error); - } - } +if (lives === 1) { + setGameOver(true); + navigate('/quiz'); +} + // if (lives === 1 && timerDuration === 0) { + // // All lives are gone, navigate to the home page + // setGameOver(true); + // try { + // await navigate("/quiz"); + // } catch (error) { + // console.error("Error navigating to /quiz:", error); + // } + // } }; if (questions.length === 0) { From 376bba03389d210ea373841050de4ec97dfe2f72 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Fri, 3 Nov 2023 01:16:01 -0300 Subject: [PATCH 120/184] deleted some commented out code --- react-front-end/src/components/quiz.js | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 4921e845e9..21437e57ca 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -200,15 +200,7 @@ if (lives === 1) { setGameOver(true); navigate('/quiz'); } - // if (lives === 1 && timerDuration === 0) { - // // All lives are gone, navigate to the home page - // setGameOver(true); - // try { - // await navigate("/quiz"); - // } catch (error) { - // console.error("Error navigating to /quiz:", error); - // } - // } + }; if (questions.length === 0) { From e7b5f1343d102112b7c96a9f27345e543c792cfc Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Fri, 3 Nov 2023 01:56:53 -0300 Subject: [PATCH 121/184] removed last score varible and refactored score --- react-front-end/src/components/quiz.js | 32 +++++++++++++++++--------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 21437e57ca..568b175b4b 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -32,6 +32,7 @@ const QuizComponent = () => { const [showDude3Image, setShowDude3Image] = useState(true); // thinking face const [startTime, setStartTime] = useState(null); const [timer, setTimer] = useState(timerDuration); + const [finishQuiz, setFinishQuiz] = useState(false); const optionLabel = { 0: "A", @@ -131,16 +132,16 @@ const QuizComponent = () => { // Map the correct option to the corresponding index (A->0, B->1, C->2, D->3) const correctIndex = correctOption.charCodeAt(0) - "A".charCodeAt(0); - let lastScore = 0; + if (selectedAnswer === correctIndex) { // Handle correct answer logic if (hintUsed || clickFifty) { setScore((prevScore) => prevScore + 10); - lastScore = 10; + } else { setScore((prevScore) => prevScore + 20); - lastScore = 20; + } setShowDudeImage(true); @@ -151,18 +152,18 @@ const QuizComponent = () => { setShowDudeImage(false); setShowDude3Image(true); }, 1500); - handleNextClick(lastScore); + handleNextClick(); } else { setLives((prevLives) => prevLives - 1); setShowDudeImage(false); setShowDude2Image(true); setShowDude3Image(false); - lastScore = -10; + setTimeout(() => { setShowDude2Image(false); setShowDude3Image(true); }, 1500); - handleNextClick(lastScore); + handleNextClick(); } }; @@ -171,15 +172,24 @@ const QuizComponent = () => { setShowHint(true); // Show the hint }; - const handleNextClick = async () => { - if (currentRound === 3 && numberOfquestionsPerRound + 1 === 5) { + + // useEffect to navigate when finishQuiz is true + useEffect(() => { + if (finishQuiz) { try { - await navigate("/congrads", { - state: { score: score, lives, startTime }, - }); // pass the score as state + navigate("/congrads", { state: { score, lives, startTime } }); } catch (error) { console.error("Error navigating to /congrads:", error); } + } + }, [finishQuiz, navigate, score]); + + + + const handleNextClick = async () => { + if (currentRound === 3 && numberOfquestionsPerRound + 1 === 5) { + setFinishQuiz(true); + } else if (numberOfquestionsPerRound % 5 === 4) { setCurrentRound((prevRound) => prevRound + 1); setCurrentQuestionNumber((prevNumber) => prevNumber + 1); From b6f2c266a93ccfaf6b317efb5680e5f33a04bb22 Mon Sep 17 00:00:00 2001 From: nick stilwell Date: Fri, 3 Nov 2023 19:13:30 +0000 Subject: [PATCH 122/184] add appcontext, more sounds --- .../src/asset/sounds/Close_003.ogg | Bin 0 -> 15648 bytes .../src/asset/sounds/Select_005.ogg | Bin 0 -> 6767 bytes react-front-end/src/components/AppContext.js | 33 ++++++++++++++++++ react-front-end/src/components/SoundHelper.js | 28 ++++++++++----- react-front-end/src/components/header.js | 24 ++++++------- react-front-end/src/components/home.js | 16 +++++---- react-front-end/src/index.js | 3 +- 7 files changed, 74 insertions(+), 30 deletions(-) create mode 100644 react-front-end/src/asset/sounds/Close_003.ogg create mode 100644 react-front-end/src/asset/sounds/Select_005.ogg create mode 100644 react-front-end/src/components/AppContext.js diff --git a/react-front-end/src/asset/sounds/Close_003.ogg b/react-front-end/src/asset/sounds/Close_003.ogg new file mode 100644 index 0000000000000000000000000000000000000000..def35d4a055689fdd226de8120c07c09ff87b575 GIT binary patch literal 15648 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 literal 0 HcmV?d00001 diff --git a/react-front-end/src/asset/sounds/Select_005.ogg b/react-front-end/src/asset/sounds/Select_005.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ce7302118debc0e8ff3724129866e9900fca1cd5 GIT binary patch literal 6767 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 C#$z`C literal 0 HcmV?d00001 diff --git a/react-front-end/src/components/AppContext.js b/react-front-end/src/components/AppContext.js new file mode 100644 index 0000000000..087a2bac71 --- /dev/null +++ b/react-front-end/src/components/AppContext.js @@ -0,0 +1,33 @@ +import React, {useReducer, createContext} from "react" + +export const ACTIONS = { + TOGGLEMUTE: 'TOGGLEMUTE' +} + +function reducer(state, action) { + switch(action.type) { + case ACTIONS.TOGGLEMUTE: + return { + ...state, isMute: action.value + } + } +} + +const initialState = { + isMute: false +} + +export const AppContext = createContext(); + +export function AppProvider({children}) { + const [state, dispatch] = useReducer(reducer, initialState); + + const toggleMute = () => { + dispatch({ type: ACTIONS.TOGGLEMUTE, value: state.isMute? false : true }) + } + + return ( + + {children} + ) +} \ No newline at end of file diff --git a/react-front-end/src/components/SoundHelper.js b/react-front-end/src/components/SoundHelper.js index 299582b4bf..f7cf04243a 100644 --- a/react-front-end/src/components/SoundHelper.js +++ b/react-front-end/src/components/SoundHelper.js @@ -1,17 +1,27 @@ import Switch_004 from '../asset/sounds/Switch_004.ogg' import Select_008 from '../asset/sounds/Select_008.ogg' +import Question_003 from '../asset/sounds/Question_003.ogg' +import Error_008 from '../asset/sounds/Error_008.ogg' +import Glass_004 from '../asset/sounds/Glass_004.ogg' +import Close_003 from '../asset/sounds/Close_003.ogg' +import Scratch_004 from '../asset/sounds/Scratch_004.ogg' +import Select_005 from '../asset/sounds/Select_005.ogg' -const handleAudio = (sound) => { - new Audio(sound).play() +const handleAudio = (volume, sound) => { + if (volume && sound) { + new Audio(sound).play() + } } const sounds = { - click1: Switch_004, - hover1: Select_008 + click: Switch_004, + hover: Select_008, + correct: Question_003, + incorrect: Error_008, + hint: Glass_004, + skip: Close_003, + fifty: Scratch_004, + swap: Select_005 } -function muteButton() { - -} - -export { handleAudio, sounds, muteButton }; \ No newline at end of file +export { handleAudio, sounds }; \ No newline at end of file diff --git a/react-front-end/src/components/header.js b/react-front-end/src/components/header.js index 1ccc8d1c56..f8d95d31a2 100644 --- a/react-front-end/src/components/header.js +++ b/react-front-end/src/components/header.js @@ -1,25 +1,23 @@ -import React, { useState } from 'react' +import React, { useContext } from 'react' import "../style/App.css"; import InstructionImage from "../asset/instruction.png"; import Quiz from "../asset/THELOGO.png"; import 'animate.css'; import SoundOn from "../asset/Sound_on.png"; import SoundOff from "../asset/Sound_off.png"; - -const [volume, setVolume] = useState(true) +import { AppContext } from './AppContext'; function header(props) { - function muteButton() { - if (volume === true) { - return sound on - } - if (volume === false) { - return sound off - } - //{muteButton()} - } + const { state, toggleMute } = useContext(AppContext) + function VolumeButton() { + return (state.isMute) ? + sound on + : sound off + } if (props.page === "home") { return ( @@ -33,7 +31,7 @@ function header(props) {

    Test your wit against a series of fun, unexpected, and absurd questions!

    - + ) } diff --git a/react-front-end/src/components/home.js b/react-front-end/src/components/home.js index 796df1fff4..c26fcc77d0 100644 --- a/react-front-end/src/components/home.js +++ b/react-front-end/src/components/home.js @@ -4,14 +4,16 @@ import React from "react"; import { useNavigate } from "react-router-dom"; import HighScores from "./HighScores"; -import { useState, useEffect } from "react"; +import { useState, useEffect, useContext } from "react"; import Brandon from "../asset/brandon.png"; import { handleAudio, sounds } from "./SoundHelper"; +import { AppContext } from "./AppContext"; import 'animate.css'; import Header from "./header"; function Home() { const [highScores, setHighScores] = useState([]); const navigate = useNavigate(); + const { state } = useContext(AppContext) useEffect(() => { // Fetch high scores from the server @@ -27,14 +29,14 @@ function Home() { function handleStartClick() { navigate("/quiz"); - handleAudio(sounds.click1) + handleAudio(state.isMute, sounds.click1) } function handleInstructionsClick() { - navigate("instructions") - handleAudio(sounds.click1) + console.log(state.isMute) + navigate("instructions"); + handleAudio(state.isMute, sounds.click1) } - return (
    @@ -50,7 +52,7 @@ function Home() { className="rectangle-button" onClick={handleInstructionsClick} onMouseEnter={() => { - handleAudio(sounds.hover1); + }} > INSTRUCTIONS @@ -59,7 +61,7 @@ function Home() { className="rectangle-button" onClick={handleStartClick} onMouseEnter={() => { - handleAudio(sounds.hover1); + }} > START diff --git a/react-front-end/src/index.js b/react-front-end/src/index.js index b32be9b9b3..9cf2b5cccd 100644 --- a/react-front-end/src/index.js +++ b/react-front-end/src/index.js @@ -3,8 +3,9 @@ import ReactDOM from 'react-dom'; import './style/index.css'; import App from './App'; import * as serviceWorker from './serviceWorker'; +import { AppProvider } from './components/AppContext'; -ReactDOM.render(, document.getElementById('root')); +ReactDOM.render(, document.getElementById('root')); // If you want your app to work offline and load faster, you can change // unregister() to register() below. Note this comes with some pitfalls. From 70d48ceb4855ff36b5605e8a165092a630bbe3d5 Mon Sep 17 00:00:00 2001 From: nick stilwell Date: Fri, 3 Nov 2023 19:26:39 +0000 Subject: [PATCH 123/184] add sound to instructions page --- react-front-end/src/components/AppContext.js | 2 +- react-front-end/src/components/home.js | 8 ++++---- react-front-end/src/components/instruction.js | 18 +++++++++++++++--- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/react-front-end/src/components/AppContext.js b/react-front-end/src/components/AppContext.js index 087a2bac71..48c0aa1b19 100644 --- a/react-front-end/src/components/AppContext.js +++ b/react-front-end/src/components/AppContext.js @@ -14,7 +14,7 @@ function reducer(state, action) { } const initialState = { - isMute: false + isMute: true } export const AppContext = createContext(); diff --git a/react-front-end/src/components/home.js b/react-front-end/src/components/home.js index c26fcc77d0..8cb43b093e 100644 --- a/react-front-end/src/components/home.js +++ b/react-front-end/src/components/home.js @@ -29,12 +29,12 @@ function Home() { function handleStartClick() { navigate("/quiz"); - handleAudio(state.isMute, sounds.click1) + handleAudio(state.isMute, sounds.click) } function handleInstructionsClick() { console.log(state.isMute) navigate("instructions"); - handleAudio(state.isMute, sounds.click1) + handleAudio(state.isMute, sounds.click) } return ( @@ -52,7 +52,7 @@ function Home() { className="rectangle-button" onClick={handleInstructionsClick} onMouseEnter={() => { - + handleAudio(state.isMute, sounds.hover) }} > INSTRUCTIONS @@ -61,7 +61,7 @@ function Home() { className="rectangle-button" onClick={handleStartClick} onMouseEnter={() => { - + handleAudio(state.isMute, sounds.hover) }} > START diff --git a/react-front-end/src/components/instruction.js b/react-front-end/src/components/instruction.js index 89e9137b55..7d12c75ebc 100644 --- a/react-front-end/src/components/instruction.js +++ b/react-front-end/src/components/instruction.js @@ -1,22 +1,28 @@ import "../style/instruction.css"; -import React from "react"; +import React, { useContext } from "react"; import { useNavigate } from "react-router-dom"; import Header from "./header" +import { handleAudio, sounds } from "./SoundHelper"; +import { AppContext } from "./AppContext"; function Instruction() { const navigate = useNavigate(); + const { state } = useContext(AppContext) function handleStartClick() { navigate("/quiz"); + handleAudio(state.isMute, sounds.click) } function handleBackClick() { navigate("/") + handleAudio(state.isMute, sounds.click) } function handleStartClick() { navigate("/quiz"); + handleAudio(state.isMute, sounds.click) } return ( @@ -54,8 +60,14 @@ function Instruction() {
    - - + +
    ); From a1f8f14384e2fb3c4e28b7b42d47a8e8aa7c0a6e Mon Sep 17 00:00:00 2001 From: nick stilwell Date: Fri, 3 Nov 2023 19:35:39 +0000 Subject: [PATCH 124/184] add container for mute button styling --- react-front-end/src/components/header.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/react-front-end/src/components/header.js b/react-front-end/src/components/header.js index f8d95d31a2..d67de24397 100644 --- a/react-front-end/src/components/header.js +++ b/react-front-end/src/components/header.js @@ -13,10 +13,14 @@ function header(props) { function VolumeButton() { return (state.isMute) ? - sound on - : sound off +
    + sound on +
    + :
    + sound off +
    } if (props.page === "home") { From ece5dc3437734302b7f042e0ba51781eaf160d22 Mon Sep 17 00:00:00 2001 From: nick stilwell Date: Fri, 3 Nov 2023 19:38:29 +0000 Subject: [PATCH 125/184] add mute button to quiz page --- react-front-end/src/components/header.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/react-front-end/src/components/header.js b/react-front-end/src/components/header.js index d67de24397..1ba8085a1c 100644 --- a/react-front-end/src/components/header.js +++ b/react-front-end/src/components/header.js @@ -29,14 +29,14 @@ function header(props) {
    quizjs
    -
    -
    -

    QuizJS is a series of questions that defy conventional thinking and logic.

    -

    Test your wit against a series of fun, unexpected, and absurd questions!

    +
    +
    +

    QuizJS is a series of questions that defy conventional thinking and logic.

    +

    Test your wit against a series of fun, unexpected, and absurd questions!

    +
    +
    - -
    ) } @@ -56,6 +56,7 @@ function header(props) {
    quizjs
    + ) } From 828e80332d3a2470f85306de5e38f7961beb56bd Mon Sep 17 00:00:00 2001 From: nick stilwell Date: Fri, 3 Nov 2023 20:09:00 +0000 Subject: [PATCH 126/184] add sounds to quiz page --- react-front-end/src/components/SoundHelper.js | 1 + react-front-end/src/components/home.js | 8 ++---- react-front-end/src/components/quiz.js | 25 ++++++++++++++++--- 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/react-front-end/src/components/SoundHelper.js b/react-front-end/src/components/SoundHelper.js index f7cf04243a..d5b9a9ea9c 100644 --- a/react-front-end/src/components/SoundHelper.js +++ b/react-front-end/src/components/SoundHelper.js @@ -7,6 +7,7 @@ import Close_003 from '../asset/sounds/Close_003.ogg' import Scratch_004 from '../asset/sounds/Scratch_004.ogg' import Select_005 from '../asset/sounds/Select_005.ogg' + const handleAudio = (volume, sound) => { if (volume && sound) { new Audio(sound).play() diff --git a/react-front-end/src/components/home.js b/react-front-end/src/components/home.js index 8cb43b093e..faab9015c2 100644 --- a/react-front-end/src/components/home.js +++ b/react-front-end/src/components/home.js @@ -51,18 +51,14 @@ function Home() { diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 568b175b4b..3803928fad 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -1,14 +1,17 @@ // quiz.js -import React, { useState, useEffect } from "react"; +import React, { useState, useEffect, useContext } from "react"; import { useNavigate } from "react-router-dom"; import "../style/quiz.css"; import Dude from "../asset/dude.png"; import Dude2 from "../asset/thumbs-down.png"; import Dude3 from "../asset/thinking-dude.png"; import Header from "./header"; +import { AppContext } from './AppContext'; +import { handleAudio, sounds } from "./SoundHelper"; const QuizComponent = () => { const navigate = useNavigate(); + const { state } = useContext(AppContext) const [questions, setQuestions] = useState([]); const [currentQuestionIndex, setCurrentQuestionIndex] = useState(0); const [currentRound, setCurrentRound] = useState(1); @@ -111,6 +114,7 @@ const QuizComponent = () => { newOption.push(options[random]); setFiftyOptions(newOption); setClickFifty(true); + handleAudio(state.isMute, sounds.fifty) }; const handleSwapClick = () => { @@ -124,6 +128,7 @@ const QuizComponent = () => { setCurrentQuestionIndex((prevIndex) => prevIndex + 1); setClickSwap(true); } + handleAudio(state.isMute, sounds.swap) }; const handleAnswerClick = (selectedAnswer) => { @@ -153,6 +158,7 @@ const QuizComponent = () => { setShowDude3Image(true); }, 1500); handleNextClick(); + handleAudio(state.isMute, sounds.correct) } else { setLives((prevLives) => prevLives - 1); setShowDudeImage(false); @@ -164,14 +170,20 @@ const QuizComponent = () => { setShowDude3Image(true); }, 1500); handleNextClick(); + handleAudio(state.isMute, sounds.incorrect) } }; const handleHintClick = () => { setHintUsed(true); // Set hintUsed to true when the hint is clicked setShowHint(true); // Show the hint + handleAudio(state.isMute, sounds.hint) }; + const handleSkipClick = () => { + handleNextClick(); + handleAudio(state.isMute, sounds.skip) + } // useEffect to navigate when finishQuiz is true useEffect(() => { @@ -257,6 +269,7 @@ if (lives === 1) { - @@ -304,6 +322,7 @@ if (lives === 1) { disabled={clickSwap} className="switch-button" onClick={handleSwapClick} + onMouseEnter={() => {handleAudio(state.isMute, sounds.hover)}} > Swap From 33d862074793649e8be495177cd12a334e184af8 Mon Sep 17 00:00:00 2001 From: nick stilwell Date: Fri, 3 Nov 2023 21:09:34 +0000 Subject: [PATCH 127/184] crop instruction asset --- react-front-end/src/asset/instruction.png | Bin 59219 -> 50712 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/react-front-end/src/asset/instruction.png b/react-front-end/src/asset/instruction.png index 536a01831e999a18a091c5e6a2c26b59c4623aa7..329ed17bdb358cb9ded459cc3f4039ad648889f1 100644 GIT binary patch literal 50712 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 literal 59219 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 From a669918b776bba2e75dcfd4b93c07aff00828fb3 Mon Sep 17 00:00:00 2001 From: nick stilwell Date: Fri, 3 Nov 2023 21:12:54 +0000 Subject: [PATCH 128/184] fix css border hover bug --- react-front-end/src/style/quiz.css | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/react-front-end/src/style/quiz.css b/react-front-end/src/style/quiz.css index d6fb9f7faf..ac633b7a18 100644 --- a/react-front-end/src/style/quiz.css +++ b/react-front-end/src/style/quiz.css @@ -1,7 +1,3 @@ -img { - -} - .container { display: flex; flex-direction: column; @@ -60,7 +56,7 @@ img { } .buttons:hover { - border: 2px yellow solid; + border: 3px yellow solid; background-color: yellow; cursor: pointer; } From 37b83738bc2dfa319eb1c5ddf0b1327f5da6bdb4 Mon Sep 17 00:00:00 2001 From: nick stilwell Date: Fri, 3 Nov 2023 21:57:21 +0000 Subject: [PATCH 129/184] remove too low specificity selectors --- react-front-end/src/style/App.css | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/react-front-end/src/style/App.css b/react-front-end/src/style/App.css index 736293eab0..92c26b5123 100644 --- a/react-front-end/src/style/App.css +++ b/react-front-end/src/style/App.css @@ -1,13 +1,5 @@ div-style { background: linear-gradient(to right, #9c0fbb, #770890); -display: flex; -justify-content: center; -} - -.top-page { - padding-right: 160px; -} - -.logo { - padding-left: 60px; + display: flex; + justify-content: center; } \ No newline at end of file From 8dd85741c2c9dd939fb0b19ffa551149dcbc4d8c Mon Sep 17 00:00:00 2001 From: nick stilwell Date: Fri, 3 Nov 2023 22:13:18 +0000 Subject: [PATCH 130/184] update header css --- react-front-end/src/components/header.js | 18 ++++-- react-front-end/src/components/home.js | 1 - react-front-end/src/components/instruction.js | 55 +++++++++---------- react-front-end/src/style/header.css | 21 +++++++ react-front-end/src/style/home.css | 23 +++----- react-front-end/src/style/instruction.css | 19 ++++--- react-front-end/src/style/quiz.css | 1 - 7 files changed, 77 insertions(+), 61 deletions(-) create mode 100644 react-front-end/src/style/header.css diff --git a/react-front-end/src/components/header.js b/react-front-end/src/components/header.js index 1ba8085a1c..bbdbe45be7 100644 --- a/react-front-end/src/components/header.js +++ b/react-front-end/src/components/header.js @@ -6,6 +6,7 @@ import 'animate.css'; import SoundOn from "../asset/Sound_on.png"; import SoundOff from "../asset/Sound_off.png"; import { AppContext } from './AppContext'; +import "../style/header.css"; function header(props) { @@ -25,6 +26,7 @@ function header(props) { if (props.page === "home") { return ( +
    quizjs @@ -37,14 +39,16 @@ function header(props) {
    +
    ) } if (props.page === "instructions") { return ( -
    -
    +
    +
    quizjs +
    ) @@ -52,11 +56,13 @@ function header(props) { if (props.page === "quiz") { return ( -
    -
    - quizjs +
    +
    +
    + quizjs +
    +
    -
    ) } diff --git a/react-front-end/src/components/home.js b/react-front-end/src/components/home.js index faab9015c2..c9e0f1fd32 100644 --- a/react-front-end/src/components/home.js +++ b/react-front-end/src/components/home.js @@ -42,7 +42,6 @@ function Home() {
    -
    brandon diff --git a/react-front-end/src/components/instruction.js b/react-front-end/src/components/instruction.js index 7d12c75ebc..89de261747 100644 --- a/react-front-end/src/components/instruction.js +++ b/react-front-end/src/components/instruction.js @@ -27,37 +27,32 @@ function Instruction() { return (
    -
    -
    -
    - -

    Welcome to QuizJS

    -
    - -

    Starting Lives:

    -
      -
    • You begin the game with 5 lives ❤️❤️❤️❤️❤️
    • -
    -

    Answering Questions:

    -
      -
    • Each Question provides 4 choices
    • -
    • Correct Answer: +20 points
    • -
    • Correct Answer with Hint: +10 points, Wrong Answer: -10 points
    • -
    • Incorrect Answer: Lose 1 life, 0 points
    • -
    • Skip the Question: 0 points, no lives lost
    • -
    • 50:50: eliminates 2 wrong answers, 10 points
    • -
    • Swap: no lives lost or points just your Question get switched
    • -
    • Time limit: you have a 5 minute time limit to complete all the questions
    • -
    -

    Lives:

    -
      -
    • Lose a life for each incorrect answer
    • -
    • Use hints, skip, 50:50, and swap when stuck
    • -
    -

    After the Quiz enter in a nick name then hit back to home to see your highscore on the leaderboard.

    - -
    +
    +

    Welcome to QuizJS

    +
    +

    Starting Lives:

    +
      +
    • You begin the game with 5 lives ❤️❤️❤️❤️❤️
    • +
    +

    Answering Questions:

    +
      +
    • Each Question provides 4 choices
    • +
    • Correct Answer: +20 points
    • +
    • Correct Answer with Hint: +10 points, Wrong Answer: -10 points
    • +
    • Incorrect Answer: Lose 1 life, 0 points
    • +
    • Skip the Question: 0 points, no lives lost
    • +
    • 50:50: eliminates 2 wrong answers, 10 points
    • +
    • Swap: no lives lost or points just your Question get switched
    • +
    • Time limit: you have a 5 minute time limit to complete all the questions
    • +
    +

    Lives:

    +
      +
    • Lose a life for each incorrect answer
    • +
    • Use hints, skip, 50:50, and swap when stuck
    • +
    +

    After the Quiz enter in a nick name then hit back to home to see your highscore on the leaderboard.

    +
    +
    ); }; diff --git a/react-front-end/src/components/header.js b/react-front-end/src/components/header.js index 8ed2a23ce9..57b4005eac 100644 --- a/react-front-end/src/components/header.js +++ b/react-front-end/src/components/header.js @@ -3,6 +3,7 @@ import "../style/App.css"; import InstructionImage from "../asset/instruction.png"; import Quiz from "../asset/THELOGO.png"; import 'animate.css'; +import Brandon from "../asset/brandon.png"; function header(props) { @@ -42,7 +43,10 @@ function header(props) { return (
    - quizjs + + dude + quizjs +
    ) diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 568b175b4b..2c5a68fe4e 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -210,7 +210,8 @@ if (lives === 1) { setGameOver(true); navigate('/quiz'); } - +console.log('score:', score); +console.log('lives:', lives); }; if (questions.length === 0) { @@ -247,7 +248,9 @@ if (lives === 1) { {!gameOver && (
    -

    Round {currentRound}

    + +

    Round {currentRound}

    +

    {`Question: ${currentQuestionNumber}/${totalQuestions}`}

    {currentQuestion.question}

    diff --git a/react-front-end/src/style/App.css b/react-front-end/src/style/App.css index 736293eab0..1398cb7157 100644 --- a/react-front-end/src/style/App.css +++ b/react-front-end/src/style/App.css @@ -9,5 +9,12 @@ justify-content: center; } .logo { - padding-left: 60px; + display: flex; +margin-right: 300px; +width: 350px; +height: 350px; +} + +.quiz { +height: 200px; } \ No newline at end of file diff --git a/react-front-end/src/style/congrads.css b/react-front-end/src/style/congrads.css index 2ae0f2fc3c..a21218b7eb 100644 --- a/react-front-end/src/style/congrads.css +++ b/react-front-end/src/style/congrads.css @@ -9,14 +9,25 @@ .title { font-size: 100px; +display: flex; +justify-content: center; +} + +.final-score { + display: flex; +justify-content: center; } .on { font-size: 50px; + display: flex; + justify-content: center; } .completing { font-size: 50px; + display: flex; + justify-content: center; } .myForm { @@ -31,7 +42,7 @@ font-size: 100px; } .myForm button { - width: 100%; + width: 92%; padding: 10px; font-size: 16px; font-weight: bold; @@ -48,4 +59,8 @@ font-size: 100px; .name { font-size: 25px; font-weight: bold; +} + +.text { + width: 20px; } \ No newline at end of file diff --git a/react-front-end/src/style/quiz.css b/react-front-end/src/style/quiz.css index d6fb9f7faf..8ceee5fec9 100644 --- a/react-front-end/src/style/quiz.css +++ b/react-front-end/src/style/quiz.css @@ -1,7 +1,3 @@ -img { - -} - .container { display: flex; flex-direction: column; From c04bfb8551876b6b6d2cb62873fb35501bce4455 Mon Sep 17 00:00:00 2001 From: Ryan Stewart Date: Fri, 3 Nov 2023 22:27:01 -0300 Subject: [PATCH 133/184] edited styling on congrads page --- react-front-end/src/components/congrads.js | 3 +++ react-front-end/src/components/quiz.js | 2 +- react-front-end/src/style/App.css | 1 + react-front-end/src/style/congrads.css | 12 +++++------- react-front-end/src/style/header.css | 15 +++++++++++++++ react-front-end/src/style/home.css | 4 ---- react-front-end/src/style/instruction.css | 2 +- react-front-end/src/style/quiz.css | 2 +- 8 files changed, 27 insertions(+), 14 deletions(-) diff --git a/react-front-end/src/components/congrads.js b/react-front-end/src/components/congrads.js index f566a6e8d4..0093978669 100644 --- a/react-front-end/src/components/congrads.js +++ b/react-front-end/src/components/congrads.js @@ -1,6 +1,7 @@ import React, { useEffect, useState } from "react"; import { useNavigate, useLocation } from "react-router-dom"; import "../style/congrads.css"; +import "../style/App.css"; import "whatwg-fetch"; import Header from "./header"; @@ -120,6 +121,7 @@ const Congrats = ({ onLeaderboardUpdate }) => { console.log("time:", completionTime); return ( +

    Congratulations!

    @@ -151,6 +153,7 @@ const Congrats = ({ onLeaderboardUpdate }) => {
    +
    ); }; diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 195b30a0fa..8ccdbc2cf2 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -254,7 +254,7 @@ console.log('lives:', lives); }; return ( -
    +
    {!gameOver && ( diff --git a/react-front-end/src/style/App.css b/react-front-end/src/style/App.css index 92c26b5123..5b1a7650a5 100644 --- a/react-front-end/src/style/App.css +++ b/react-front-end/src/style/App.css @@ -2,4 +2,5 @@ div-style { background: linear-gradient(to right, #9c0fbb, #770890); display: flex; justify-content: center; + height: 100%; } \ No newline at end of file diff --git a/react-front-end/src/style/congrads.css b/react-front-end/src/style/congrads.css index a21218b7eb..ab938bf915 100644 --- a/react-front-end/src/style/congrads.css +++ b/react-front-end/src/style/congrads.css @@ -1,10 +1,5 @@ .container { - display: flex; - flex-direction: column; - align-items: center; - justify-content: flex-start; - height: 100vh; - background: linear-gradient(to right, #75088E, #610576); +margin-top: 20px; } .title { @@ -33,10 +28,13 @@ justify-content: center; .myForm { width: 300px; margin: auto; + display: flex; + flex-direction: column; + margin-left: 42px; } .myForm input { - width: 100%; + width: 84%; padding: 10px; margin-bottom: 10px; } diff --git a/react-front-end/src/style/header.css b/react-front-end/src/style/header.css index d00f75d5f7..7561f0cbc2 100644 --- a/react-front-end/src/style/header.css +++ b/react-front-end/src/style/header.css @@ -18,4 +18,19 @@ display: flex; height: 96px; width: 96px; +} + +.top-page { + padding-right: 160px; +} + +.logo { + display: flex; +margin-right: 300px; +width: 350px; +height: 350px; +} + +.quiz { +height: 200px; } \ No newline at end of file diff --git a/react-front-end/src/style/home.css b/react-front-end/src/style/home.css index c6104e65ac..4f3972e2d3 100644 --- a/react-front-end/src/style/home.css +++ b/react-front-end/src/style/home.css @@ -1,7 +1,3 @@ -.content-container { - /* margin-right: 150px; */ -} - .rectangle-button { width: 300px; height: 100px; diff --git a/react-front-end/src/style/instruction.css b/react-front-end/src/style/instruction.css index dddcadcd32..d1f2381f8f 100644 --- a/react-front-end/src/style/instruction.css +++ b/react-front-end/src/style/instruction.css @@ -3,7 +3,7 @@ flex-direction: column; align-items: center; justify-content: flex-start; - height: 100vh; + height: 100%; } /*.center-top { diff --git a/react-front-end/src/style/quiz.css b/react-front-end/src/style/quiz.css index 578726dd94..5c54051047 100644 --- a/react-front-end/src/style/quiz.css +++ b/react-front-end/src/style/quiz.css @@ -1,4 +1,4 @@ -.container { +.quiz-container { display: flex; flex-direction: column; align-items: center; From 9943bd72109e4abc4db41d6792c3a5a683a17ec6 Mon Sep 17 00:00:00 2001 From: ychento Date: Sat, 4 Nov 2023 00:01:13 -0400 Subject: [PATCH 134/184] styling for game over page --- react-front-end/src/style/quiz.css | 32 +++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/react-front-end/src/style/quiz.css b/react-front-end/src/style/quiz.css index 578726dd94..66e73c1f80 100644 --- a/react-front-end/src/style/quiz.css +++ b/react-front-end/src/style/quiz.css @@ -18,7 +18,7 @@ .logo { width: 400px; - + margin-top: 20px; } .round { @@ -49,13 +49,13 @@ .buttons { font-size: 30px; - border: 3px black solid; + border: 5px black solid; margin-bottom: 0.5em; background-color: yellow; } .buttons:hover { - border: 3px yellow solid; + border: 5px yellow solid; background-color: yellow; cursor: pointer; } @@ -120,3 +120,29 @@ color: red; font-size: 40px; } + +.game-over-popup h1 { + font-size: 50px; + color: white; + margin-bottom: 20px; + text-align: center; +} + + +.game-over-buttons button { + font-size: 30px; + border: 5px black solid; + margin-bottom: 0.5em; + background-color: yellow; +} + +.game-over-buttons button:hover { + border: 5px yellow solid; + background-color: yellow; + cursor: pointer; +} + +.game-over-buttons { + display: flex; + gap: 30px; +} \ No newline at end of file From c4bd3b625b3a1367182419c7a0666fe830014f26 Mon Sep 17 00:00:00 2001 From: ychento Date: Sat, 4 Nov 2023 00:04:38 -0400 Subject: [PATCH 135/184] fix the bug for container height to 100% --- react-front-end/src/style/congrads.css | 2 +- react-front-end/src/style/instruction.css | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/react-front-end/src/style/congrads.css b/react-front-end/src/style/congrads.css index 2ae0f2fc3c..a3fc0b26c2 100644 --- a/react-front-end/src/style/congrads.css +++ b/react-front-end/src/style/congrads.css @@ -3,7 +3,7 @@ flex-direction: column; align-items: center; justify-content: flex-start; - height: 100vh; + height: 100%; background: linear-gradient(to right, #75088E, #610576); } diff --git a/react-front-end/src/style/instruction.css b/react-front-end/src/style/instruction.css index dddcadcd32..2db72e4108 100644 --- a/react-front-end/src/style/instruction.css +++ b/react-front-end/src/style/instruction.css @@ -3,7 +3,7 @@ flex-direction: column; align-items: center; justify-content: flex-start; - height: 100vh; + height: 100%; } /*.center-top { @@ -42,7 +42,7 @@ .div-style { background: linear-gradient(to right, #9c0fbb, #770890); - height: 100vh; + height: 100%; display: flex; justify-content: center; align-items: center; From ac77b665e587d13fccdc99dc038d272c30c35a4a Mon Sep 17 00:00:00 2001 From: ychento Date: Sat, 4 Nov 2023 00:10:38 -0400 Subject: [PATCH 136/184] change height of Round Number on quiz page --- react-front-end/src/style/quiz.css | 1 + 1 file changed, 1 insertion(+) diff --git a/react-front-end/src/style/quiz.css b/react-front-end/src/style/quiz.css index 66e73c1f80..b877009ce0 100644 --- a/react-front-end/src/style/quiz.css +++ b/react-front-end/src/style/quiz.css @@ -23,6 +23,7 @@ .round { font-size: 30px; + height: 10px; } .question-number { From d5ae5d52a612fa9e9342187425c00fd7309660bd Mon Sep 17 00:00:00 2001 From: ychento Date: Sat, 4 Nov 2023 00:17:07 -0400 Subject: [PATCH 137/184] change padding of game container --- react-front-end/src/style/quiz.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/react-front-end/src/style/quiz.css b/react-front-end/src/style/quiz.css index b877009ce0..cafec2b8b6 100644 --- a/react-front-end/src/style/quiz.css +++ b/react-front-end/src/style/quiz.css @@ -11,7 +11,7 @@ width: 80%; height: 80%; background-color: white; - padding: 10px 25px; + padding: 15px 15px; box-sizing: border-box; } From 7ef3efd2d6488ee780ac6b4ff85a9a7eeda1d003 Mon Sep 17 00:00:00 2001 From: ychento Date: Sat, 4 Nov 2023 00:41:48 -0400 Subject: [PATCH 138/184] change the position of buttons on main page, and location of the photo on quiz page --- react-front-end/src/components/quiz.js | 2 -- react-front-end/src/style/home.css | 3 ++- react-front-end/src/style/quiz.css | 22 ++++++++++++---------- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/react-front-end/src/components/quiz.js b/react-front-end/src/components/quiz.js index 3803928fad..20528675ed 100644 --- a/react-front-end/src/components/quiz.js +++ b/react-front-end/src/components/quiz.js @@ -257,7 +257,6 @@ if (lives === 1) {
    {!gameOver && ( -

    Round {currentRound}

    {`Question: ${currentQuestionNumber}/${totalQuestions}`}

    @@ -328,7 +327,6 @@ if (lives === 1) {
    -
    )} {gameOver && ( diff --git a/react-front-end/src/style/home.css b/react-front-end/src/style/home.css index c6104e65ac..9dd0c9f71f 100644 --- a/react-front-end/src/style/home.css +++ b/react-front-end/src/style/home.css @@ -54,7 +54,8 @@ .start { display: flex; - /* padding-left: 490px; */ + width: 80%; + justify-content: space-around; } .dude { diff --git a/react-front-end/src/style/quiz.css b/react-front-end/src/style/quiz.css index cafec2b8b6..9e42d4887e 100644 --- a/react-front-end/src/style/quiz.css +++ b/react-front-end/src/style/quiz.css @@ -8,7 +8,7 @@ } .game { - width: 80%; + width: 60%; height: 80%; background-color: white; padding: 15px 15px; @@ -22,22 +22,24 @@ } .round { - font-size: 30px; + font-size: 20px; height: 10px; } .question-number { - font-size: 30px; + font-size: 20px; } .questions { - font-size: 40px; + font-size: 30px; } .middle { display: flex; align-items: center; + flex-direction: row; + justify-content: space-between; } .answers { @@ -78,27 +80,27 @@ .hint { - font-size: 30px; + font-size: 20px; font-style: italic; } .h-button { - font-size: 30px; + font-size: 20px; font-style: italic; } .s-button { - font-size: 30px; + font-size: 20px; font-style: italic; } .fifty-fifty-button { - font-size: 30px; + font-size: 20px; font-style: italic; } .switch-button { - font-size: 30px; + font-size: 20px; font-style: italic; } @@ -119,7 +121,7 @@ .timer { color: red; - font-size: 40px; + font-size: 25px; } .game-over-popup h1 { From 53578c517bbc6fff4ffaccb435418fae5c84d3e6 Mon Sep 17 00:00:00 2001 From: ychento Date: Sat, 4 Nov 2023 01:02:42 -0400 Subject: [PATCH 139/184] styling for congrats page --- react-front-end/src/components/congrads.js | 2 +- react-front-end/src/style/congrads.css | 14 +++++++++++--- react-front-end/src/style/quiz.css | 2 +- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/react-front-end/src/components/congrads.js b/react-front-end/src/components/congrads.js index b9fda2073c..46baa2702b 100644 --- a/react-front-end/src/components/congrads.js +++ b/react-front-end/src/components/congrads.js @@ -133,7 +133,7 @@ const Congrats = ({ onLeaderboardUpdate }) => { {submissionMessage &&

    {submissionMessage}

    }