空想曲線

吉里吉里2/KAG3でのゲーム制作に使える小ネタ置き場。ゲーム用素材も置いてます。

吉里吉里/KAG:普通のじゃんけんゲームも作っておこうか  

2012-03-31
2017-06-16
cm0
tb0

吉里吉里/KAG ちょいネタ未満 щ(゚д゚щ)
タイトル通り普通のじゃんけんゲームを作りたい方向けの記事です。

変則じゃんけんの作り方はこちらからどうぞ

ちょっとしたオプションとして戦績勝率を表示させるようにしました。
応用すればシナリオの既読率やイベント達成率表示などに使えると思います。

【画面イメージ】画面サイズだけ480x360にしてあります。あとはデフォルト。
普通のじゃんけんゲーム

では、れっつごーε≡≡ヘ( ´Д`)ノ



1.変数設定


対戦数・勝ち数・負け数・引き分け数はシステム変数を使用しています。
二回目以降の起動でリセットしないよう、初回起動時だけ読み込むようにします。

; 初回起動時だけ読み込み
[if exp="sf.初回起動 === void"]
[eval exp="sf.対戦数 = sf.勝ち数 = sf.負け数 = sf.引き分け数 = 0"]
[eval exp="sf.初回起動 = 1"]
[endif]


; 結果表示のときに使用
[eval exp="tf.じゃんけん = []"]
[eval exp="tf.じゃんけん[0] = 'ぐー '"]
[eval exp="tf.じゃんけん[1] = 'ちょき'"]
[eval exp="tf.じゃんけん[2] = 'ぱー '"]



2.戦績の表示


勝率計算の条件式は必ず入れるようにしてください。

*start|スタート
[cm]
; 文字表示はウェイトなし
[delay speed=nowait]
[font size=18]

勝敗:[emb exp="sf.対戦数"][emb exp="sf.勝ち数"]
[emb exp="sf.負け数"][emb exp="sf.引き分け数"]引き分け[r]

; 対戦数が1以上のとき
[if exp="sf.対戦数 >= 1"]
; 勝率は(勝ち数÷対戦数)×100
[eval exp="sf.勝率 = (sf.勝ち数/sf.対戦数)*100"]
; 対戦数が0のときは勝率も0にしておく
[else]
[eval exp="sf.勝率 = 0"]
[endif]

;↑この条件式を入れておかないと初回起動時にエラーが出ます
; 対戦数が0だと解が不定になってしまうためです

; 小数点第一位まで表示(第二位は四捨五入されます)
; sprintf 関数を使用しています

勝率:[emb exp="'%.1f'.sprintf(sf.勝率)"]
[font size=default]
[r][r][r]

このように表示されます。
戦績の表示



3.お互いの出す手を決める


; 相手が出すじゃんけんの種類をランダムで決める
; 0なら「ぐー」、1なら「ちょき」、2なら「ぱー」

[eval exp="tf.相手 = intrandom(0,2)"]

[style align=center]

じゃんけんしようぜ!ъ(゚Д゚)
[font color=default][r][r]

; 好きなのを選んでもらう
[link target=*002 exp="tf.自分 = 0"]男は黙って拳で語れ(ぐー)[endlink][r]
[link target=*002 exp="tf.自分 = 1"]茶目っ気たっぷり目潰し(ちょき)[endlink][r]
[link target=*002 exp="tf.自分 = 2"]どすこい張り手でごわす(ぱー)[endlink]
[defstyle]
[s]



4.いざ、勝負


*002|勝負!
[cm]
[style align=center]
[locate y=70]

じゃ~んけ~んぽんっ![p][r][r]

; 配列変数「tf.じゃんけん」の添字には
; 自分と相手がそれぞれ選んだものが入ります

あなた:[emb exp="tf.じゃんけん[tf.自分]"][r]
あいて:[emb exp="tf.じゃんけん[tf.相手]"]
[p]

■[emb exp="tf.じゃんけん[tf.自分]"]について解説
 たとえば自分が「ぐー」を選んだとします。
 [link target=*002 exp="tf.自分=0"]ですので、この時点で変数tf.自分=0。
 つまりtf.じゃんけん[0]となるので画面には「ぐー」と表示されます。

現在の画面はこんなカンジ。勝負の緊張感ゼロです。
緊張感に欠けるじゃんけん



5.判定


*003|判定
[cm]
; 引き分けのとき
[if exp="tf.自分 == tf.相手"]
[eval exp="tf.結果 = 'ひきわけ!'"]


; 勝ちパターン3種(3つのうち1つでも当てはまったら勝ち)
[elsif exp="(tf.自分 == 0 && tf.相手 == 1) || (tf.自分 == 1 && tf.相手 == 2)
|| (tf.自分 == 2 && tf.相手 == 0)"]
[eval exp="tf.結果 = 'かち!'"]


; それ以外は「負け」
[else]
[eval exp="tf.結果 = 'まけ!'"]
[endif]

結果表示へジャンプ
[jump target=*004]



6.結果表示と戦績の更新


*004|結果
[cm]
[style align=center]
[locate y=120]


; 結果表示
[emb exp="tf.結果"][p]

; 対戦数を+1する
[eval exp="sf.対戦数++"]

; 結果に応じて勝ち数・負け数・引き分け数を+1
[if exp="tf.結果 == 'かち!'"]
[eval exp="sf.勝ち数++"]
[elsif exp="tf.結果 == 'まけ!'"]
[eval exp="sf.負け数++"]
[else]
[eval exp="sf.引き分け数++"]
[endif]


; リプレイの確認へ
[jump target=*replay]

勝ったときはこんな風に表示されます。
勝ったとき



7.リプレイの確認


今回はリプレイの確認にリンクタグを使用していますが
YesNoダイアログを使った方がラクかもしれません。

*replay|リプレイの確認
[cm]
[style align=center]
[locate y=70]

もっかいやる?[r][r]
[link target=*start]や る[endlink][r]
[link target=*end]やめる[endlink]
[defstyle]
[s]

確認画面はこんなカンジ。
リプレイの確認



8.ゲームの終了処理


*end|終わる
[cm]
; 確認なしでウィンドウを閉じます
[eval exp="kag.closeByScript(%[ask:false])"]

では、今回はこれにて終了(´∀`*)ノシ

関連記事

コメント

コメントの投稿

Secret

トラックバック

トラックバックURL
→http://kopacurve.blog33.fc2.com/tb.php/210-b81da8b7
この記事にトラックバックする(FC2ブログユーザー)

Author

Recent

Category

Link

Comment

Mailform

Twitter