タイプ別の入力フォームは、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'} = "天界";
ファイルへの出力などの処理は先日のものと同じなので、割愛します。
まあ、とりあえずはこれで。ログインが実装されていないので、誰でもどんなメッセージでも入力・閲覧できてしまいますね。まだまだ道のりは長いようです。