<HTML><HEAD>
<!--
-------------
Guessing Game
-------------
-->
<SCRIPT LANGUAGE="JavaScript"><!-- hide from old browsers
/*
THE JAVASCRIPT COOKBOOK by Erica Sadun, webrx@mindspring.com
Copyright (c)1998 by Charles River Media. All Rights Reserved.
This applet can only be re-used or modifed by license holders of the
JavaScript Cookbook CD-ROM. Credit must be given in the source
code and this copyright notice must be maintained. If you do
not hold a license to the JavaScript Cookbook, you may NOT
duplicate or modify this code for your own use.
Use at your own risk. No warranty is given or implied of the suitability
of this applet for any specific application. Neither Erica Sadun nor
Charles River Media will be held responsible for any unwanted effects
due to the use of this applet or any derivative.
*/
//------------------RANDOM NUMBERS----------------------------
var js_mult1=3141
var js_mult2=5821
var js_m1=100000000
var js_m2=10000
var js_iseed=0
var js_iseed1=0
var js_iseed2=0
// Return a Random Integer between 0 and N-1
function random(n)
{
if (js_iseed == 0)
{
now = new Date()
js_iseed = now.getHours() + now.getMinutes() * 60
+ now.getSeconds() * 3600
}
js_iseed1 = js_iseed / js_m2
js_iseed2 = js_iseed % js_m2
var tmp = (((js_iseed2 * js_mult1 + js_iseed1 * js_mult2) % js_m2) *
js_m2 + (js_iseed2 * js_mult2)) % js_m1
js_iseed = (tmp + 1) % js_m1
return (Math.floor((js_iseed/js_m1) * n))
}
// Initialize number of guesses and the secret number
var myNumber = 0
var nGuesses = 0
// Process
function guessnum()
{
var response
var num = parseInt(document.forms[0].guess.value)
document.forms[0].guess.value = num // visual feedback in case of NaN
nGuesses++ // increase the guess count
response = "Your number was "
if (num < myNumber) response = response + "too low"
if (num > myNumber) response = response + "too high"
if (num == myNumber)
{
response = response + "right!! Guess my new number."
nGuesses = 0
myNumber = random(100)+1
}
document.forms[1].result.value=response
document.forms[1].guesses.value=nGuesses
document.forms[0].guess.focus()
document.forms[0].guess.select()
return true
}
function giveup()
{
var response
nGuesses = 0
response = "The number was " + myNumber +". Guess my new number."
myNumber = random(100)+1
document.forms[1].result.value=response
document.forms[1].guesses.value=nGuesses
document.forms[0].guess.focus()
document.forms[0].guess.select()
}
<!-- done hiding --></SCRIPT></HEAD>
<BODY bgcolor="ffffff" link="0000ff" vlink="770077"
onLoad="document.forms[0].guess.focus(); document.forms[0].guess.select()">
<FONT COLOR="007777"><H1><IMG SRC="../GRAFX/SPICE.JPG" WIDTH=37 HEIGHT=72
ALIGN = LEFT>Guessing Game</H1></FONT>
<BLOCKQUOTE>
<FONT SIZE=4>
This script randomly chooses a number between
one and a hundred. The player guesses at the
number and is given hints.<p>
</FONT>
<FONT COLOR="770000">
I am thinking of a number from 1 to 100. Can you guess what it is?
</FONT>
</BLOCKQUOTE>
<SCRIPT>
myNumber = random(100)+1
nGuesses = 0
</SCRIPT>
<FORM onSubmit="guessnum(); return false">
Your Guess: <INPUT TYPE="text" NAME="guess" SIZE=5>
<INPUT TYPE="button" VALUE=" Guess... " onClick="guessnum()">
<INPUT TYPE="button" VALUE=" GiveUp " onClick="giveup()">
</FORM>
<FORM><PRE>
#-Guesses: <INPUT TYPE="text" NAME="guesses" SIZE=3>
INFO: <INPUT TYPE="text" NAME="result" SIZE=44>
</PRE></FORM>
<BR><BR>
<FONT COLOR="007777"><H2>Discussion</H2></FONT>
<FONT SIZE=4>
A player can guess or give up by tapping on the two buttons
to the right of the
guess box. These buttons use the
<FONT COLOR="770000">onClick</FONT> event to check
to call the guess and give-up functions.<p>
The script sets the focus to the input field when the
page loads by including
<PRE><FONT COLOR="770000" SIZE=3> onLoad="document.forms[0].guess.focus()"
</FONT></PRE>
</blockquote> in the initial body tag. This means that the
game can be played right away without clicking on the "guess"
text input field.<p>
<b>Note:</b> Because a player might enter text rather than a number,
<FONT color=770000">guess</FONT> updates the guess box
to a parseInt() function call. If a player typed an invalid
text string, rather than a number, the guess box shows "NaN".
Netscape treats this non-number as a zero, more or less.
(Netscape Navigator version 3.0 will permit scripts to test for "NaN")
</FONT>
<FONT color="770000" SIZE=3><PRE>
var num = parseInt(thisform.guess.value)
thisform.guess.value = num
</pre></font>
<h5>Copyright ©1996 by Charles River Media, All Rights Reserved</h5>
</BODY>
</HTML>