吉里吉里/KAG:パネル当てを作る 最終回

金環日食を見るために早起きして日食グラス片手に外へ飛び出し
年甲斐もなくはしゃいだため、現在、猛烈な眠気に襲われています。
少し曇っていたのですが、凄く綺麗に見えて幸せでした(´∀`*)

次は6月6日にある金星の太陽面通過ですね。
日食グラスはまだ捨てちゃダメだぞ!

ところでパンダ型のグラスは売ってないんだろうか。
お面みたいなやつで、目の部分がグラスになってるのとか。
壁 |д゚)< ちびっ子や女の子向けにいかがっすかメーカーさん。売れるぜ。

さて、本題に入ります。

「吉里吉里でパネル当てを作る 最終回」です。

今回はラッキータイムとアンラッキータイムを追加します。
思っていた以上にスクリプトの修正箇所が増えてしまいました。
思いつきだけで始めるからこうなるんだ。

ラッキータイム:当たり3枚、ハズレなしの一回勝負。当てたら+300点
アンラッキータイム:ハズレ2枚、当たりなし一回勝負。ハズレを引いたら得点半分



これを追加していきたいと思います。



パネル画像の追加


atari2.png, hazure2.png:大当たり&大ハズレパネル(100x100px)
大当たりパネル 大ハズレパネル



cut_luck.png:ラッキータイムのお知らせカットイン(640x480px)
ラッキータイムお知らせカットイン
余白部分は透明です。



cut_unluck.png:アンラッキータイムのお知らせカットイン(640x480px)
アンラッキータイムのお知らせカットイン
余白部分は透明です。



変数の修正


;パネルの表面画像:添字に応じて読み込む画像が変わる
[ eval exp="tf.panelImg = []" ]
[ eval exp="tf.panelImg = ['panel','atari','hazure','atari2','hazure2']" ]

配列の後ろに atari2,hazure2 を加えただけです。



マクロの追加


; ラッキー&アンラッキータイムカットイン用、レイヤ2使用
[ macro name="luck_unluck" ]
[ freeimage layer=1 ]
[ image storage=%sto layer=2 top=0 left=0 opacity=0 visible=true ]
[ move layer=2 path=(0,0,255) time=150 ]
[ wm ]
[ wait time=500 ]
[ move layer=2 path=(0,0,0) time=150 ]
[ wm ]
[ endmacro ]



スクリプトの修正


; ラッキー&アンラッキー発動調整
; 0~9の数字をランダムで選んで
[ eval exp="tf.patern = intrandom(0,9)" ]
; 0だったらラッキータイム
[ if exp="tf.patern == 0" ]
[ jump target=*luck ]


; 1だったらアンラッキータイム
[ elsif exp="tf.patern == 1" ]
[ jump target=*unluck ]
[ endif ]

tf.patern > 1 のとき、上記のスクリプトは無視されます。



ラッキータイム時のパネル選び


*luck
; 当たり1つめ
[ eval exp="tf.atari =intrandom(0,8)" ]

*luck2
; 当たり2つめ。1つめとかぶってたらやり直し
[ eval exp="tf.atari2 = intrandom(0,8)" ]
[ if exp="tf.atari2 == tf.atari" ]
[ jump target=*luck2 ]
[ endif ]


*luck3
; 当たり3つめ。1、2つ目とかぶってたらやり直し
[ eval exp="tf.atari3 = intrandom(0,8)" ]
[ if exp="tf.atari3 == tf.atari2 || tf.atari3 == tf.atari" ]
[ jump target=*luck3 ]
[ endif ]


; 全部終わったら答えを代入
; ここの数字は配列変数 tf.panelImg の添え字に対応しています

[ eval exp="tf.panel[ tf.atari ] = 3" ]
[ eval exp="tf.panel[ tf.atari2 ] = 3"]
[ eval exp="tf.panel[ tf.atari3 ] = 3"]

[ jump target=*006 ]



アンラッキータイム時のパネル選び


*unluck
[ eval exp="tf.hazure = intrandom(0,8)" ]

*unluck2
[ eval exp="tf.hazure2 = intrandom(0,8)" ]
[ if exp="tf.hazure2 == tf.hazure" ]
[ jump target=*unluck2 ]
[ endif ]

[ eval exp="tf.panel[tf.hazure] = 4" ]
[ eval exp="tf.panel[tf.hazure2] = 4" ]

[ jump target=*006 ]

やってることはラッキータイムと同じ。数が多いときは do~while を使った方がラクかも。



カットインの挿入


; ラッキータイムのときは専用カットイン挿入
[ if exp="tf.patern == 0" ]
[ luck_unluck sto=cut_luck ]


; アンラッキータイムのときは専用カットイン挿入
[ elsif exp="tf.patern == 1" ]
[ luck_unluck sto=cut_unluck ]
[ endif ]


; 通常時でも一応解放しておく
[ freeimage layer=2 ]



パネル判定の修正


*ck2
; 選んだパネルがハズレか大ハズレだったら*gameoverへジャンプ
[ if exp="tf.panel[tf.sel] == 2 || tf.panel[tf.sel] == 4" ]
[ jump target=*gameover ]


; 選んだパネルが当たりか大当たりだったら *gameclear へジャンプ
[ elsif exp="tf.panel[tf.sel] == 1 || tf.panel[tf.sel] == 3" ]
[ jump target=*gameclear ]


; 挑戦回数が3回になっていたら *timeover へジャンプ
; ラッキー&アンラッキータイムは1回勝負なのでそのまま結果表示へ

[ elsif exp="tf.count == 3 || tf.patern <= 1" ]
[ jump target=*timeover ]

[ else ]
(ここは前回と変わらないので省略します)
[ endif ]



得点の加減を修正


▼ハズレを引いた
*gameover
[ er ]
; 大ハズレの時は得点を半分に
[ if exp="tf.patern == 1" ]
[ eval exp="sf.score \= 2" ]

; 通常時は-50
[ else ]
[ eval exp="sf.score -= 50" ]
[ endif ]

; 得点がマイナスにならないように調整
[ if exp="sf.score <= 0" ]
[ eval exp="sf.score = 0" ]
[ endif ]


; 残念でしたカットイン
[ result sto=cut_lose t=-100 ][ s ]

▼当たりを引いた
*gameclear
[ er ]
; ラッキータイム時は+300点
[ if exp="tf.patern == 0" ]
[ eval exp="sf.score += 300" ]
[ else ]

; それ以外は+100点
[ eval exp="sf.score += 100" ]
; 1回目で当てたらさらに+100点。ラッキータイム時は無視
[ if exp="tf.count == 1" ]
[ eval exp="sf.score += 100" ]
[ endif ]
[ endif ]


; カンストチェック
[ if exp="sf.score >= 100000" ]
[ eval exp="sf.score = 100000" ]
[ endif ]


; おめでたいカットイン
[ result sto=cut_win t=100 ]
[ s ]

これにてパネル当てゲーム終了です。お疲れちゃんやで!ヽ(・∀・ )ノ

どんなカンジに動作するのか実際に遊んだ方が早いと思うので
近いうちにサンプルゲームとしてアップします(アップしました→パネル当てゲームサンプル) 
バランス調整やスクリプトの見直しをしたいので少しだけお待ち下さい。

ではでは(´∀`*)ノシ


関連記事

Comments 0

There are no comments yet.

Leave a reply