<html>
<head>
<title>Rock, Paper, Scissors</title>
</head>
<body>
<?php
$possible_choices = array(
"rock" => array(
"item" => "rock",
"defeats" => "scissors",
"defeated_by" => "paper";),
"paper" => array(
"item" => "paper",
"defeats" => "rock",
"defeated_by" => "scissors"),
"scissors" => array(
"item" => "scissors".
"defeats" => "paper",
"defeated_by" => "rock"));
function form_submitted() {
return isset($_REQUEST["choice"]);
}
function rps_computer_choice($possible_choices_array) {
return array_rand($possible_choices_array);
}
function rps_user_wins($user_choice, $computer_choice) {
$computers_choice = rps_computer_choice($possible_choices);
if ($user_choice["defeats"] == $computers_choice["item"])
return 1;
elseif ($user_choice["item"] == $computers_choice["item"])
return 0;
elseif ($user_choice["defeated_by"] == $computers_choice["item"])
return -1;
}
function rps_get_user_choice($possible_choices) {
if (form_submitted()) {
return $possible_choices[$_REQUEST["choice"]];
} else {
echo("I chose for you, since your input was wrong.<hr/>");
return rps_computer_choice($possible_choices);
}
}
function rps_outcome_message($user_choice, $computer_choice) {
switch (rps_user_wins($user_choice, $computer_choice)) {
case 1:
return "You win!";
case 0:
return "It's a tie!";
case -1:
return "Computer wins!";
}
}
function rps_echo_choices($user_choice, $computer_choice) {
echo("The computer chose " . $computers_choice["item"] . "<br/>");
echo("You chose " . $user_choice["item"] . "<br/>");
}
// and here it is:
if (form_submitted()) {
$users_choice = rps_get_user_choice($possible_choices);
$computer_choice = rps_computer_choice($possible_choices);
rps_echo_choices($users_choice, $computer_choice);
echo(rps_outcome_message($users_choice, $computer_choice));
echo("<br/><hr/><br/>");
echo("<b>Play again!</b>");
echo("<br/><hr/><br/>");
}
?>
<FORM METHOD="POST" ACTION="<?= basename($PHP_SELF) ?>">
<INPUT TYPE="button" name="choice" value="rock"/>
<br/>
<INPUT TYPE="button" name="choice" value="scissors"/>
<br/>
<INPUT TYPE="button" name="choice" value="paper"/>
</FORM>
</body>
</html> |