Believe it or not, but the last 13 or so posts have all been leading up to this one. Generating random numbers, capturing user input, using colors on the command-line, pluralizing words, and then some are all being utilized in this simple number guessing game.

The script itself generates a random number between 1 and 100, asks the user to guess, advises them if they are too high or too low then tells them how many guesses it took them to guess the number:

<?php

$number  = rand(1, 100);
$guesses = 0;
$won	 = false;
$handle  = fopen('php://stdin', 'r');

echo "\nI'm thinking of a number between 1 and 100...\nCan you guess the number?\n\n";

while (!$won)
{
	$guesses++;
	echo 'What is your guess? ';

	$guess = trim(fgets($handle));

	if (preg_match('/\d/', $guess))
	{
		if ($guess > $number)
		{
			echo "\033[0;31mToo high...\033[0m\n";
		}
		elseif ($guess < $number)
		{
			echo "\033[0;31mToo low...\033[0m\n";
		}
		elseif ($guess == $number)
		{
			echo "\033[0;32m\nYou guessed it!\033[0m\n";
			printf('It took you %d ' . ngettext('guess', 'guesses', $guesses) . "!\n",  $guesses);
			exit;
		}
	}
}

?>

To run the script, just execute it from the command-line:

php -f number-guess.php

Substitute number-guess.php for whatever you named the script and guess away!