1回しか出てこない他列車

既にお気づきの方もいるかと思いますが、奈良線の対向列車は何種類かの編成が適当(ランダム)に選択されるようにしています。

他列車

単なるランダムなので1026系6連車は実在する本数よりたくさん出現してしまうこともあるわけですが、5802Fだけは排他になるよう特別な配慮をしています……が最初の数時間の間にダウンロードされたものは、快急で一部記述ミスがあり稀に2回出現する状態になっています。

これは乱数と四則計算で作っており、以下のファイルに定義しています。

Nara2013A4034\TrainList0a.txt

// 前段 5802Fの充当列車を決める・・・1=充当、0=他の電車にする

$DH02S1 = floor( Rand(6)/5 );   // 充当列車S1の発生確率
$DH02S2 = ( 1- $DH02S1) * floor( Rand(6)/5 );  // 充当列車S2の発生確率= (1 –充当列車S1の発生確率) × (ランダム)
$DH02R1 = ( 1- $DH02S1 – $DH02S2 ) * floor( Rand(6)/5 );
$DH02R2 = ( 1- $DH02S1 – $DH02S2 – $DH02R1 ) * floor( Rand(6)/5 );
$DH02L1 = ( 1- $DH02S1 – $DH02S2 – $DH02R1 – $DH02R2 ) * floor( Rand(6)/5 );
$DH02E1 = ( 1- $DH02S1 – $DH02S2 – $DH02R1 – $DH02R2 – $DH02L1 );

// 後段 充当列車の編成定義ファイル名を作る
// 下線部5802Fを充当する× 編成定義ファイルの末尾番号
// 5802Fを充当しない場合は、一般車をランダムに割り当てる

$Rand4031 = rand(3);
$Formation4031 = ‘CarStrs\RapidKT6Nara’+floor( $DH02R1*3 + (1-$DH02R1)*( $Rand4031 * $Rand4031 /3 ))+’.txt’;
$Rand1131 = rand(3);
$Formation1131 = ‘CarStrs\ExpKT6Nara’+floor( $DH02E1*5 + (1-$DH02E1)*( $Rand1131 * $Rand1131 /3 ) )+’.txt’;
$Rand4131 = rand(3);
$Formation4131 = ‘CarStrs\RapidKT6Nara’+floor( $DH02R2*3 + (1-$DH02R2)*( $Rand4131 * $Rand4131 /3 ))+’.txt’;
$Formation1133 = ‘CarStrs\NExpKT6Nara4.txt’;

// 編成定義ファイルを他列車に設定する
Train.Add(‘Train4031’, $Formation4031 );
Train[‘Train4031’].SetTrack(1, -1);
(以下略)

こういうことをする気になったのも、素晴らしいシリーズ21や5802Fを作って頂いたばんてつ氏のおかげだと思っています。

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s