0% found this document useful (0 votes)
29 views4 pages

Number Gusseing Game Jyoti Gupta

Uploaded by

jg8073931
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
29 views4 pages

Number Gusseing Game Jyoti Gupta

Uploaded by

jg8073931
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

NAME: JYOTI GUPTA

SE-CS 33

code for number guessing game

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Number Guessing Game</title>
<style>
body {
font-family: Arial, sans-serif;
max-width: 600px;
margin: 0 auto;
padding: 20px;
text-align: center;
}
input, button {
font-size: 16px;
margin: 10px;
padding: 5px 10px;
}
#message, #efficiency {
margin-top: 20px;
font-weight: bold;
}
</style>
</head>
<body>
<h1>Number Guessing Game</h1>
<p>Welcome to the Binary Search Number Guessing Game!</p>
<div id="setup">
<input type="number" id="lower" placeholder="Lower Bound (A)">
<input type="number" id="upper" placeholder="Upper Bound (B)">
<button onclick="setupGame()">Start Game</button>
</div>
<div id="game" style="display: none;">
<p id="range"></p>
<p id="optimalGuess"></p>
<input type="number" id="guess" placeholder="Enter your guess">
<button onclick="makeGuess()">Submit Guess</button>
</div>
<p id="message"></p>
<p id="efficiency"></p>
<p id="stats"></p>

<script>
let secretNumber, lower, upper, guesses, optimalGuesses;

function calculateOptimalGuesses(rangeSize) {
return Math.ceil(Math.log2(rangeSize));
}

function setupGame() {
lower = parseInt(document.getElementById('lower').value);
upper = parseInt(document.getElementById('upper').value);
if (isNaN(lower) || isNaN(upper) || lower >= upper) {
alert("Please enter valid lower and upper bounds.");
return;
}
secretNumber = Math.floor(Math.random() * (upper - lower + 1)) +
lower;
guesses = 0;
optimalGuesses = calculateOptimalGuesses(upper - lower + 1);
document.getElementById('setup').style.display = 'none';
document.getElementById('game').style.display = 'block';
updateRange();
document.getElementById('message').textContent = `I'm thinking of
a number between ${lower} and ${upper}. You should be able to guess it in
${optimalGuesses} guesses or fewer.`;
}

function updateRange() {
document.getElementById('range').textContent = `Current range:
[${lower}, ${upper}]`;
let optimalGuess = Math.floor((lower + upper) / 2);
document.getElementById('optimalGuess').textContent = `Optimal
guess: ${optimalGuess}`;
}

function makeGuess() {
let guess = parseInt(document.getElementById('guess').value);
if (isNaN(guess) || guess < lower || guess > upper) {
alert("Please enter a valid guess within the current range.");
return;
}
guesses++;
let optimalGuess = Math.floor((lower + upper) / 2);
let efficiency = (1 - Math.abs(optimalGuess - guess) / (upper -
lower + 1)) * 100;

if (guess < secretNumber) {


document.getElementById('message').textContent = "Too low! The
number is higher.";
lower = guess + 1;
} else if (guess > secretNumber) {
document.getElementById('message').textContent = "Too high!
The number is lower.";
upper = guess - 1;
} else {
document.getElementById('message').textContent =
`Congratulations! You've guessed the number ${secretNumber} correctly in
${guesses} guesses!`;
document.getElementById('game').style.display = 'none';
document.getElementById('setup').style.display = 'block';
if (guesses <= optimalGuesses) {
document.getElementById('stats').textContent = "Great job!
You guessed optimally or better than expected!";
} else {
document.getElementById('stats').textContent = `You could
improve. The optimal strategy would take ${optimalGuesses} guesses or fewer.`;
}
return;
}
updateRange();
document.getElementById('efficiency').textContent = `Guess
efficiency: ${efficiency.toFixed(2)}%`;
}
</script>
</body>
</html>

You might also like