(7)point2 配列を駆使しカードシャッフルや手札管理 | デザインってオモシロイ -MdN Design Interactive-

(7)point2 配列を駆使しカードシャッフルや手札管理

2024.4.26 FRI

【サイトリニューアル!】新サイトはこちらMdNについて

→point2

配列を駆使しカードシャッフルや手札管理




1
ゲームに必要となるおもな配列を定義する。カードのマーク(ハートやスペードなど)用の配列は作成せず、0~51までの番号でカードのマークと数字を特定できように定義する。カードのデッキ配列(束)は、配る直前にシャッフルするので、ここでは52枚のカードを順番どおりに定義しておく(配列の0番目にカード番号0を定義、以下同様)。その他、ポイント計算に必要となる役の配当配列も定義しておこう。




2
BETボタン押下時のベット額加算、BET CLEAR関数を作成したら、いよいよカードの配布部分の作成だ。配布直前にデッキ配列(deck_array)をシャッフルする。昇順でキレイに並んだ配列の0番目の値とランダムでピックアップした番号の値を入れ替える。この処理を51番目の値まで52回繰り返せばシャッフル完了だ。シャッフルのアルゴリズムはさまざまあり意外と悩む個所だが、この方法がシンプルで偏りなくシャッフルすることができる。




3
配布済み枚数(deal_count)を管理しながら、先ほどシャッフル済みのデッキの中から1枚配る専用の関数を用意する。5枚の手札(hand_array)のうち、どのカードであるかの番号(0~4)を引数(position)とし、デッキ配列のdeal_count番目の値を手札配列と画面内のカードに反映させる。配布済み枚数はシャッフル時にリセット(0)することを忘れずに。




4
HOLD状態を管理するために専用の配列を用意する。CHANGE時にHOLD以外のカードを交換する際の判別に使用するだけなので、値はBOOLEAN(trueまたはfalse)とする。HOLDボタン押下時には、上と同様にカード番号を引数(position)とし、HOLD配列(hold_array)のposition番目の値のtrue/falseを反転する。その値によってHOLDマークの表示または非表示を切り替える。

twitter facebook このエントリーをはてなブックマークに追加 RSS
【サイトリニューアル!】新サイトはこちらMdNについて

この連載のすべての記事

アクセスランキング

8.30-9.5

MdN BOOKS|デザインの本

Pick upコンテンツ

現在