空想曲線

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

吉里吉里/KAG:万能ダイスを作ってみよう 中編  

2016-05-24
2017-06-14
cm0
tb0

(_´Д`)ノ< つづきよー

 リンク:万能ダイスを作ってみよう 前編

前回はダイスの「面数」を自由に設定できるようにしたので
今回はダイスの「個数」を自由に設定できるようにしていきます。

まずは必要な変数を宣言しておきましょう。


[ iscript ]

var dice = new Array(); // ダイスの出目を格納する配列変数
var diceNum =0; // ダイスの個数

[ endscript ]


ダイスの個数が1個のときは普通の変数で良かったのですが
今回は個数が可変になるため、出目の管理を配列で行うことにします。
では、前回作った diceRoll 関数を修正していきましょう。


/* ダイスロール
-------------------------------------------------------------*/

function diceRoll(num,min,max){
 diceNum = num;
// 追加:ダイスの個数に引数 num の値を代入
  if(min > max){min <-> max;} // min が max より大きいときは値を入れ替える
   // 指定したダイスの個数分ぶん回す
   for(var i=0; i < num; i++){
    // 出目は配列変数diceの添字0から順に格納
    dice[i] = int(Math.floor(Math.random()*((max-min)+1))+min);
    }
  return;
 }


※コピペして使うときはスクリプト内の全角スペースをすべて削除してください


おなじみの for 文を放り込んで修正完了です。
それではKAGに戻ってスクリプトを書いていきます。


*test
; ダイスロール関数を実行(6面ダイスを6個ふる)
[ eval exp="diceRoll(6,1,6)" ]

; 結果表示
1回目:[ emb exp="dice[0]" ][ r ]
2回目:[ emb exp="dice[1]" ][ r ]
3回目:[ emb exp="dice[2]" ][ r ]
4回目:[ emb exp="dice[3]" ][ r ]
5回目:[ emb exp="dice[4]" ][ r ]
6回目:[ emb exp="dice[5]" ]


この書き方だとダイスの個数が変わったときに対応できないので修正します。
ついでに「◯回目:」も自動的にカウントするようにしましょう。


*count
; tf.countは「◯回目の結果」のカウンター
; tf.numはダイスの個数のカウンター

[ eval exp="tf.count = 1, tf.num = 0" ]

*loop
; 結果表示
[ emb exp="@'${tf.count}回目:${dice[tf.num]}'" ][ r ]
; カウンターをそれぞれ+1
[ eval exp="tf.count++, tf.num++" ]

; ダイスの個数カウンターの値がダイスの個数と一緒になるまでループ
[ if exp="tf.num < diceNum" ]
[ jump target=*loop ]
[ else ]
[ jump target=*loopend ]
[ endif ]

*loopend
; ダイスロール後の処理


ダイスの個数を増やしすぎると結果を画面に表示しきれなくなるので
レイアウトは最大個数を基準にして組みましょう。

あと、今回は取り上げませんがテキストではなくサイコロの画像で表示したいときは
あらかじめ出目に対応した画像を配列変数に入れて置いて呼び出すのがカンタンだと思います。



diceImg = [ ,dice1.png,dice2,png,... ];
↑こういうのを作っといて……

[ image storage="diceImg[dice[0]]" layer=0 visible=true ]
↑こんなカンジで呼び出す。座標指定とか考えるとちょっと面倒だけども(´ε`;)

といったところで、今回は終了です。
次回は edit タグを使ってダイスの個数と面数を設定できるようにします。


関連記事

コメント

コメントの投稿

Secret

トラックバック

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

Author

Recent

Category

Link

Comment

Mailform

Twitter