SHOW:
|
|
- or go back to the newest paste.
1 | /* | |
2 | Урезанная клавограмма + измеритель брутто* для Клавогонок. | |
3 | авторы: MMMAAANNN, al1as | |
4 | - | v 0.05 |
4 | + | v 0.07 |
5 | ||
6 | Это альфа версия. Чтобы ее использовать, нужно: | |
7 | 1) Скопировать этот код | |
8 | 2) Открыть JS-консоль браузера | |
9 | 3) Создать заезд | |
10 | 4) Вставить код в консоль и нажать Enter ДО НАЧАЛА ЗАЕЗДА | |
11 | 5) Пройти заезд | |
12 | 6) Нажать любую клавишу | |
13 | 7) В консоли прочесть результат замера скорости нетто и брутто* | |
14 | ||
15 | Планируется далее оформить это все в юзерскрипт, чтобы не нужно было ничего никуда вставлять и чтобы результат выводился прямо на странице заезда, а не в консоли. | |
16 | ||
17 | */ | |
18 | var x = 0; | |
19 | var i; | |
20 | var keybogram = ['Start']; | |
21 | var nonPrintedKeys = "ShiftRight ShiftLeft ControlRight ControlLeft AltRight AltLeft".split(' '); | |
22 | var ctrlBackspaceStoppers = "Space".split(' '); | |
23 | ||
24 | document.onkeydown = function(ev) { | |
25 | if (game.gamestatus === 'racing') { | |
26 | if (!game.finished) { | |
27 | y = performance.now(); | |
28 | keybogram.push([ev.code, y - x, ev]); x = y; | |
29 | } else { | |
30 | analyzeKeybogram(keybogram); | |
31 | } | |
32 | } | |
33 | ||
34 | } | |
35 | ||
36 | ||
37 | function analyzeKeybogram(keybogram) { | |
38 | var cleanKeybogram = []; | |
39 | for (i = 0; i < keybogram.length; i++) { | |
40 | if (keybogram[i][0] === 'Backspace') { | |
41 | if (keybogram[i][2].ctrlKey) { | |
42 | - | while (ctrlBackspaceStoppers.indexOf(cleanKeybogram[cleanKeybogram.length-1][0]) > -1 && cleanKeybogram.length > 0) cleanKeybogram.pop(); |
42 | + | while (ctrlBackspaceStoppers.indexOf(cleanKeybogram[cleanKeybogram.length-1][0]) > -1 && cleanKeybogram.length > 1) cleanKeybogram.pop(); |
43 | - | while (ctrlBackspaceStoppers.indexOf(cleanKeybogram[cleanKeybogram.length-1][0]) === -1 && cleanKeybogram.length > 0) cleanKeybogram.pop(); |
43 | + | while (ctrlBackspaceStoppers.indexOf(cleanKeybogram[cleanKeybogram.length-1][0]) === -1 && cleanKeybogram.length > 1) cleanKeybogram.pop(); |
44 | } else { | |
45 | cleanKeybogram.pop(); | |
46 | } | |
47 | } else if (nonPrintedKeys.indexOf(keybogram[i][0]) === -1) { | |
48 | cleanKeybogram.push(keybogram[i]); | |
49 | } | |
50 | } | |
51 | ||
52 | var totalTime = 0; | |
53 | for (i = 2; i < keybogram.length; i++) { totalTime += keybogram[i][1]; } | |
54 | ||
55 | var cleanTime = 0; | |
56 | for (i = 2; i < cleanKeybogram.length; i++) { cleanTime += cleanKeybogram[i][1]; } | |
57 | ||
58 | console.log("Net speed:", (cleanKeybogram.length-1)/(totalTime/60000)); | |
59 | console.log("Brutto* speed:", (cleanKeybogram.length-1)/(cleanTime/60000)); | |
60 | } |