Files
game1/game/js/constants.js
T
martijn.diersmann@pm.me 4c1f670e9f tetris klaar
2026-09-26 20:38:55 +02:00

88 lines
2.1 KiB
JavaScript

'use strict';
/* Centrale configuratie voor het spel */
const CONSTANTS = {
COLS: 10, // breedte van het bord
ROWS: 20, // hoogte van het bord
CELL: 30, // pixelgrootte van een cel op het bord
PREVIEW_CELL: 18, // pixelgrootte van een cel in de previews
PREVIEW_COUNT: 3, // aantal zichtbare volgende blokken
COLORS: {
I: '#00e5f0',
O: '#f7d000',
T: '#b14ce0',
S: '#35d23d',
Z: '#f03c3c',
J: '#3c6cf0',
L: '#f09a20'
},
SCORE: {
SINGLE: 100, // 1 rij
DOUBLE: 300, // 2 rijen
TRIPLE: 500, // 3 rijen
TETRIS: 800, // 4 rijen
SOFT_DROP: 1, // punt per cel bij zachte drop
HARD_DROP: 2, // punten per cel bij harde drop
LINES_PER_LEVEL: 10 // aantal rijen nodig voor een nieuw level
},
GRAVITY: [800, 720, 630, 550, 470, 380, 300, 220, 160, 100,
80, 70, 60, 50, 40, 30, 20, 15, 10, 10], // ms per zetje per level
HIGHSCORE_KEY: 'neo-tetris.highscores',
PLAYER_NAME_KEY: 'neo-tetris.playername',
MAX_HIGHSCORES: 10
};
/* Punten per aantal tegelijk gewiste rijen (index = aantal rijen) */
const SCORE_POINTS = [0, 100, 300, 500, 800];
/* Definitie van de 7 tetromino's als matrices (1 = gevuld blokje) */
const SHAPES = {
I: [
[0, 0, 0, 0],
[1, 1, 1, 1],
[0, 0, 0, 0],
[0, 0, 0, 0]
],
O: [
[1, 1],
[1, 1]
],
T: [
[0, 1, 0],
[1, 1, 1],
[0, 0, 0]
],
S: [
[0, 1, 1],
[1, 1, 0],
[0, 0, 0]
],
Z: [
[1, 1, 0],
[0, 1, 1],
[0, 0, 0]
],
J: [
[1, 0, 0],
[1, 1, 1],
[0, 0, 0]
],
L: [
[0, 0, 1],
[1, 1, 1],
[0, 0, 0]
]
};
const PIECE_TYPES = Object.keys(SHAPES);
/* Eenvoudige wall-kicks die proberen een blokje langs obstakels te schuiven bij rotatie */
const WALL_KICKS = [
[ 0, 0],
[-1, 0],
[ 1, 0],
[ 0, -1],
[-2, 0],
[ 2, 0]
];