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