吉里吉里でパネル当てを作る 第2回
本題に入る前に、コンプガチャ問題についてちょっとだけ。
・青少年の課金限度額設定
・通常ガチャの確率表示
これも何とかして欲しいところです。
あまり危ない橋を渡ってると風営法適用されちゃうぞ。
さて、本題に入ります(・ω・)ノ
「吉里吉里でパネル当てを作る 第2回」
今回からスクリプトをモリモリ打っていきます。
途中で区切ると分からなくなるので、最後まで突っ走ることにしました。
では、れっつごーε≡≡ヘ( ´Д`)ノ
・青少年の課金限度額設定
・通常ガチャの確率表示
これも何とかして欲しいところです。
あまり危ない橋を渡ってると風営法適用されちゃうぞ。
さて、本題に入ります(・ω・)ノ
「吉里吉里でパネル当てを作る 第2回」
今回からスクリプトをモリモリ打っていきます。
途中で区切ると分からなくなるので、最後まで突っ走ることにしました。
では、れっつごーε≡≡ヘ( ´Д`)ノ
レイヤ枚数の設定
メッセージレイヤの設定
マクロの設定
変数設定&リセット(リプレイ時の戻り先はココ)
あたりとハズレをランダムで選ぶ
画像のリセット&読み込み
何をしてるかというと、こういうことをしています↓

グラフィカルボタンの設置
プレイヤーがパネルを選んだ
パネルの中身チェック
結果を表示する
リプレイの確認
パネル画像の更新サブルーチン
★上記サブルーチンの補足説明★
最初に読み込んだ300x300の透明画像(empty300.png)に
atari.png、hazure.png、panel.png画像を追加読み込みしてます。
どのパネルにどの画像を読み込むかはstorageの中身で判定します。
【storageの中身はどうなってるの?】
せっかくなので監視式で確認してみましょう。

ちゃんと読み込まれてるようです。
今更ですが、画像ファイルの拡張子は記述しなくても
吉里吉里側で勝手に探してきてくれるので必要ありません。
【opacityの中身はどうなってるの?】
ということで、パネル当てゲーム終了です。
お付き合いいただきありがとうございました!
……と、見せかけてщ(゚д゚щ)
このパネル当て、このままだとこれっぽっちも面白くありません。
当たった時の旨みもなければ、外れた時のペナルティもないので当然です。
次回は、この「ゲームっぽい何か」をゲームらしくするための
おまけ要素を追加していこうと思います。
ただし、追加したところで面白くなるかどうかは保証しかねます。
それでは、また次回(´∀`*)ノシ
*001
[cm]
;使用するレイヤの枚数を指定します。
[laycount messages=2 layers=3]
メッセージレイヤの設定
*002
;メッセージレイヤ0はグラフィカルボタン用を配置する用に使います
;サイズは画面サイズと同じ、各マージンは0、不透明度は0、可視
[position layer=message0 top=0 left=0 width=640 height=480 marginb=0 marginl=0 margint=0 marginr=0 opacity=0 visible=true]
マクロの設定
*macro
;◆惜しい時に表示するしろねこ画像、レイヤ1使用
[macro name="mes"]
;しろねこのカットインをレイヤ1に読み込む
[image storage=cut_near layer=1 top=0 left=0 opacity=255 visible=true]
;クリックしたら*main(パネル選択のラベル)へジャンプ
[click target=*main]
[endmacro]
;勝敗が決まったときのカットイン用、レイヤ2使用
[macro name="result"]
;レイヤ1を解放
[freeimage layer=1]
;カットイン画像を不透明度0で読み込み
[image storage=%sto layer=2 top=%t left=0 opacity=0 visible=true]
;動かしながら不透明度を255に
[move layer=2 path=(0,0,255) time=100]
[wm]
;クリックすると*re(リプレイ確認のラベル)へジャンプ
[click target=*re]
[endmacro]
変数設定&リセット(リプレイ時の戻り先はココ)
*003
;パネルの状態:0は何もなし、1が当たり、2がハズレ
[eval exp="tf.panel = []"]
[eval exp="tf.panel = [0,0,0,0,0,0,0,0,0]"]
;パネルの表面画像:添字に応じて読み込む画像が変わる
[eval exp="tf.panelImg = []"]
[eval exp="tf.panelImg = ['panel','atari','hazure']"]
;パネルが開いているかどうかのチェック用:0なら開いてない、1なら開いてる
[eval exp="tf.panelopen = []"]
[eval exp="tf.panelopen = [0,0,0,0,0,0,0,0,0]"]
;何回目の挑戦かカウントする用。3になったらアウト
[eval exp="tf.count = 0"]
;プレイヤーが選んだボタンがどれかを調べる用
[eval exp="tf.sel = 0"]
あたりとハズレをランダムで選ぶ
*004
;あたりパネルの番号(添字)をランダムで選びます
;添字は0スタートなのでパネルの番号と一つずつズレています
; tf.atari=0 なら、あたりパネルは1番となります
[eval exp="tf.atari = intrandom(0,8)"]
*005
;ハズレの番号(添字)をランダムで選びます
[eval exp="tf.hazure = intrandom(0,8)"]
;あたりとハズレの番号が同じだったら、もう一度ハズレを選びます
[if exp="tf.hazure == tf.atari"]
[jump target=*005]
[else]
;重複していなければ、配列変数tf.panel[i]にあたりとハズレの数値を代入します
[eval exp="tf.panel[tf.atari] = 1"]
[eval exp="tf.panel[tf.hazure] = 2"]
[jump target=*006]
[endif]
画像のリセット&読み込み
*006
[cm]
;前景レイヤを全て解放します
[freeimage layer=0]
[freeimage layer=1]
[freeimage layer=2]
;ベースレイヤに背景画像を読み込みます
[image storage=panelbase layer=base]
;前景レイヤ0に300x300の透明画像を読み込みます
;透明画像なのでvisible=trueにしてても見えません
[image storage=empty300 layer=0 top=90 left=180 visible=true]
;パネルの画面更新ルーチンを呼び出します(詳しくはコール先で)
[call target=*sub]
何をしてるかというと、こういうことをしています↓

グラフィカルボタンの設置
*main
;1番パネル用のボタンの表示位置
[locate x=180 y=90]
;この位置にあるパネルが開いていなければ
[if exp="tf.panelopen[0] == 0"]
;グラフィカルボタンを設置します
;クリックすると「パネルを選んだ&パネルを開いた」フラグが立ちます
;ジャンプ先は*ck(選んだパネルの中身チェックラベル)です
[button graphic=btn_waku exp="tf.panelopen[0]=1,tf.sel=0" target=*ck]
[endif]
;他のボタンも同じように配置していきます
[locate x=280 y=90]
[if exp="tf.panelopen[1] == 0"][button graphic=btn_waku exp="tf.panelopen[1]=1,tf.sel=1" target=*ck][endif]
[locate x=380 y=90]
[if exp="tf.panelopen[2] == 0"][button graphic=btn_waku exp="tf.panelopen[2]=1,tf.sel=2" target=*ck][endif]
[locate x=180 y=190]
[if exp="tf.panelopen[3] == 0"][button graphic=btn_waku exp="tf.panelopen[3]=1,tf.sel=3" target=*ck][endif]
[locate x=280 y=190]
[if exp="tf.panelopen[4] == 0"][button graphic=btn_waku exp="tf.panelopen[4]=1,tf.sel=4" target=*ck][endif]
[locate x=380 y=190]
[if exp="tf.panelopen[5] == 0"][button graphic=btn_waku exp="tf.panelopen[5]=1,tf.sel=5" target=*ck][endif]
[locate x=180 y=290]
[if exp="tf.panelopen[6] == 0"][button graphic=btn_waku exp="tf.panelopen[6]=1,tf.sel=6" target=*ck][endif]
[locate x=280 y=290]
[if exp="tf.panelopen[7] == 0"][button graphic=btn_waku exp="tf.panelopen[7]=1,tf.sel=7" target=*ck][endif]
[locate x=380 y=290]
[if exp="tf.panelopen[8] == 0"][button graphic=btn_waku exp="tf.panelopen[8]=1,tf.sel=8" target=*ck][endif]
;プレイヤーがボタンを押すまでぼーっと待ちます( ゚д゚)
[s]
プレイヤーがパネルを選んだ
*ck
[cm]
;プレイヤーが選んだパネルを開きます
;ここでは画像更新のサブルーチンを利用します
[call target=*sub]
;挑戦回数を+1します
[eval exp="tf.count++"]
;しろねこカットインを消しておきます
[freeimage layer=1]
パネルの中身チェック
*ck2
;選んだパネルがハズレだったら*gameoverへジャンプ
[if exp="tf.panel[tf.sel] == 2"]
[jump target=*gameover]
;選んだパネルが当たりだったら*gameclearへジャンプ
[elsif exp="tf.panel[tf.sel] == 1"]
[jump target=*gameclear]
;挑戦回数が3回になっていたら*timeoverへジャンプ
[elsif exp="tf.count == 3"]
[jump target=*timeover]
[else]
;上記のいずれにも当てはまらない場合は
;選んだパネルの上下左右に当たりがあるかどうかをチェックします
;1番を選んだ&2か4のどちらかに当たりがあれば、しろねこを表示します
[if exp="tf.sel==0 && (tf.panel[1]==1 || tf.panel[3] == 1)"][mes]
;2番以降も同じように調べていきます。頭の悪い書き方に悶絶すればいい。
[elsif exp="tf.sel==1 && (tf.panel[0]==1 || tf.panel[2]==1 || tf.panel[4]==1)"][mes]
[elsif exp="tf.sel==2 && (tf.panel[1]==1 || tf.panel[5]==1)"][mes]
[elsif exp="tf.sel==3 && (tf.panel[0]==1 || tf.panel[4]==1 || tf.panel[6]==1)"][mes]
[elsif exp="tf.sel==4 && (tf.panel[1]==1 || tf.panel[3]==1 || tf.panel[5]==1 || tf.panel[7]==1)"][mes]
[elsif exp="tf.sel==5 && (tf.panel[2]==1 || tf.panel[4]==1 || tf.panel[8]==1)"][mes]
[elsif exp="tf.sel==6 && (tf.panel[3]==1 || tf.panel[7]==1)"][mes]
[elsif exp="tf.sel==7 && (tf.panel[4]==1 || tf.panel[6]==1 || tf.panel[8]==1)"][mes]
[elsif exp="tf.sel==8 && (tf.panel[5]==1 || tf.panel[7]==1)"][mes]
[else]
[endif]
;全部終わったら*mainに戻ります
[jump target=*main]
;閉じるのを忘れない
[endif]
結果を表示する
;ハズレを引いた
*gameover
[cm]
[result sto=cut_lose t=-100][s]
;あたりを引いた
*gameclear
[cm]
[result sto=cut_win t=100][s]
;挑戦回数が3回になった
*timeover
[cm]
[result sto=cut_timeover t=-100][s]
リプレイの確認
*re
[cm]
;YesNoダイアログを表示
[eval exp="tf.replay = askYesNo('もう一回やる?')"]
;「はい」を選んだら*003へジャンプ
[if exp="tf.replay == 1"]
[jump target=*003]
[else]
;「いいえ」を選んだらウィンドウを閉じます(終了確認なし)
[eval exp="kag.closeByScript(%[ask:false])"]
[endif]
[s]
パネル画像の更新サブルーチン
*sub
[pimage dx= 0 dy= 0 storage="&tf.panelImg[tf.panel[0]]" sh=100 sw=100 sx=0 sy=0 layer=0 opacity="&tf.panelopen[0]==1 ? 255 : 0"]
[pimage dx=100 dy= 0 storage="&tf.panelImg[tf.panel[1]]" sh=100 sw=100 sx=0 sy=0 layer=0 opacity="&tf.panelopen[1]==1 ? 255 : 0"]
[pimage dx=200 dy= 0 storage="&tf.panelImg[tf.panel[2]]" sh=100 sw=100 sx=0 sy=0 layer=0 opacity="&tf.panelopen[2]==1 ? 255 : 0"]
[pimage dx= 0 dy=100 storage="&tf.panelImg[tf.panel[3]]" sh=100 sw=100 sx=0 sy=0 layer=0 opacity="&tf.panelopen[3]==1 ? 255 : 0"]
[pimage dx=100 dy=100 storage="&tf.panelImg[tf.panel[4]]" sh=100 sw=100 sx=0 sy=0 layer=0 opacity="&tf.panelopen[4]==1 ? 255 : 0"]
[pimage dx=200 dy=100 storage="&tf.panelImg[tf.panel[5]]" sh=100 sw=100 sx=0 sy=0 layer=0 opacity="&tf.panelopen[5]==1 ? 255 : 0"]
[pimage dx= 0 dy=200 storage="&tf.panelImg[tf.panel[6]]" sh=100 sw=100 sx=0 sy=0 layer=0 opacity="&tf.panelopen[6]==1 ? 255 : 0"]
[pimage dx=100 dy=200 storage="&tf.panelImg[tf.panel[7]]" sh=100 sw=100 sx=0 sy=0 layer=0 opacity="&tf.panelopen[7]==1 ? 255 : 0"]
[pimage dx=200 dy=200 storage="&tf.panelImg[tf.panel[8]]" sh=100 sw=100 sx=0 sy=0 layer=0 opacity="&tf.panelopen[8]==1 ? 255 : 0"]
[return]
★上記サブルーチンの補足説明★
最初に読み込んだ300x300の透明画像(empty300.png)に
atari.png、hazure.png、panel.png画像を追加読み込みしてます。
どのパネルにどの画像を読み込むかはstorageの中身で判定します。
【storageの中身はどうなってるの?】
例えば、4番パネルにあたりが入っているとします。
このとき、tf.panel[3](4番のパネル)に代入されている数値は「1」です。
また、パネル画像のファイル名は、以下の配列に収められています。
tf.panelImg[0]='panel'
tf.panelImg[1]='atari'
tf.panelImg[2]='hazure'
ですので、4番があたり(tf.panel[3]=1)のとき、storage="&tf.panelImg[tf.panel[3]]"は
tf.panelImg[1]='atari' ということになります。
せっかくなので監視式で確認してみましょう。

ちゃんと読み込まれてるようです。
今更ですが、画像ファイルの拡張子は記述しなくても
吉里吉里側で勝手に探してきてくれるので必要ありません。
【opacityの中身はどうなってるの?】
条件演算子を利用して、パネルの可視・不可視をopacityの値で調整しています
ここでは、「tf.panelopen[i]==1」(パネルが開いているかどうか)という条件に対して
開いている(真)なら、opacity=255(可視)
開いてない(偽)なら、opacity=0(不可視)
として、パネルの開閉状態をなんやかんやしています。
なんやかんやって便利な言葉ですね。
ということで、パネル当てゲーム終了です。
お付き合いいただきありがとうございました!
……と、見せかけてщ(゚д゚щ)
このパネル当て、このままだとこれっぽっちも面白くありません。
当たった時の旨みもなければ、外れた時のペナルティもないので当然です。
次回は、この「ゲームっぽい何か」をゲームらしくするための
おまけ要素を追加していこうと思います。
ただし、追加したところで面白くなるかどうかは保証しかねます。
それでは、また次回(´∀`*)ノシ
| パネル当ての作り方
| 21:39
| comments:0 | trackbacks(-) | TOP↑








