summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjluehrs2 <jluehrs2@uiuc.edu>2008-02-02 15:29:25 -0500
committerjluehrs2 <jluehrs2@uiuc.edu>2008-02-02 15:29:25 -0500
commit5ecfe845a9e93f481c0a1e63b4df33a293b10ca9 (patch)
treee8b263e1e1738714f3c5e02cfdb4c1ad913bf083
parentddcf4c23fdacd7dfeba8c46d990524409f8de36e (diff)
downloadgames-word-5ecfe845a9e93f481c0a1e63b4df33a293b10ca9.tar.gz
games-word-5ecfe845a9e93f481c0a1e63b4df33a293b10ca9.zip
add jotto example game
-rw-r--r--bin/jotto.pl35
1 files changed, 35 insertions, 0 deletions
diff --git a/bin/jotto.pl b/bin/jotto.pl
new file mode 100644
index 0000000..cab1a9d
--- /dev/null
+++ b/bin/jotto.pl
@@ -0,0 +1,35 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Games::Word qw/shared_letters/;
+use Games::Word::Wordlist;
+
+my $wl = Games::Word::Wordlist->new('/usr/share/dict/words');
+$wl->remove_words($wl->words_like(qr/^(\w{0,4}|\w{6,})$/));
+$wl->remove_words($wl->words_like(qr/^[A-Z]/));
+my $word = $wl->random_word;
+my $guesses = 0;
+while (1) {
+ print "Guess a word: ";
+ my $guess = <>;
+ chomp $guess;
+
+ if ($guess eq '.') {
+ print "The word was $word\n";
+ exit;
+ }
+ if (length $guess != 5) {
+ print "Word must be 5 letters long.\n";
+ next;
+ }
+ if (!$wl->is_word($guess)) {
+ print "$guess is not a word.\n";
+ next;
+ }
+ $guesses++;
+ last if $guess eq $word;
+
+ my $correct = shared_letters $word, $guess;
+ printf "You got $correct letter%s correct.\n", $correct == 1 ? "" : "s";
+}
+print "You win in $guesses guesses!\n";