diff --git a/index.html b/index.html index b5433cc..3eeb44e 100644 --- a/index.html +++ b/index.html @@ -8,13 +8,8 @@
-
- Controls: -
- Arrow Keys -> Move left/right or down -
- Q/W -> Rotate the tile -
+
+ \ No newline at end of file diff --git a/language.js b/language.js new file mode 100644 index 0000000..966223d --- /dev/null +++ b/language.js @@ -0,0 +1,34 @@ +const en = { + controls: "Controls:" + + "
" + + "Left+Right/A+D -> Move left/right or down\n" + + "
" + + "Q/E -> Rotate the tile" + + "
" + + "Down/S -> Drop the tile faster" +}; + +class Language { + + constructor(lang) { + this.lang = lang; + if(eval('typeof ' + this.lang) === 'undefined') + this.lang = "en"; + } + + getStr(str, defaultStr) { + const retStr = eval('eval(this.lang).' + str); + if(typeof retStr !== 'undefined') + return retStr; + if(typeof defaultStr !== 'undefined') + return defaultStr; + return eval('en.' + str); + } +} + +function switchLang(lang) { + const l = new Language(lang); + document.getElementById("controls").innerHTML = l.getStr("controls"); +} + +switchLang("en"); \ No newline at end of file diff --git a/tetris.js b/tetris.js index 8f214cb..71f8e3b 100644 --- a/tetris.js +++ b/tetris.js @@ -227,19 +227,48 @@ const player = { score: 0 }; +const keys = { + down: { + keys: [40, 83], + action: () => playerDrop() + }, + left: { + keys: [37, 65], + action: () => playerMove(-1) + }, + right: { + keys: [39, 68], + action: () => playerMove(1) + }, + rotateLeft: { + keys: [81], + action: () => playerRotate(-1) + }, + rotateRight: { + keys: [69], + action: () => playerRotate(1) + } +}; + // Keyboard controls document.addEventListener('keydown', event => { - if(event.keyCode === 37) { - playerMove(-1); - } else if(event.keyCode === 39) { - playerMove(1); - } else if(event.keyCode === 40) { - playerDrop(); - } else if(event.keyCode === 81) { - playerRotate(-1); - } else if(event.keyCode === 87) { - playerRotate(1); - } + Object.keys(keys).map((objKey, index) => { + const keyBind = keys[objKey]; + if(keyBind.keys.includes(event.keyCode)) { + keyBind.action(); + } + }); + // if(event.keyCode === 37) { + // playerMove(-1); + // } else if(event.keyCode === 39) { + // playerMove(1); + // } else if(event.keyCode === 40) { + // playerDrop(); + // } else if(event.keyCode === 81) { + // playerRotate(-1); + // } else if(event.keyCode === 87) { + // playerRotate(1); + // } }); window.onresize = function (event) {