-
Notifications
You must be signed in to change notification settings - Fork 0
/
typing-game.js
131 lines (97 loc) · 3.14 KB
/
typing-game.js
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
129
130
131
const keys = [..."ABCDEFGHIJKLMNOPQRSTUVWXYZ."];
const timestamps = [];
var elementIds = [..."ABCDEFGHIJKLMNOPQRSTUVWXYZ.", "SPACE"]
var sentenceIndex = 0;
var sentence = [..."KYLETOLENTINO.COM"]
var createLink = false
timestamps.unshift(getTimestamp());
function getRandomNumber(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function getRandomKey() {
return keys[getRandomNumber(0, keys.length-1)]
}
function targetKeyInSentence() {
character = sentence[sentenceIndex]
// createLink = false
if(character == " ") {
character = "SPACE"
}
const key = document.getElementById(character);
key.classList.add("selected");
// sentenceIndex++
// console.log(sentenceIndex)
// if(sentenceIndex >= sentence.length) {
// sentenceIndex = 0
// // document.getElementById("add-text").innerText = ""
// createLink = true
// }
console.log(timestamps)
return character
}
function targetRandomKey() {
const key = document.getElementById(getRandomKey());
key.classList.add("selected");
let start = Date.now()
}
function getTimestamp() {
return Math.floor(Date.now() / 1000)
}
function registerKeyPress(keyPressed) {
const keyElement = document.getElementById(keyPressed);
const highlightedKey = document.querySelector(".selected");
keyElement.classList.add("hit")
keyElement.addEventListener('animationend', () => {
keyElement.classList.remove("hit")
})
console.log("ENTERING KEY PRESS")
if (keyPressed === highlightedKey.innerHTML.toUpperCase()) {
sentenceIndex++
if(sentenceIndex >= sentence.length) {
sentenceIndex = 0
// document.getElementById("add-text").innerText = ""
createLink = true
} else {
createLink = false
}
timestamps.unshift(getTimestamp());
const elapsedTime = timestamps[0] - timestamps[1];
console.log(`Character per minute ${60/elapsedTime}`)
highlightedKey.classList.remove("selected");
targetKeyInSentence();
if(keyPressed === 'SPACE') {
document.getElementById("add-text").innerHTML += " "
} else {
document.getElementById("add-text").innerHTML += keyPressed
}
if(createLink) {
document.getElementById("add-text").innerHTML = "<a target='_blank' href='https://" + document.getElementById("add-text").innerHTML + "'>" + document.getElementById("add-text").innerHTML + "</a>"
console.log("CREATING LINK")
}
}
}
// console.log(elementIds)
for(const elemId of elementIds) {
// console.log("element id" + elemId)
document.getElementById(elemId).addEventListener("click", () => {
registerKeyPress(elemId)
})
}
document.addEventListener("keydown", event => {
var keyPressed;
if (event.key !== undefined) {
keyPressed = event.key.toUpperCase();
if(event.code == 'Space') {
keyPressed = 'SPACE'
}
console.log(keyPressed)
console.log(event.code)
} else if (event.keyCode !== undefined) {
code = event.keyCode;
keyPressed = String.fromCharCode(code);
}
registerKeyPress(keyPressed)
})
targetKeyInSentence();