Very neat indeed. In the spirit of TIMTOWTDI...
#!/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.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.