Paso 1 de 5
El tablero
Un <canvas> es un lienzo en el que se dibuja con JavaScript. Se le dan 400 × 400 píxeles internos y el CSS lo escala al ancho disponible con aspect-ratio: 1 para que siga siendo cuadrado en el móvil.
touch-action: none hace que deslizar el dedo sobre el tablero no desplace la página: lo usarás en el último paso.
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Serpiente</title>
<link rel="stylesheet" href="estilos.css">
</head>
<body>
<main class="juego">
<div class="marcador">
<span>Puntos: <strong id="puntos">0</strong></span>
<span>Récord: <strong id="record">0</strong></span>
</div>
<canvas id="tablero" width="400" height="400" aria-label="Tablero del juego de la serpiente"></canvas>
<p id="mensaje" class="mensaje" aria-live="polite">Pulsa una flecha (o desliza el dedo) para empezar</p>
</main>
<script src="app.js"></script>
</body>
</html>
* { box-sizing: border-box; }
body {
margin: 0;
min-height: 100vh;
display: grid;
place-items: center;
background: #052e16;
color: #dcfce7;
font-family: system-ui, sans-serif;
}
.juego { width: min(94vw, 420px); text-align: center; }
.marcador { display: flex; justify-content: space-between; margin-bottom: 8px; font-size: 1.1rem; }
canvas {
display: block;
width: 100%;
height: auto;
aspect-ratio: 1;
border-radius: 12px;
background: #14532d;
touch-action: none; /* que deslizar el dedo no mueva la página */
}
.mensaje { min-height: 1.5em; font-weight: 600; }
// El JavaScript llega en el paso 2