#!/usr/bin/perl -w
use strict;
use warnings;
use Tk;
use LWP::Simple;
#Read the predictions
my @answers = <DATA>;
chomp @answers;
my $szURL = "http://www.random.org/cgi-bin/randnum?num=1&min=0&max=$#a
+nswers&co+l=1";
#Initialise state
my $szState = 'Starting...';
#Create main window with a canas and bind the mouse event
my $main = new MainWindow;
my $canvas = $main->Canvas( -height=>300, -width=>300);
$canvas->pack( -expand, -fill );
$main->bind('<Button1-ButtonRelease>', \&Display);
#Create the fonts
my $fontLarge = $canvas->fontCreate(
-family=>'arial',
-size=>100,
-weight=>'bold'
);
my $fontSmall = $canvas->fontCreate(
-family=>'arial',
-size=>10,
-weight=>'bold'
);
#First time in do the display
Display();
MainLoop;
sub Display
{
my ($myFont, $szText, $iPrediction);
#Depending on the state do the "right thing" tm.
if ($szState eq 'Starting...' or $szState eq 'Prediction') {
$szState = 'Displaying 8';
$myFont = $fontLarge;
$szText = '8';
} else {
$szState = 'Prediction';
$myFont = $fontSmall;
$iPrediction = get( $szURL);
$szText = $iPrediction ? $answers[$iPrediction] : 'Error!';
}
#Over write anything
$canvas->createOval(
10, 10, 290, 290,
-fill=>'black',
-outline =>'black'
);
$canvas->createOval(
70, 70, 230, 230,
-fill=>'white',
-outline =>'white'
);
#Put up the message
$canvas->createText(
150, 150,
-justify=>'center',
-text=>$szText,
-font=>$myFont,
-width=>80
);
}
__DATA__
Outlook Good
Outlook Not So Good
My Reply Is No
Don't Count On It
You May Rely On It
Ask Again Later
Most Likely
Cannot Predict Now
Yes
Yes, Definitely
Better Not Tell You Now
It Is Certain
Very Doubtful
It Is Decidedly So
Concentrate and Ask Again
Signs Point to Yes
My Sources Say No
Without a Doubt
Reply Hazy, Try Again
As I See It, Yes
Cheers,
Dom.
|