雨谷の日和

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

人狼BBS作成日記78

投票の集計が終わったら、次は処刑対象を決定しなければならないでしょう。

  $Vote_Max = 0;
  for($index = 0; $index < @Char_Vote_Temp; $index++){
    if( $Vote_Max < $Char_Vote_Temp[$index] ){
      $Vote_Max = $Char_Vote_Temp[$index];
    }
  }

まずは最大得票数(Vote_Max)がいくらなのかを探します。
最初にVote_Maxを0で初期化しておき、次に投票数の配列(Char_Vote_Temp)を順に調べていき、Vote_Maxよりも大きな値があればその値でVote_Maxを書き換えます。
これで、ループが回り終わった時点で、Vote_Maxには最大得票数が設定されていることになります。
次に、最大得票数を得たキャラクターを探します。最大得票となったキャラクターは一人とは限らない(同数1位が複数いる可能性がある)ので、以下のように最大得票となったキャラクターを全てピックアップしていきます。

  @Char_Vote_Max_Index = ();
  for($index = 0; $index < @Char_Vote_Temp; $index++){
    if( $Vote_Max == $Char_Vote_Temp[$index] ){
      push(@Char_Vote_Max_Index, $index);
    }
  }

Char_Vote_Tempを順に調べ、最大得票(Vote_Max)のキャラクターの番号を、Char_Vote_Max_Indexに格納していきます。
そして最後に、その最大得票のキャラクターの中から、吊り対象を選択します。

  $Char_Vote_Max = -1;
  if( @Char_Vote_Max_Index == 1 ){
    $Char_Vote_Max = $Char_Vote_Max_Index[0];
  }else{
    $Char_Vote_Max = $Char_Vote_Max_Index[ int(rand(@Char_Vote_Max_Index)) ];
  }

もしもChar_Vote_Max_Indexに格納されているキャラクターの番号が1つだけだったら、その番号を吊り対象(Char_Vote_Max)として決定します。
複数の候補が居る場合には、その中からランダムで決定します。ランダムの方法は、投票の時と同じやり方ですね。
そして、最後にログファイルに出力して終了です。

  $Char_Life[$Char_Vote_Max] = 1;
  $temp = "$Day_Count_Max<>82<>$Char_Vote_Max<>$Time_Stamp\n";
  print LOGFILE $temp;

このとき、同時に吊り対象のキャラクターのChar_Lifeに死亡フラグ(1)を設定します。