Start of multilanguage support integration
Improved controls (WASD)
This commit is contained in:
@@ -8,13 +8,8 @@
|
||||
<body>
|
||||
<div id="score"></div>
|
||||
<canvas id="tetris" width="240" height="400"></canvas>
|
||||
<div id="controls">
|
||||
Controls:
|
||||
<br>
|
||||
Arrow Keys -> Move left/right or down
|
||||
<br>
|
||||
Q/W -> Rotate the tile
|
||||
</div>
|
||||
<div id="controls"></div>
|
||||
<script src="language.js"></script>
|
||||
<script src="tetris.js"></script>
|
||||
</body>
|
||||
</html>
|
34
language.js
Normal file
34
language.js
Normal file
@@ -0,0 +1,34 @@
|
||||
const en = {
|
||||
controls: "Controls:" +
|
||||
"<br>" +
|
||||
"Left+Right/A+D -> Move left/right or down\n" +
|
||||
"<br>" +
|
||||
"Q/E -> Rotate the tile" +
|
||||
"<br>" +
|
||||
"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");
|
51
tetris.js
51
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) {
|
||||
|
Reference in New Issue
Block a user