Fall Semester 2004

Lecture Notes Extra: Additional Help with Homework Five

Here's a program like the assignment:

```<html><head><title>First to 100</title>

<script language="javascript">

var acc = 0; // state
var message = ""; // also part of state

function calculate() {

arg = document.forms[0].arg.value; // read input

var oldAcc = acc; // so it would look like fibonacci in the end (for fun and better reporting)

if (arg > 10 || arg < 1) { message = arg + " is not a legal value."; } else { // process the state

acc += eval(arg);

if (acc >= 100) { message = "Game ends. You win."; } else {

var comp = Math.round(1 + Math.random() * 10);

if (acc >= 100) { message = "Game ends. Computer wins." } else {

acc += comp;

message = "Game is under way.";

}

}

} // end of process the state (we don't need to store (or retrieve it, for that matter))

document.getElementById("acc").firstChild.nodeValue
= oldAcc + " + " + arg + " + " + comp + " = " + acc + " (" + message + ") "; // print state

document.forms[0].arg.value = ""; // get ready for new input
}
</script>

<form>

<tr> <td> The value of the game is currently <span id="acc"> 0 (zero). </span> </td> </tr>

<tr> <td> Please enter a number (between 1-10): <input type="text" name="arg" size=4> </td> </tr>

<tr> <td> When ready, please press <input type="button"
value="Proceed"
onClick="calculate()"
>

</td>
</tr>

</form>

</body>
</html>```
What does it do? Can we use it?

Here's a simpler (shorter?) program:

```<html>
<head><title>Example problem for the final</title>
<script language="javascript">

var one = Math.round(1 + Math.random() * 5);
var two = Math.round(1 + Math.random() * 5);
// alert("The dice is: " + one);
</script>
<body bgcolor="white">
<form>
The dice show <span id="dice"> </span>. <p>

Your balance is 5000. <p>
What is the sum: <select name="sum">
<option value="non"> Click me!
<option value="eve"> Even
<option value="odd"> Odd
</select> <p>

How much do you want to bet: <input type="text" name="bet" size=6> <p>
When ready please push: <input type="button" value="Proceed"
>
</form>
<script language="javascript">

document.getElementById("dice").innerHTML = "(" + one + ", " + two + ")";
</script>
</body>
</html>```
What does it do? Can you use this?

```<html>
<head><title>Example problem for the final</title>

<script language="javascript">
var one = Math.round(1 + Math.random() * 5);
var two = Math.round(1 + Math.random() * 5);
var balance = 5000;
var message;
function process() {
var guess = document.one.sum.options[document.one.sum.selectedIndex].value;
var bet = document.one.bet.value;
// alert("You are betting " + bet +" on " + guess);
if ( (guess == "eve" && (one + two) % 2 == 0) ||
(guess == "odd" && (one + two) % 2 == 1)
) {
balance = eval(balance) + eval(bet);
message = "Good guess.";
} else {
balance -= bet;
message = "Too bad.";
}
one = Math.round(1 + Math.random() * 5);
two = Math.round(1 + Math.random() * 5);

document.getElementById("dice").innerHTML = "(" + one + ", " + two + ")";
document.getElementById("balance").innerHTML = balance;
document.getElementById("message").innerHTML = message;

}
function changeBalance() {
balance += 1;
document.getElementById("balance").innerHTML = balance;
}
</script>
<body bgcolor="white">

<a href="javascript:changeBalance()">Click here to change the balance</a>. <p>
<form name="one">

<span id="message"> Welcome to our game. </span> <p>
The dice show <span id="dice"> </span>. <p>
Your balance is <span id="balance"> </span>. <p>

What is the sum: <select name="sum">
<option value="non"> Click me!
<option value="eve"> Even
<option value="odd"> Odd
</select> <p>

How much do you want to bet: <input type="text" name="bet" size=6> <p>
When ready please push: <input type="button" value="Proceed"
onClick="process()"
>
</form>
<script language="javascript">
document.getElementById("dice").innerHTML = "(" + one + ", " + two + ")";
document.getElementById("balance").innerHTML = balance;
</script>

</body>
</html>```
What's this last one doing? What, if anything, can you use from it?

Can you change it? Should you?

Last updated: Nov 2, 2004 by Adrian German for A348/A548