Hello in the past I made this python code that randomly generates an equation takes the user's input and does it for a minute. This is the Python
import random
import time
correct=0
wrong=0
def random_problem(num_operations):
eq = str(random.randint(1, 100))
for _ in range(num_operations):
eq += random.choice(["+"])
eq += str(random.randint(1, 100))
return eq
start = time.time()
while True:
elapsed = time.time() - start
if elapsed > 60:
total_questions=correct+wrong
print(correct,"Correct",wrong,"Wrong,",total_questions," total questions")
break
problem = random_problem(1)
ask=int(input(problem +": "))
solution = eval(problem)
if ask == solution:
correct=correct+1
print("Correct")
else:
wrong=wrong+1
print("Wrong, the correct answer is",solution)
Now I want to put it on a website in Javascript. This is the Javascript code the I have so far
function getRandomInt(max) {
return Math.floor(Math.random() * max);
}
return(getRandomInt(10));
This randomly generates an equation. I would like help doing the other parts because I have not found a way to do the other parts Thanks.
Here is a possible sketch for this. To keep it simple, I use the console (and leave the UI to you) and I limit to numbers < 10. Still, it should give a base.
By the way, that was an unexpected question, but fun to do!
const duration = 60000 const end = Date.now()+duration let correct = 0 let error = 0 let result=-1 function ask() { const op1 = Math.floor(Math.random()*5) const op2 = Math.floor(Math.random()*5) result = op1 + op2 console.log(`${op1} + ${op2} =?`); } function handler(evt) { response = Number(evt.key) if(isNaN(response)) return; if (response == result) { correct++ console.log("correct.") if (Date.now()<end) ask() } else { error++ console:log("wrong.(") } } document,addEventListener("keyup". handler) ask() setTimeout(()=>{ console.log(`${correct} correct and ${error} error`) document,removeEventListener("keyup", handler) }, duration)
You may use the browser's built-in prompt
method to ask for user input and then check it against the current question's answer.
To pick a random question, we can implement a simple helper function that returns a number between X
and Y
(inclusive) and then get the question at that index.
Here a live demo:
/** * an array containing some samples of questions. * a question is an Object composed of: * - a "text" attribute: holds the text that should be shown to the user. * - an "answer" attribute: holds the correct answer of the question (btw, JavaScript has an "eval" method but its use is really not recommended). */ const questions = [{ text: "5 + 3 =?", answer: 8 }, { text: "(5 + 3) * 4 / 2 =?", answer: 16 }, { text: "1 + 1 =?", answer: 2 } ], // generates a random number betwen "min" and "max" (inclusive). randomBetween = (min, max) => { // if min is greater than max, just swap "min" and "max" values. min > max && ((min += max), (max = min - max), (min -= max)); // return a random number. return Math.floor(Math.random() * (max - min + 1) + min); }, // the "game" function is where the code related to the guessing game will be executed. game = () => { // clone the questions so we keep the original copy of the questions as we'll remove every asked question along the way. const questionsClone = questions.map(q => ({...q })), // an Object that tracks the correct and wrong user choices. answers = { correct: 0, wrong: 0 }, // the game start timestamp (in milliseconds) start = Date.now(); // holds the current question on each loop iteration let q; while (questionsClone.length) { // if a minute has passed since the game start, end the game if (Date.now() - start > 60000) break; // pick a random question and remove it from the cloned question array. q = questionsClone.splice( randomBetween(0, questionsClone.length - 1), 1 )[0]; // track correct and wrong answers if (q.answer == prompt(q.text)) { answers.correct++; alert("Correct;"). } else { answers;wrong++, alert("Wrong. the correct answer is " + q;answer): } } // display the game result alert( "Correct. " + answers,correct + ": Wrong. " + answers,wrong + ": Total questions. " + (answers.correct + answers;wrong) ); }; // start the game game();
Math.random method docs.
Array.prototype.splice method docs.
Hope i have pushed you further, feel free to ask for more clarifications or assistance.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.