Fix Tetris movement: Add shift modifier

This commit is contained in:
GayLord 2024-10-24 21:07:28 +02:00
parent aab96e73c5
commit 47bcbb7f4a

View File

@ -7,6 +7,9 @@ const REMOTE_UPDATE_PATH =
("use strict"); ("use strict");
function createTetris() { function createTetris() {
let keyMap = {};
var tetrominos = [ var tetrominos = [
{ {
// box // box
@ -183,25 +186,42 @@ function createTetris() {
var self = this; var self = this;
window.addEventListener("keyup", function(e) {
keyMap[e.code] = e.type == 'keydown';
});
window.addEventListener("keydown", function (e) { window.addEventListener("keydown", function (e) {
switch (e.keyCode) { keyMap[e.code] = e.type == 'keydown';
case 37: switch (e.code) {
case "ArrowLeft":
if (keyMap["ShiftLeft"] || keyMap["ShiftRight"]) {
if (self.checkMovement(curPiece, -2, 0)) {
curPiece.x -= 2;
};
break
}
if (self.checkMovement(curPiece, -1, 0)) { if (self.checkMovement(curPiece, -1, 0)) {
curPiece.x--; curPiece.x -= 1;
} }
break; break;
case 39: case "ArrowRight":
if (keyMap["ShiftLeft"] || keyMap["ShiftRight"]) {
if (self.checkMovement(curPiece, 2, 0)) {
curPiece.x += 2;
}
break;
}
if (self.checkMovement(curPiece, 1, 0)) { if (self.checkMovement(curPiece, 1, 0)) {
curPiece.x++; curPiece.x += 1;
} }
break; break;
case 40: case "ArrowDown":
if (self.checkMovement(curPiece, 0, 1)) { if (self.checkMovement(curPiece, 0, 1)) {
curPiece.y++; curPiece.y++;
} }
break; break;
case 32: case "ArrowUp":
case 38: case "Space":
curPiece.data = self.rotateTetrimono(curPiece); curPiece.data = self.rotateTetrimono(curPiece);
break; break;
} }
@ -231,8 +251,8 @@ function createTetris() {
} else { } else {
if (Date.now() > this.lastMove) { if (Date.now() > this.lastMove) {
this.lastMove = Date.now() + this.curSpeed; this.lastMove = Date.now() + this.curSpeed;
if (this.checkMovement(curPiece, 0, 1)) { if (this.checkMovement(curPiece, 0, 0.5)) {
curPiece.y++; curPiece.y += 0.5;
} else { } else {
this.fillBoard(curPiece); this.fillBoard(curPiece);
this.newTetromino(); this.newTetromino();