サンプル:数字を画像で表示する

スクリプト研究所 桜です。
表示サンプル
今回は画像で数字を表示するスクリプトを公開致します。
表示する座標、Indexは可変ですので、このルーチンひとつで数カ所に数字を表示できます。

//お約束です。「今からスクリプトをはじめます」と言う命令。
Avatar.scriptmode
//画面の背景色を設定します。
bg:color/greenyellow

//表示した回数を初期化
lf[31]=0

//表示する数字を初期化
segment:1100
lf[30]=123
->Segment:1400

//表示する数字をランダムに増やします
segment:1200
//乱数取得
lf[3]=world.rand:100000
//表示する数字を増やします
lf[30]=flagAdd:lf[30],lf[3]
//表示した回数を増やします
lf[31]=flagAdd:lf[31],1
->Segment:1400

//表示する数字を何倍かに増やします
segment:1300
//0~9の乱数を取得し
lf[3]=world.rand:9
//2を加えることで2~11の乱数にして
lf[3]=flagAdd:lf[3],2
//表示する数字を増やします
lf[30]=flagMult:lf[30],lf[3]
//表示した回数を増やします
lf[31]=flagAdd:lf[31],1
->Segment:1400

//********************************
//数字表示用のサブルーチン呼び出し
//********************************
Segment:1400
lf[4]=10
lf[5]=600
lf[6]=150
lf[7]=flagAdd:lf[30],0
<-Segment:11000
//--------------------
lf[4]=8
lf[5]=350
lf[6]=250
lf[7]=flagAdd:lf[31],0
<-Segment:11000
//--------------------

wait:5000

menu:
 ;lf[30];を表示 ;lf[31];回目 どうする?
<数値初期化>
->Segment:1100
<乱数追加>
->Segment:1200
<2~10倍>
->Segment:1300
<やめる>
->Segment:9999

Segment:9999
->exit

//---------------------------------
//画像を表示する処理
//引数:lf[4] 画像Indexの初期値(1ずつ増加します)
// lf[5] 画像表示領域右端のX座標
// lf[6] 画像表示領域中央のY座標
// lf[7] 表示する値
//
//破壊:lf[8] 表示する値の下1桁
//   lf[9] 桁区切りようカウンタ
//---------------------------------
Segment:11000
//
//画像を表示する前処理:桁区切りようカウンタの設定
//まだ数字をひとつも表示していないので0
lf[9]=0
//画像Indexの初期値がおかしければ表示処理しない
->return;(lf[4]>=30)
->return;(lf[4]<=0)

//数字画像を表示する処理:ループ
Segment:11100
//下1桁=表示する数字を10で割った余り を取得
lf[8]=flagMod:lf[7],10
//表示する数字の下1桁を消す
//=下1桁を引いて10で割る
lf[7]=flagSub:lf[7],lf[8]
lf[7]=flagDiv:lf[7],10

//3桁表示したら「,」を表示する
//=3桁表示していなかったら「,」を表示する処理を飛ばす
->Segment:12000;(lf[9]<3)
//---------------------------------
//桁区切りのカンマ画像を表示する
//---------------------------------
// lf[4] 画像Indexの初期値(1ずつ増加します)
// lf[5] 画像表示領域右端のX座標
//カンマ画像の幅 の半分(端数切り上げ)をX座標から減らします
//=カンマ画像を表示する中心のX座標になります
lf[5]=flagSub:lf[5],8
//桁区切りのカンマ画像を表示する
ANIM.async:lf[4],user/9-00060/cimg_num_segk.png,15,50,1,1000,0,lf[5],lf[6],lf[5],lf[6],1000,0,0,1
//カンマ画像の幅 の半分(端数切り上げ)をX座標から減らします
//=カンマ画像を表示しおえた時の右端のX座標になります
lf[5]=flagSub:lf[5],8
//画像Index(1増加)
lf[4]=flagAdd:lf[4],1
//桁区切りのカンマ画像を表示したのでカウンタをリセット
lf[9]=0

//---------------------------------
//数字画像を表示する
//---------------------------------
Segment:12000
// lf[4] 画像Indexの初期値(1ずつ増加します)
// lf[5] 画像表示領域右端のX座標
//数字画像の幅 の半分(端数切り上げ)を減らします
//=数字画像を表示する時の中心のX座標になります
lf[5]=flagSub:lf[5],18

//ジャンプテーブル
//表示する数字に応じてどのアニメ命令を使うかを切り替えます
->Segment:12010;(lf[8]==0)
->Segment:12011;(lf[8]==1)
->Segment:12012;(lf[8]==2)
->Segment:12013;(lf[8]==3)
->Segment:12014;(lf[8]==4)
->Segment:12015;(lf[8]==5)
->Segment:12016;(lf[8]==6)
->Segment:12017;(lf[8]==7)
->Segment:12018;(lf[8]==8)
->Segment:12019;(lf[8]==9)

//数字画像を表示する
//-----------
Segment:12010
ANIM.async:lf[4],user/9-00060/cimg_num_seg0.png,35,50,1,1000,0,lf[5],lf[6],lf[5],lf[6],1000,0,0,1
->Segment:12100
//-----------
Segment:12011
ANIM.async:lf[4],user/9-00060/cimg_num_seg1.png,35,50,1,1000,0,lf[5],lf[6],lf[5],lf[6],1000,0,0,1
->Segment:12100
//-----------
Segment:12012
ANIM.async:lf[4],user/9-00060/cimg_num_seg2.png,35,50,1,1000,0,lf[5],lf[6],lf[5],lf[6],1000,0,0,1
->Segment:12100
//-----------
Segment:12013
ANIM.async:lf[4],user/9-00060/cimg_num_seg3.png,35,50,1,1000,0,lf[5],lf[6],lf[5],lf[6],1000,0,0,1
->Segment:12100
//-----------
Segment:12014
ANIM.async:lf[4],user/9-00060/cimg_num_seg4.png,35,50,1,1000,0,lf[5],lf[6],lf[5],lf[6],1000,0,0,1
->Segment:12100
//-----------
Segment:12015
ANIM.async:lf[4],user/9-00060/cimg_num_seg5.png,35,50,1,1000,0,lf[5],lf[6],lf[5],lf[6],1000,0,0,1
->Segment:12100
//-----------
Segment:12016
ANIM.async:lf[4],user/9-00060/cimg_num_seg6.png,35,50,1,1000,0,lf[5],lf[6],lf[5],lf[6],1000,0,0,1
->Segment:12100
//-----------
Segment:12017
ANIM.async:lf[4],user/9-00060/cimg_num_seg7.png,35,50,1,1000,0,lf[5],lf[6],lf[5],lf[6],1000,0,0,1
->Segment:12100
//-----------
Segment:12018
ANIM.async:lf[4],user/9-00060/cimg_num_seg8.png,35,50,1,1000,0,lf[5],lf[6],lf[5],lf[6],1000,0,0,1
->Segment:12100
//-----------
Segment:12019
ANIM.async:lf[4],user/9-00060/cimg_num_seg9.png,35,50,1,1000,0,lf[5],lf[6],lf[5],lf[6],1000,0,0,1
->Segment:12100
//-----------

Segment:12100

//数字画像の幅 の半分(端数切り上げ)を減らします
//=数字画像を表示しおえた時の右端のX座標になります
lf[5]=flagSub:lf[5],18
//画像Index(1増加)
lf[4]=flagAdd:lf[4],1
//表示した数字の個数をひとつ増やします
lf[9]=flagAdd:lf[9],1

//数字を表示し終えたらおしまい
->return;(lf[7]<=0)
//画像インデックスが029を超えたらおしまい
->return;(lf[4]>=30)

//数字画像を表示する処理:ループ に戻る
->Segment:11100

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です