Untitled
unknown
plain_text
9 months ago
3.1 kB
6
Indexable
// Variables globales
let tiles = []; // Arreglo para almacenar los bloques que caen
let score = 0; // Puntuación del jugador
let spawnTimer = 30; // Cuadros hasta que aparezca el próximo bloque (0.5s a 60fps)
let speed = 2; // Velocidad de los bloques en píxeles por cuadro
let tileWidth = 100; // Ancho del bloque (coincide con el ancho de la columna)
let tileHeight = 50; // Altura del bloque
let hitLine = 550; // Posición Y de la línea de impacto
let gameOver = false; // Estado del juego
function setup() {
createCanvas(400, 600); // Configura el lienzo: 400 de ancho, 600 de alto
}
function draw() {
if (gameOver) {
background(0); // Fondo negro
fill(255); // Texto blanco
textSize(32); // Texto más grande
text("Fin del Juego", 100, 300); // Mostrar "Fin del Juego"
text("Puntuación: " + score, 100, 350); // Mostrar puntuación final
return;
}
// Juego activo
background(220); // Fondo gris claro
// Dibujar la línea de impacto
stroke(255, 0, 0); // Color rojo
line(0, hitLine, width, hitLine); // Línea horizontal en y=550
stroke(0); // Restablecer trazo a negro
// Actualizar y dibujar bloques
for (let i = tiles.length - 1; i >= 0; i--) {
let tile = tiles[i];
tile.y += speed; // Mover el bloque hacia abajo
fill(0); // Relleno negro para el bloque
rect(tile.column * tileWidth, tile.y, tileWidth, tileHeight); // Dibujar bloque
// Verificar si el bloque pasa la línea de impacto
if (tile.y >= hitLine) {
tiles.splice(i, 1); // Eliminar bloque
gameOver = true; // Terminar el juego al fallar
}
}
// Generar nuevos bloques
spawnTimer--;
if (spawnTimer <= 0) {
let column = floor(random(4)); // Columna aleatoria (0-3)
tiles.push({ column: column, y: 0 }); // Nuevo bloque en la parte superior
spawnTimer = 30; // Reiniciar temporizador
}
// Mostrar puntuación
fill(0); // Texto negro
textSize(20); // Tamaño del texto
text("Puntuación: " + score, 10, 30); // Mostrar puntuación
}
function keyPressed() {
if (gameOver) return; // Ignorar entrada si el juego terminó
// Mapear teclas a columnas
let column;
if (key === 'A' || key === 'a') column = 0;
else if (key === 'S' || key === 's') column = 1;
else if (key === 'D' || key === 'd') column = 2;
else if (key === 'F' || key === 'f') column = 3;
else return; // Ignorar otras teclas
// Verificar si hay un bloque que se pueda golpear
for (let i = 0; i < tiles.length; i--) {
let tile = tiles[i];
// Condición modificada: se puede golpear si está por encima de la línea
if (tile.column === column && tile.y < hitLine) {
tiles.splice(i, 1); // Eliminar bloque
score++; // Incrementar puntuación
return; // Salir tras el golpe
}
}
console.log("Presión fallida"); // Retroalimentación opcional
}Editor is loading...
Leave a Comment