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 | } |