雨谷の日和

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

人狼BBS作成日記57

では、投票するための入力フォームを考えてみましょう。
以下のような感じになるでしょうか。

sub STDOUT_VOTE_FORM {
  print "<div class=\"cell\"><div class=\"char\">\n";
  print "<img class=\"char\" src=\"$Char_Icon[$Login_Index]\" width=\"50\"";
  print " height=\"50\" alt=\"$Char_Name[$Login_Index]\"></div>\n";
  print "<div class=\"name\">$Char_Name[$Login_Index] の投票</div>\n";
  print "<form method=\"POST\" action=\"$Cgi_Main\" class=\"mode01\">\n";
  print "<input type=\"hidden\" name=\"mode\" value=\"51\">\n";
  if($Char_Vote[$Login_Index] > -1){
    print "あなたは$Char_Name[$Char_Vote[$Login_Index]]に";
    print "投票しようとしています。<br>\n";
    &STDOUT_VOTE_SELECT;
    print "<input type=\"submit\" value=\"投票先を変更する\">\n";
  }else{
    print "投票先を選んでください。選ばない場合、あなたの投票先は";
    print "ランダムに決定されます。<br>\n";
    &STDOUT_VOTE_SELECT;
    print "<input type=\"submit\" value=\"投票先を設定する\">\n";
  }
  print "</form><br class=\"clear\"></div>\n";
  print "<br>\n";
}

既に投票設定を行っている場合には「〜に投票しようとしています」と表示し、まだ投票を行っていない場合には「ランダムに決定されます」と注意を促すようにしてみています。
上記の中で、STDOUT_VOTE_SELECTというサブルーチンを呼んでいます。これは、生きているキャラクターで自分以外の方をセレクトボックスの選択肢として表示するためのサブルーチンになっています。

sub STDOUT_VOTE_SELECT {
  print "<select name=\"msg\">\n";
  for($index = 0; $index < @Char_Life; $index++){
    if($Char_Life[$index] == 0 && $index != $Login_Index){
      if($Char_Vote[$Login_Index] == $index){
        print "<option value=\"$index\" selected>$Char_Name[$index]</option>\n";
      }else{
        print "<option value=\"$index\">$Char_Name[$index]</option>\n";
      }
    }
  }
  print "</select>\n";
}

キャラクターの数だけループを回し、自分以外で、Char_Life の値が0の方だけをピックアップしていますね。


襲撃や占いもほとんど投票のものと同じような感じになるのですが、若干異なる部分もあるので、その違いを中心に、明日解説します。