配列を駆使しカードシャッフルや手札管理
ゲームに必要となるおもな配列を定義する。カードのマーク(ハートやスペードなど)用の配列は作成せず、0~51までの番号でカードのマークと数字を特定できように定義する。カードのデッキ配列(束)は、配る直前にシャッフルするので、ここでは52枚のカードを順番どおりに定義しておく(配列の0番目にカード番号0を定義、以下同様)。その他、ポイント計算に必要となる役の配当配列も定義しておこう。
BETボタン押下時のベット額加算、BET CLEAR関数を作成したら、いよいよカードの配布部分の作成だ。配布直前にデッキ配列(deck_array)をシャッフルする。昇順でキレイに並んだ配列の0番目の値とランダムでピックアップした番号の値を入れ替える。この処理を51番目の値まで52回繰り返せばシャッフル完了だ。シャッフルのアルゴリズムはさまざまあり意外と悩む個所だが、この方法がシンプルで偏りなくシャッフルすることができる。
配布済み枚数(deal_count)を管理しながら、先ほどシャッフル済みのデッキの中から1枚配る専用の関数を用意する。5枚の手札(hand_array)のうち、どのカードであるかの番号(0~4)を引数(position)とし、デッキ配列のdeal_count番目の値を手札配列と画面内のカードに反映させる。配布済み枚数はシャッフル時にリセット(0)することを忘れずに。
HOLD状態を管理するために専用の配列を用意する。CHANGE時にHOLD以外のカードを交換する際の判別に使用するだけなので、値はBOOLEAN(trueまたはfalse)とする。HOLDボタン押下時には、上と同様にカード番号を引数(position)とし、HOLD配列(hold_array)のposition番目の値のtrue/falseを反転する。その値によってHOLDマークの表示または非表示を切り替える。