Rock paper scissors... 
	 
	
		| Author | 
		Message | 
	 
		 
		Squirter
 
 
 
    
		 | 
		
		
			
				  Posted: Wed Mar 24, 2004 7:52 am    Post subject: Rock paper scissors...  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				Hey, I'm trying RPS with forms, here it is so far...
 
 
	  | code: | 	 		  <form METHOD="POST" ACTION="rpsform.php">
 
 
<INPUT TYPE="button" name="choice" value="rock">
 
<br>
 
 
<INPUT TYPE="button" name="choice" value="scissors"><br>
 
 
 
<INPUT TYPE="button" name="choice" value="paper">
 
</form>  | 	 
  | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
		 
		Sponsor Sponsor 
		 
  
		 | 
		
 | 
	 
	 
		  | 
	 
				 
		Squirter
 
 
 
    
		 | 
		
		
			
				  Posted: Wed Mar 24, 2004 7:53 am    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				And the script to compliment the first one...
 
 
 
The one below is rpsform.php.
 
 
	  | code: | 	 		  
 
<?
 
 
$input = array("scissors", "paper", "rock");
 
$total_array = count($input);
 
$rand_keys = array_rand($input, $total_array);
 
 
 
if(isset($_POST['choice'])) {
 
 
        $choice = $_POST['choice'];
 
 
 
 
 
if ($input == 'rock' && $choice == 'scissors')
 
{
 
echo 'You chose <b>scissors,</b><br>
 
Computer chose <B> rock</b> <BR>
 
You lose!'; 
 
}
 
elseif ($input[$rand_keys[0]] == 'rock' && $choice == 'paper')
 
{
 
echo 'You chose <B> paper </b><br>
 
Computer chose <b>rock</b><BR>
 
You win!'; 
 
}
 
elseif ($input[$rand_keys[0]] == 'scissors' && $choice == 'rock')
 
{
 
echo 'You chose <b>rock,</b><br>
 
Computer chose <B> scissors</b> <BR>
 
You win!'; 
 
}
 
elseif ($input[$rand_keys[0]] == 'scissors' && $choice == 'paper')
 
{
 
echo 'You chose <b>paper,</b><br>
 
Computer chose <B> scissors</b> <BR>
 
You lose!'; 
 
}
 
elseif ($input[$rand_keys[0]] == 'paper' && $choice == 'rock')
 
{
 
echo 'You chose <b>rock,</b><br>
 
Computer chose <B> paper</b> <BR>
 
You lose!'; 
 
}
 
elseif ($input[$rand_keys[0]] == 'paper' && $choice == 'scissors')
 
{
 
echo 'You chose <b>scissors,</b><br>
 
Computer chose <B> paper</b> <BR>
 
You win!'; 
 
} elseif($user == $input[$rand_keys[0]]) {
 
        echo 'It\'s a tie!';
 
} else {
 
        echo 'sorry, only <b>rock, paper and scissors</b> are allowed<br>its case-sensitive';
 
}
 
 
 
?>
 
 
  | 	  
 
 
 
Whenever I click the button though in the first script, nothing happens.  Anyone know what's wrong? | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		Amailer
 
  
 
    
		 | 
		
		
			
				  Posted: Wed Mar 24, 2004 7:59 am    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				ah, well you see for you to click a button and make it to submit stuff in the form, you have to make it's type 'SUBMIT'
 
 
	  | code: | 	 		  
 
<form METHOD="POST" ACTION="rpsform.php">
 
<INPUT TYPE="submit" name="choice" value="rock"><br>
 
<INPUT TYPE="submit" name="choice" value="scissors"><br>
 
<INPUT TYPE="submit" name="choice" value="paper">
 
</form>
 
  | 	 
  | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		wtd
 
 
 
    
		 | 
		
		
			
				  Posted: Wed Mar 24, 2004 7:32 pm    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				And just for fun, let's refactor!
 
 
Not tested.
 
 
	  | code: | 	 		  <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>  | 	 
  | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		Squirter
 
 
 
    
		 | 
		
		
			
				  Posted: Fri Mar 26, 2004 8:34 pm    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				Okay, now I'm using sessions on this as well.
 
 
This is rps1.php
 
	  | code: | 	 		  
 
<form METHOD="POST" ACTION="rpsform.php">
 
 
<INPUT TYPE="submit" name="choice" value="rock">
 
<br>
 
 
<INPUT TYPE="submit" name="choice" value="scissors"><br>
 
 
 
<INPUT TYPE="submit" name="choice" value="paper">
 
<br>
 
<br>
 
<br>
 
</form>
 
<?
 
 
session_start();
 
if(!isset($_SESSION['wins'])) or
 
(!isset($_SESSION['losses'])) or
 
(!isset($_SESSION['ties']))
 
echo "Sorry, you have not started a session.  Play a game to start a session and keep your game record.";
 
 
else
 
echo "<center> Wins: <b> $_SESSION['wins']" </b> </center><br>
 
 
echo "<center> Losses: <b> $_SESSION['losses']" </b> </center><br>
 
 
echo "<center> ties: <b> $_SESSION['ties']" </b> </center><br>
 
?>  | 	 
  | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		Squirter
 
 
 
    
		 | 
		
		
			
				  Posted: Fri Mar 26, 2004 8:36 pm    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				And to compliment it, rpsform.php.
 
 
	  | code: | 	 		  <?
 
srand((float) microtime() * 10000000);
 
$input = array("scissors", "paper", "rock");
 
$total_array = count($input);
 
$rand_keys = array_rand($input, $total_array);
 
 
 
if(isset($_POST['choice'])) {
 
 
        $choice = $HTTP_POST_VARS['choice'];
 
 
session_start();
 
if(!isset($_SESSION['count'])) {
 
session_register('wins')
 
session_register('losses')
 
session_register('ties')
 
$HTTP_SESSION_VARS['wins'] = 0
 
$HTTP_SESSION_VARS['losses'] = 0
 
$HTTP_SESSION_VARS['ties'] = 0;
 
 
 
 
if ($input == 'rock' && $choice == 'scissors')
 
{
 
echo 'You chose <b>scissors,</b><br>
 
Computer chose <B> rock</b> <BR>
 
You lose!'
 
$HTTP_SESSION_VARS['losses'] ++; 
 
}
 
elseif ($input[$rand_keys[0]] == 'rock' && $choice == 'paper')
 
{
 
echo 'You chose <B> paper </b><br>
 
Computer chose <b>rock</b><BR>
 
You win!'
 
$HTTP_SESSION_VARS['wins'] ++;
 
}
 
elseif ($input[$rand_keys[0]] == 'scissors' && $choice == 'rock')
 
{
 
echo 'You chose <b>rock,</b><br>
 
Computer chose <B> scissors</b> <BR>
 
You win!'
 
$HTTP_SESSION_VARS['wins'] ++; 
 
}
 
elseif ($input[$rand_keys[0]] == 'scissors' && $choice == 'paper')
 
{
 
echo 'You chose <b>paper,</b><br>
 
Computer chose <B> scissors</b> <BR>
 
You lose!'
 
$HTTP_SESSION_VARS['losses'] ++;
 
}
 
elseif ($input[$rand_keys[0]] == 'paper' && $choice == 'rock')
 
{
 
echo 'You chose <b>rock,</b><br>
 
Computer chose <B> paper</b> <BR>
 
You lose!'
 
$HTTP_SESSION_VARS['losses'] ++;
 
}
 
elseif ($input[$rand_keys[0]] == 'paper' && $choice == 'scissors')
 
{
 
echo 'You chose <b>scissors,</b><br>
 
Computer chose <B> paper</b> <BR>
 
You win!'
 
$HTTP_SESSION_VARS['win'] ++;
 
} elseif($user == $input[$rand_keys[0]]) {
 
        echo 'It\'s a tie!'
 
$HTTP_SESSION_VARS['ties'] ++;;
 
} else {
 
        echo 'sorry, only <b>rock, paper and scissors</b> are allowed<br>its case-sensitive';
 
}
 
 
}
 
<center> echo Wins: <b> $HTTP_SESSION_VARS['wins']</b> </center>;
 
<center> echo Losses: <b> $HTTP_SESSION_VARS['losses']</b> </center>;
 
<center> echo Ties: <b> $HTTP_SESSION_VARS['ties']</b> </center>;
 
 
<form METHOD="POST" ACTION="rps1.html">
 
 
<input type="submit" value="Play Again!"
 
</form>
 
 
?>
 
  | 	  
 
 
So this should display the wins, losses, and ties on both rps1.php and rpsform.php.  But, it only shows the scores on rpsform.php.  Anyone know what's wrong? | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		Amailer
 
  
 
    
		 | 
		
		
			
				  Posted: Sat Mar 27, 2004 4:23 pm    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				for your rpsform.php
 
	  | code: | 	 		  
 
<?
 
srand((float) microtime() * 10000000);
 
$input = array("scissors", "paper", "rock");
 
$total_array = count($input);
 
$rand_keys = array_rand($input, $total_array);
 
 
if(isset($_POST['choice'])) {
 
 
        $choice = $HTTP_POST_VARS['choice'];
 
 
 
if(!isset($_SESSION['count'])) {
 
session_start();
 
 
session_register('wins');
 
session_register('losses');
 
session_register('ties');
 
 
 
if(!isset($HTTP_SESSION_VARS['wins'])) $HTTP_SESSION_VARS['wins'] = 0;
 
if(!isset($HTTP_SESSION_VARS['ties'])) $HTTP_SESSION_VARS['ties'] = 0;
 
if(!isset($HTTP_SESSION_VARS['losses'])) $HTTP_SESSION_VARS['losses'] = 0;
 
 
if ($input[$rand_keys[0]] == 'rock' && $choice == 'scissors')
 
{
 
echo 'You chose <b>scissors,</b><br>
 
Computer chose <B> rock</b> <BR>
 
You lose!';
 
$HTTP_SESSION_VARS['losses']++; 
 
}
 
elseif ($input[$rand_keys[0]] == 'rock' && $choice == 'paper')
 
{
 
echo 'You chose <B> paper </b><br>
 
Computer chose <b>rock</b><BR>
 
You win!';
 
$HTTP_SESSION_VARS['wins']++;
 
}
 
elseif ($input[$rand_keys[0]] == 'scissors' && $choice == 'rock')
 
{
 
echo 'You chose <b>rock,</b><br>
 
Computer chose <B> scissors</b> <BR>
 
You win!';
 
$HTTP_SESSION_VARS['wins']++; 
 
}
 
elseif ($input[$rand_keys[0]] == 'scissors' && $choice == 'paper')
 
{
 
echo 'You chose <b>paper,</b><br>
 
Computer chose <B> scissors</b> <BR>
 
You lose!';
 
$HTTP_SESSION_VARS['losses']++;
 
}
 
elseif ($input[$rand_keys[0]] == 'paper' && $choice == 'rock')
 
{
 
echo 'You chose <b>rock,</b><br>
 
Computer chose <B> paper</b> <BR>
 
You lose!';
 
$HTTP_SESSION_VARS['losses']++;
 
}
 
elseif ($input[$rand_keys[0]] == 'paper' && $choice == 'scissors')
 
{
 
echo 'You chose <b>scissors,</b><br>
 
Computer chose <B> paper</b> <BR>
 
You win!';
 
$HTTP_SESSION_VARS['wins']++;
 
} elseif($choice == $input[$rand_keys[0]]) {
 
        echo 'It\'s a tie!';
 
$HTTP_SESSION_VARS['ties']++;;
 
} else {
 
        echo 'sorry, only <b>rock, paper and scissors</b> are allowed<br>its case-sensitive';
 
}
 
 
}
 
 
 
echo '<center> echo Wins: <b>'. $HTTP_SESSION_VARS['wins'] .'</b> </center>
 
<center> echo Losses: <b>'.  $HTTP_SESSION_VARS['losses'] .'</b> </center>
 
<center> echo Ties: <b>'. $HTTP_SESSION_VARS['ties'] .'</b> </center>';
 
} // if(!isset($_SESSION['count'])) {
 
 
echo '<form METHOD="POST" ACTION="rps1.php">
 
<input type="submit" value="Play Again!">
 
</form>';
 
 
 
?>
 
  | 	 
  | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		 | 
	 
 
	
	
	 
	
	 |