雨谷の日和

過去20年で2,800を超えるアニメの第1話だけは見続けた僕のお勧めアニメがハズレなはずがない

人狼BBS作成日記41

タイプ別の入力フォームは、hidden で埋め込んでいるmode パラメータを変えることで判別すれば良いだろう。
ただ、見た目的に色々と考えないと誤入力なども懸念されるから、そこら辺も工夫したいところです。
ということで、以下のようにしてみます。

sub STDOUT_INPUT_FORM {
  print "<div class=\"cell\"><div class=\"char\">\n";
  print "<img class=\"char\" src=\"$Char_Icon\" width=\"50\" height=\"50\" alt=\"$Char_Name\"></div>\n";
  print "<div class=\"name\">$Char_Name $Mode_Name{@_[0]}メッセージ</div>\n";
  print "<form method=\"POST\" action=\"$Cgi_Main\" class=\"mode@_[0]\">\n";
  print "<input type=\"hidden\" name=\"mode\" value=\"@_[0]\">\n";
  print "<textarea cols=\"60\" rows=\"5\" name=\"msg\" wrap=\"off\"></textarea><br>\n";
  print "<input type=\"submit\" value=\"発言する\">\n";
  print "</form><br class=\"clear\"></div>\n";
  print "<br>\n";
}

STDOUT_INPUT_FORM に、モードを引数として渡すように変えました。
使い方は、以下のようになるでしょう。

    &STDOUT_INPUT_FORM( "01" );
    &STDOUT_INPUT_FORM( "05" );
    &STDOUT_INPUT_FORM( "11" );
    &STDOUT_INPUT_FORM( "15" );
    &STDOUT_INPUT_FORM( "40" );
    &STDOUT_INPUT_FORM( "50" );

また、各モードの名前についても、文字で明示的に表示させた方が良いので、それも以下のように連想配列に保持しておき、使えるようにしておきます。

$Mode_Name{'01'} = "村人";
$Mode_Name{'05'} = "霊界";
$Mode_Name{'11'} = "人狼";
$Mode_Name{'15'} = "魔界";
$Mode_Name{'40'} = "妖精";
$Mode_Name{'50'} = "天界";

ファイルへの出力などの処理は先日のものと同じなので、割愛します。
まあ、とりあえずはこれで。ログインが実装されていないので、誰でもどんなメッセージでも入力・閲覧できてしまいますね。まだまだ道のりは長いようです。