Start of multilanguage support integration
Improved controls (WASD)
This commit is contained in:
@@ -8,13 +8,8 @@
|
|||||||
<body>
|
<body>
|
||||||
<div id="score"></div>
|
<div id="score"></div>
|
||||||
<canvas id="tetris" width="240" height="400"></canvas>
|
<canvas id="tetris" width="240" height="400"></canvas>
|
||||||
<div id="controls">
|
<div id="controls"></div>
|
||||||
Controls:
|
<script src="language.js"></script>
|
||||||
<br>
|
|
||||||
Arrow Keys -> Move left/right or down
|
|
||||||
<br>
|
|
||||||
Q/W -> Rotate the tile
|
|
||||||
</div>
|
|
||||||
<script src="tetris.js"></script>
|
<script src="tetris.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</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
|
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
|
// Keyboard controls
|
||||||
document.addEventListener('keydown', event => {
|
document.addEventListener('keydown', event => {
|
||||||
if(event.keyCode === 37) {
|
Object.keys(keys).map((objKey, index) => {
|
||||||
playerMove(-1);
|
const keyBind = keys[objKey];
|
||||||
} else if(event.keyCode === 39) {
|
if(keyBind.keys.includes(event.keyCode)) {
|
||||||
playerMove(1);
|
keyBind.action();
|
||||||
} else if(event.keyCode === 40) {
|
}
|
||||||
playerDrop();
|
});
|
||||||
} else if(event.keyCode === 81) {
|
// if(event.keyCode === 37) {
|
||||||
playerRotate(-1);
|
// playerMove(-1);
|
||||||
} else if(event.keyCode === 87) {
|
// } else if(event.keyCode === 39) {
|
||||||
playerRotate(1);
|
// 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) {
|
window.onresize = function (event) {
|
||||||
|
Reference in New Issue
Block a user