雨谷の日和

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

人狼BBS作成日記46

さて、HTMLの出力側も整理してみました。
各部分の出力をサブルーチン化して、メインの流れを分かりやすくすると、以下のようになりました。

sub STDOUT_HTML {
  &STDOUT_HEADER;
  &STDOUT_DAY_LIST( "header" );
  for($index = 0 ; $index < @Msg_Line; $index++ ){
    ($Line_Day, $Line_Type) = split( /<>/, $Msg_Line[$index]);
    if($Line_Day == $Day_Count){
      if($Line_Type == 80){
        &STDOUT_SYS( $Msg_Line[$index] );
      }elsif($Line_Type == 81){
        &STDOUT_CHAR( $Msg_Line[$index] );
      }else{
        &STDOUT_MSG( $Msg_Line[$index] );
      }
    }
  }
  if($Day_Count == $Day_Count_Max){
    &STDOUT_INPUT_FORM( "01" );
    &STDOUT_INPUT_FORM( "05" );
    &STDOUT_INPUT_FORM( "11" );
    &STDOUT_INPUT_FORM( "15" );
    &STDOUT_INPUT_FORM( "40" );
    &STDOUT_INPUT_FORM( "50" );
  }
  &STDOUT_DAY_LIST( "footer" );
  &STDOUT_FOOTER;
}

まずはヘッダ部を出力、次に日付リストを出力。
それからメッセージデータを一行づつ取り出して、データの日付(Line_Day)が表示する日付(Day_Count)と同じ場合だけ、それをHTMLに整形して出力します。
このとき、Line_Type が80番ならシステムメッセージ、81番ならキャラクターの登場メッセージ、それ以外なら単なる発言としてサブルーチンを呼んでいます。
それが一通り終わったら、表示する日付が現在進行中の日付の場合だけ入力用のフォームを出します。
最後に日付のリストとフッターを出力して終わりですね。


細かな部分で、必要と思われるものは明日以降にまた解説します。