2006/10/30

【何か】シリーズを作ってみよう(その14)  【何か】スクロール
前回へ戻る>

この連載の最終回です。

ここまでで“【何か】センサー”から受け取るパラメーターに応じて、

・0〜300であれば速度(Km/h)と解釈し、編成の加減速性能に準じてその速度まで加速または減速する。
・301以上であれば停車位置までの距離(Nゲージmm)と解釈して減速→停車し、一定時間後に再発車する。
・-1以下であればその絶対値を停車位置までの距離と解釈して減速→停車し、一定時間後に方向転換してから再発車する。

が“【何か】この速度で走れ”に組み込まれました。【何か】シリーズとしてはこれで十分完成なのですが、どうせならばこのスクロールを自動運転の万能スクロールとすべく、以下のオマケ機能を組み込むことにします。

(1) あるキーを押すと、編成がアクティブになる。
(2) キーを押したときに編成が停車していた場合、発車する。

この機能を加えることで、【何か】センサーが適切に配置されているレイアウトであれば、カーソルキーによる運転操作を一切しなくても、スクロールのみで出発を含むすべての速度制御を賄えることになります。

続きを読む
0

2006/10/29

【何か】シリーズを作ってみよう(その13)  【何か】スクロール
前回へ戻る>

今回は、前回示したメソッドsubStopから(SetEventZeroSpeed命令で設定される)停車イベントによってcallされるメソッドsubStopped以降、編成を再出発させるまでの流れを解説します。この一連の流れでは、以下のことをおこないます。

(1) 停車してから一定時間待つ。
(2) グローバル変数VarFlagの値が1であれば方向転換する。
(3) さらに一定時間待つ。
(4) 再出発する。

メソッドの中身に入る前に、上掲下線部の「一定時間」を得るべく、paramセクションを1つ追加しておくことにしましょう。

param
{
name WizStopTime
type int
default 2500
range 1000 30000
guide "停車時間の半分(単位ミリ秒)。停車後、この時間が経過すると方向転換がおこなわれ、さらに同じだけ時間が経過すると出発する。"
}

paramセクションの書き方についてはこちらで解説しているので参照してください。“WizStopTime”という名前で1000〜30000(1秒から30秒に相当)の数値をSCRIPTウィザードから受け取る、という意味になります。以前の「編成の加減速性能」の場合と異なり、VRMスクリプトの世界では時間は単位ミリ秒の整数扱いですので、type要素は“int”になります。

ここで受け取ったWizStopTimeを使って、(1)〜(4)の処理をおこなうメソッドを以下に示します。
続きを読む
0

2006/10/28

【何か】シリーズを作ってみよう(その12)  【何か】スクロール
前回へ戻る>

今回は変数VarParameterの距離だけ走って期待の停車位置にピタリと止めるメソッドsubStopの中身について解説します。ここには、停車した後の動作(必要に応じて方向転換し、再発車する)のための準備も含まれます。

//↓独自の初期化処理(グローバル変数宣言等)はここで

Var VarParameter //パラメータ保存用
Var VarFlag //折り返し運転フラグ
Var IDEvent //イベントID
Var VarStartVoltage //減速開始時の電圧
Var VarStartTime //停車・再出発所要時間


//↑ここまで

まず、scriptセクション冒頭の初期化処理部に、例によって黄色で示したグローバル変数の宣言を追加しておくことにします。これらを何に使うかについては、メソッドの中身に触れながら見ていくことにしましょう。

では、肝心のメソッドsubStopの中身です。これを既に組み込み済みのメソッドsubSpeedの後に書き加えます。

BeginFunc subStop
//
//VarParameterの距離だけ走行して停車するメソッド
//
//既に停車イベントが設定されていれば、一旦これを解除する
KillEvent IDEvent
//停車イベント設定
SetEventZeroSpeed subStopped IDEvent
//停車所要時間算出
Var TmpSpeed
Var TmpTime
GetCurrentSpeed TmpSpeed
div TmpSpeed 3.6
mov TmpTime VarParameter
mul TmpTime 300.0
div TmpTime TmpSpeed
cnvint TmpTime
//再出発用電圧・加速所要時間記録
GetCurrentVoltage VarStartVoltage
mov VarStartTime TmpTime
//減速開始
SetTimerVoltage 0.0 TmpTime
EndFunc


続きを読む
0

2006/10/27

【何か】シリーズを作ってみよう(その11)  【何か】スクロール
前回へ戻る>

少し間が空いたので、もう誰も何も覚えていないかも知れませんが。

与太はさておき。前回までで【何か】センサーから受け取ったパラメータが0〜300の場合、それを到達すべき速度と解釈して、編成の加減速性能に応じて然るべく速度を変化させる部分が完成しました。

今回からは、パラメーターが0以下、または301以上の場合、これを停車位置までの距離と解釈して然るべく停車させ、その後、再発車させる部分について解説していきます。具体的には、こちらで示したメソッドmainからcallされる、メソッドsubStopの中身について、になります。

具体的なスクロールの中身に入るまでに、メソッドsubStop(と、そこからさらにcallされるメソッド)では何を実現すべきなのか、についてまとめておくことにしましょう。

続きを読む
0


teacup.ブログ “AutoPage”
AutoPage最新お知らせ