From 569ca52e98f6077dce7a7717e9bea8ec711a4bc9 Mon Sep 17 00:00:00 2001 From: Amani <60305749@udst.edu.qa> Date: Sun, 15 Feb 2026 18:03:26 +0300 Subject: [PATCH] Add validation for player names (fixes #1) --- script.js | 42 +++++++++++++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/script.js b/script.js index 43cfa50..08fb539 100644 --- a/script.js +++ b/script.js @@ -131,22 +131,42 @@ function generateKeyboard() { keyboard.appendChild(button); } } - function startGame() { - const p1Name = document.getElementById('player1Name').value.trim(); - const p2Name = document.getElementById('player2Name').value.trim(); - - gameState.player1.name = p1Name || 'Player 1'; - gameState.player2.name = p2Name || 'Player 2'; - - document.getElementById('player1Display').textContent = gameState.player1.name; - document.getElementById('player2Display').textContent = gameState.player2.name; - + const p1Input = document.getElementById('player1Name'); + const p2Input = document.getElementById('player2Name'); + + const p1Name = p1Input.value.trim(); + const p2Name = p2Input.value.trim(); + + const nameRegex = /^[A-Za-z]{2,}$/; // letters only, min 2 chars + + // Validate Player 1 + if (!nameRegex.test(p1Name)) { + alert('Player 1 name must contain only letters and be at least 2 characters long.'); + p1Input.focus(); + return; + } + + // Validate Player 2 + if (!nameRegex.test(p2Name)) { + alert('Player 2 name must contain only letters and be at least 2 characters long.'); + p2Input.focus(); + return; + } + + // If valid, set names + gameState.player1.name = p1Name; + gameState.player2.name = p2Name; + + document.getElementById('player1Display').textContent = p1Name; + document.getElementById('player2Display').textContent = p2Name; + document.getElementById('gameArea').style.display = 'block'; - + nextRound(); } + function nextRound() { if (wordBank.length === 0) { alert('No words in the word bank! Add some words first.');