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 コマンドを実行するまで全員ウンコ。大様気分を味わうことができる。自分ではなかった場合、すべての発言が、「僕はウンコです」になってしまう。
- うんこ関連の言葉をランダムで返すようにする。
...
どうなんだろうか。