diff options
author | doy <doy@tozt.net> | 2009-04-25 12:29:47 -0500 |
---|---|---|
committer | doy <doy@tozt.net> | 2009-04-25 12:29:47 -0500 |
commit | fd70eb77e3d8ef6f907eccdf0d9735a4280eef75 (patch) | |
tree | 35c5e21ae90b9566b5f592b54fc2c4cab40d4c9c | |
parent | 82ce96adf83a63ee8b38cb6d711097ce379ee320 (diff) | |
download | bot-games-fd70eb77e3d8ef6f907eccdf0d9735a4280eef75.tar.gz bot-games-fd70eb77e3d8ef6f907eccdf0d9735a4280eef75.zip |
fix up a bunch of challenging issues in the ghost games
-rw-r--r-- | lib/Bot/Games/Game/Ghost.pm | 7 | ||||
-rw-r--r-- | lib/Bot/Games/Game/Superghost.pm | 7 | ||||
-rw-r--r-- | lib/Bot/Games/Game/Xghost.pm | 6 |
3 files changed, 17 insertions, 3 deletions
diff --git a/lib/Bot/Games/Game/Ghost.pm b/lib/Bot/Games/Game/Ghost.pm index 740ecd2..29d75e9 100644 --- a/lib/Bot/Games/Game/Ghost.pm +++ b/lib/Bot/Games/Game/Ghost.pm @@ -93,11 +93,11 @@ command challenge => sub { } elsif ($self->valid_word($word)) { $self->is_over(1); - return "$word is a word! $challenger wins!"; + return "$word is a word! $challenger loses!"; } else { $self->is_over(1); - return "$word is not a word. $challenger loses!"; + return "$word is not a word. $challenger wins!"; } } else { @@ -128,7 +128,8 @@ command valid_move => sub { command valid_word_from_state => sub { my $self = shift; my ($word) = @_; - return uc($word) eq $self->state; + my $word_prefix = substr($word, 0, length($self->state)); + return uc($word_prefix) eq $self->state; }; command give_up => sub { diff --git a/lib/Bot/Games/Game/Superghost.pm b/lib/Bot/Games/Game/Superghost.pm index 0784698..d25bdf4 100644 --- a/lib/Bot/Games/Game/Superghost.pm +++ b/lib/Bot/Games/Game/Superghost.pm @@ -14,6 +14,13 @@ command valid_move => sub { || uc(substr($move, 1)) eq $self->state; }; +command valid_word_from_state => sub { + my $self = shift; + my ($word) = @_; + my $state = $self->state; + return uc($word) =~ /\Q$state\E/; +}; + __PACKAGE__->meta->make_immutable; no Bot::Games::OO; diff --git a/lib/Bot/Games/Game/Xghost.pm b/lib/Bot/Games/Game/Xghost.pm index 20dc19a..fcdc9a3 100644 --- a/lib/Bot/Games/Game/Xghost.pm +++ b/lib/Bot/Games/Game/Xghost.pm @@ -15,6 +15,12 @@ command valid_move => sub { && length($self->state) + 1 == length($move); }; +command valid_word_from_state => sub { + my $self = shift; + my ($word) = @_; + return is_substring($self->state, uc($move)); +}; + __PACKAGE__->meta->make_immutable; no Bot::Games::OO; |