なんでも相談プログラムという例によって何の役にもたたないCGIプログラムをつくってみた。相談者のはなしにどうともとれそうなアイヅチを打ちまくるというものである。
例によって乱数のかわりに時刻をつかって、語彙を選んでいるのだが、初期型は語彙が5つしかなく、いくらなんでもつまらんので、語彙増強をしてみた。
# #確率百分の一の台詞を決めて、なければ十分の一の台詞にする。 # $i = time; $gauta = $i % 100; $socra = $i % 11; if($gauta == 99){ $socra = "後、見てみい。アレがきとるで。ナンチャッテ。"; } elsif($socra == 0){ $socra = "ふんふん、それで、それで。"; } elsif($socra == 1){ $socra = "ああ、なるほどねェ。"; } elsif($socra == 2){ $socra = "そうかい?そうかな?そうかなああ。"; } elsif($socra == 3){ $socra = "そうはゆーても、人間、達者がなによりや。"; } elsif($socra == 4){ $socra = "禍福はあざなえる縄の如し、なんてってね。人生万事サイオーが丙午ちゅうしなあ。"; } elsif($socra == 5){ $socra = "ナメとったらあかんデ、いやいや。"; } elsif($socra == 6){ $socra = "そうそう、そうなんよ。人生やねえ"; } elsif($socra == 7){ $socra = "腹もへるし、ガキも泣くしなァ。いやいや、そういうことではなしにね。"; } elsif($socra == 8){ $socra = "それでも、あなたの道を進め!なんちゃってね。"; } elsif($socra == 9){ $socra = "それ、それ、それ、待ってたでェ。"; } else{ $socra = "ンなアホな!"; }
まず確率百分の一で「後みてみい…」というのをいれてある。夜中にひとりでパソコンなんぞいじっていると、ふと後で誰かが見ているような気がすることがあるのでそういう人をビビらせてやろうという悪意である。最初は「霊が来とるでェ」とまで書いてみたんだが、百万分の一の確率で3回つづけて出たりするとコワイのでやめた。 これに外れたら11分の一で適当なセリフを抽選する。
やっかいなのはリロードと空うちである。これをやられるとどうやってもつまらなくなること必定である。ひとりボケ=ツッコミあってのウナズキであるから、両方寡黙ではお葬式になってしまう。そのてんではこのゲームの面白味はプレイヤーに全面的に依存している。そこでリロード、および無言にはそれ相応の反応をさせてみた。
if ($_ eq ""){ $socra = "どうしたん。黙ってたらわからんがな。"; }elsif ($_ eq "reload"){ $socra = "ボキャブラリーに変化をつけなアカンで。マンネリじゃアカン"; }else{
無言といっても「…」というのもあれば「...」「・・・」というのもある。ちなみにわたしは三点リーダー「…」を常用しているがなかぐろ「・」というのも人気が高い。間をとって「‥」を使うひとはあんまりみたことがない。ちなみに例の義妹は「・」が得意で毎行末「・・・」か「!」をつける習性がある。こういうのはsedふうのs///gをつかって排除している。ただどういうわけかs/ー//g とかくとPerlがエラーになってしまう。shift_jisの「ー」はなんかへんなコードにあたってるらしい。
# # ここでメッセージを$valに戻しといて$_は無言検出につかう。 # 「…」なんちゅうのは無言とみなす。 # $val = $_; s/「//g; s/」//g; s/\.//g; s/…//g; s/‥//g; s/
//g; s/。//g; s/、//g; s/・//g; s/!//g; s/\?//g; s/!//g; s/?//g; } }
例によってログはここにとってある。おみごとな擬似会話は芸術的でさえある…かなあ。ただしlynxやw3m、ネットスケープならきれいに見えるけれど、IEやOperaでは整形がぐしゃぐしゃになってしまうので表示用のプログラムを組んでみた。
ソースをみたい人もいるらしいのでここに置く。悩み相談ソースはここ。で、ログ表示ソースはここ。
2002/9/12