IRCウンコゲーム POE::Component::Server::UnkoGameIRC

IRCウンコゲームとは

--unko_start と発言すると、誰か一人が「うんこ」としか発言しなくなります。ただし本人はそれに気づくことができません。

ソース

  • チャンネル指定とか入れ忘れてる。実装が無理矢理。あくまで動作確認レベル。
package POE::Component::Server::UnkoGameIRC;

use base qw/POE::Component::Server::IRC/;
use strict;
use warnings;
use Data::Dumper;
use List::Util;

my $USER = ();
my $STATUS = {};
sub _daemon_cmd_message  {
  my $self = shift;
  my $nick = shift || return;
  my $type = shift || return;
  my @args =  @_ ;

    if( $args[1] eq '--unko_start' ) {
        $self->unko_start( $self->{state}{chans}{ uc $args[0] }{users} );
    }
    if(  $STATUS->{status} eq 'playing' && $nick eq $STATUS->{jorker} ) {
        $args[1] = $self->unko( $args[1] );
    }

  $self->SUPER::_daemon_cmd_message( $nick , $type , @args );
}

sub unko_start {
    my $self = shift;
    my $users = shift;
    $STATUS->{status} = 'playing';
    my $cnt = 1;
    foreach my $keys ( List::Util::shuffle( keys %{ $users } ) ) {
        my $user  =  lc $keys;
        $USER->{ $user } = 1;
        if( $cnt == 1 ) {
            $STATUS->{jorker} = $user ;
        }
        $cnt++;

    }
}

sub unko {
    my $self = shift;
    my $text = shift;

    return 'うんこ';


}

1;

TODO

  • ランダムでの発動し、だまし合いをもうすこし入れれるようにする(つまり発動しないケースを作ることにより、相手がウンコと発言してなくても、ウンコ君の可能性を持たせる。)
  • --unko_is @nickname で、ウンコ君を見つける。失敗すると、その人の発言が、「僕ウンコ以下です」になる。成功するとウンコ君が変更される。自分にはできない。
  • --i_am_unko 自分がウンコ君の場合、他の人全員がウンコ君になり、自分は元にもどり、---unko_wo_nagasu コマンドを実行するまで全員ウンコ。大様気分を味わうことができる。自分ではなかった場合、すべての発言が、「僕はウンコです」になってしまう。
  • うんこ関連の言葉をランダムで返すようにする。

...

どうなんだろうか。