-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathworkout.js
More file actions
128 lines (110 loc) · 2.88 KB
/
Copy pathworkout.js
File metadata and controls
128 lines (110 loc) · 2.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
var TESTING = false;
var MAX_ITERATIONS = 100;
var MAX_POINTS = 400;
var POINT_VALS = [0, 5, 3, 1];
var currentPoints = 0;
var lastPos = -1;
var secondsLeft = 0;
var trialTime = 0;
var totalTime = 0;
var trials = 0;
var avgTime = 0;
var testingIterations = 0;
var leastTrial = Math.pow(10, 100);
var mostTrial = -Math.pow(10, 100);
function start() {
currentPoints = 0;
lastPos = -1;
secondsLeft = 0;
if(TESTING) {
trialTime = 0;
}
addPos(-1, 30);
document.getElementById("startButton").style.display = "none";
document.getElementById("title").style.display = "none";
}
function abs() {
if(currentPoints < MAX_POINTS) {
var time = Math.floor(Math.random()*26) + 5;
var pos = Math.abs(Math.floor(Math.random()*7)-3);
if(TESTING) {
trialTime += time;
}
addPos(pos, time);
}else{
document.getElementById("currentPoints").innerHTML = "100%";
setCurrentPos("DONE!");
document.getElementById("startButton").style.display = "inline";
document.getElementById("startButton").innerHTML = "Start Again!";
if(TESTING && testingIterations < MAX_ITERATIONS) {
trials++;
testingIterations++;
totalTime += trialTime;
avgTime = totalTime/trials;
if(trialTime < leastTrial) {
leastTrial = trialTime;
}
if(trialTime > mostTrial) {
mostTrial = trialTime;
}
start();
}else
if(TESTING) {
document.getElementById("currentPoints").innerHTML = "100%";
setCurrentTime(Math.round(avgTime));
console.log("avgTime: " + getTimeStr(avgTime));
console.log("leastTrial: " + getTimeStr(leastTrial));
console.log("mostTrial: " + getTimeStr(mostTrial));
}
}
}
function addPos(pos, time) {
var oneSecond = 1000;
if(TESTING) {
oneSecond = 1;
}
setCurrentPos(pos);
setCurrentTime(time);
if(pos != -1) {
if(lastPos != -1) {
incrCurrentPoints(time*POINT_VALS[pos]*((4-Math.abs(lastPos-pos))/4));
}else{
incrCurrentPoints(time*POINT_VALS[pos]);
}
}
secondsLeft = time;
var inte = setInterval(function(){
secondsLeft--;
setCurrentTime(secondsLeft);
if(secondsLeft == 0) {
clearInterval(inte);
abs();
}
}, oneSecond);
}
function setCurrentPoints(val) {
currentPoints = val;
document.getElementById("currentPoints").innerHTML = currentPoints;
}
function incrCurrentPoints(val) {
currentPoints += val;
document.getElementById("currentPoints").innerHTML = Math.floor((currentPoints/MAX_POINTS)*100) + "%";
}
function setCurrentTime(seconds) {
document.getElementById("timeLeft").innerHTML = getTimeStr(seconds);
}
function getTimeStr(time) {
var min = Math.floor(time/60);
var sec = time % 60;
if(min < 10) {
min = "0" + min;
}
if(sec < 10) {
sec = "0" + sec;
}
var timeStr = min + ":" + sec;
return timeStr;
}
function setCurrentPos(pos) {
document.getElementById("currentState").innerHTML = pos;
}