« DBStationビネット~情景編 | トップページ | ルーレットスクリプトの言迷 »

2007/05/19

DBStationビネット~スクリプト編というか怪

SIGBUG0.jpg

ということで、『進路表示機(B型集合)』です。何をやりたいかというと、ルーレットなわけでした。以前にも同じようなことをやった気がしますが、コードを載せておきます。もうちょっとスマートなコーディングもあったかもですが、ま、いいか。以下のは「1~3が1秒おきに」という感じですが、0~19にしたり、0.1秒おきにしたり、さらに、キーイベントでスタート/ストップしたり、いろいろ応用はできるかと思いますだ。でも、その辺は割りとどうでもよくて、本題はこれの3行目だったりします。

Var ID
Var NowSig

SetSignalEx 1, 101
call this Sig01

BeginFunc Sig01
  GetSignalEx 1, NowSig
//  DrawVar NowSig
  ifeq NowSig 101
    SetSignalEx 1, 102
  endif
  ifeq NowSig 102
    SetSignalEx 1, 103
  endif
  ifeq NowSig 103
    SetSignalEx 1, 101
  endif
  SetEventAfter this Sig01 ID 1000
EndFunc

まず、マニュアルのパッケージリファレンスを読んでみると「0から19まで表示します。それぞれ、ID = 100から119です。スクリプトで設定してください」‥‥‥IDってなんだよ。この辺の用語は統一してほしいよなぁ。まあ、"SetSignal xx"の"xx"の部分のことらしい。単なる進路表示機の場合、"SetSignal 113"と書くと"13"が表示できるかも。

だがしかし、今回使った進路表示機は表示エリアが2つある。ということは、SetSignalExの出番かも? "SetSignalEx y, xx" の"y"で表示場所を指定して、"xx"で内容を決めるわけね。で、

SetSignalEx 0, 101
SetSignalEx 1, 103

こうやると、最初の画像のようになるわけ、反対側は何も表示されていないのよね、ダメだこりゃ。でも、数字が重なるのはともかく、重なった部分がそれだけ明るくなるのはなかなか興味深いところかも。

追記:もうちょっとスマート(?)ってのは、こんなんかな? これなら、19でも999でも平気かも。SetEventAfterの"1000"も変数にしたいところだけど、ダメみたい。

Var ID
Var NowSig
Var MaxNo
Var MinNo

set MaxNo 120
set MinNo 100
SetSignalEx 0, MinNo
call this Sig01

BeginFunc Sig01
  GetSignalEx 0, NowSig
  add NowSig 1
  ifeq NowSig MaxNo
    mov NowSig MinNo
  endif
  SetSignalEx 0, NowSig
  SetEventAfter this Sig01 ID 1000
EndFunc

|

« DBStationビネット~情景編 | トップページ | ルーレットスクリプトの言迷 »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/103983/15119497

この記事へのトラックバック一覧です: DBStationビネット~スクリプト編というか怪:

« DBStationビネット~情景編 | トップページ | ルーレットスクリプトの言迷 »