Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function mathify(){
- document.body.innerHTML="<h1>Random Math Thing™</h1><h2><span id='pn'>0</span> points [Best: <span id='bp'>0</span>]</h2><div id='mn'><span id='n1'></span> <span id='op'></span> <span id='n2'></span> = <input id='in'> <button id='sm' style='border:2px solid white;font-family:inherit;color:white;background-color:black'>Submit</button> <span id='rw'></span><br><span id='tm'></span></div><div id='ps' style='display:none'><h3>Paused</h3></div><br><button id='pb'>▶️</button>"
- document.body.style.color = "white"
- document.body.style.backgroundColor = "black"
- document.body.style.textAlign = "center"
- document.body.style.fontFamily = "Verdana"
- const $ = x => document.getElementById(x)
- const n1 = $("n1")
- const n2 = $("n2")
- const op = $("op")
- const inp = $("in")
- const sm = $("sm")
- const rw = $("rw")
- const tm = $("tm")
- const pn = $("pn")
- const main = $("mn")
- const ps = $("ps")
- const pb = $("pb")
- const bp = $("bp")
- let nm1 = 1
- let nm2 = 2
- let opr = 0
- let ansr = 3
- let maxtime = 3
- let time = 3
- let int = 0
- let d = Date.now()
- let canSubmit = true
- let points = 0
- let paused = false
- let bestpoints = 0
- function run(){
- inp.selected = true
- canSubmit = true
- time = maxtime
- n1.textContent = nm1
- n2.textContent = nm2
- op.textContent = (["+","-","*"])[opr]
- rw.textContent = "➖"
- inp.value = ""
- int = setInterval(function(){
- if(paused)return;
- let diff = (Date.now()-d)/1000
- d = Date.now()
- time-=diff
- if(time<=0){
- tm.textContent = "0s"
- generate(false)
- }else tm.textContent = time.toFixed(2)+"s"
- },50)
- }
- function rand(x){
- return Math.floor(Math.random()*x)
- }
- function cop(a,b,c){
- return opr==0?a:(opr==1?b:c)
- }
- function pav(){
- return (points+bestpoints)/2
- }
- function generate(overload){
- if(!canSubmit||(overload&&!inp.value))return;
- canSubmit = false
- clearInterval(int)
- let input = inp.value
- if(overload&&Number(input)==ansr){
- let base = (nm1*nm2)**0.5*(0.2+opr/50)
- let diff = (maxtime-time)/maxtime
- points+=base/2+base*diff
- }else points=points-Math.min(points-points*0.75,1)
- points = Math.max(points,0)
- bestpoints = Math.max(points,bestpoints)
- pn.textContent = points.toFixed(2)
- bp.textContent = bestpoints.toFixed(2)
- rw.textContent = (!overload)?"⏲️":Number(input)==ansr?"✔️":"❌"
- nm1 = cop(rand(pav()**1.2+5),rand(pav()**0.8+7),rand(pav()**0.4+6))+1
- nm2 = cop(rand(pav()**1.2+5),rand(pav()**0.8+7),rand(pav()**0.4+6))+1
- opr = rand((bestpoints>=5?3:(bestpoints>=2?2:1)))
- ansr = cop(nm1+nm2,nm1-nm2,nm1*nm2)
- maxtime = 3+opr*0.5+Math.sqrt(pav())/2
- if(nm1==1||nm2==1)maxtime-=0.25
- setTimeout(run,1000)
- }
- function pause(){
- paused = !paused
- main.style.display = paused?"none":""
- ps.style.display = paused?"":"none"
- pb.textContent = paused?"▶️":"⏸️"
- d = Date.now()
- }
- sm.addEventListener("click",generate)
- pb.addEventListener("click",pause)
- inp.addEventListener("keydown",function(key){
- if(key.key=="Enter"){
- generate(true)
- }
- })
- run()
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement