Unityでポーカーを作る その1 カードをランダムに生成

初めまして。東京コミュニケーションアート専門学校 ゲームプログラマー専攻からのインターン生の小玉です。
インターン中に何かひとつ成果物を上げるということなので、ポーカーゲームを作ることにしました。
ポーカーのルールとしては、5枚カードを配られ、1回だけチェンジが可能でなるべく強い役を揃えるという内容です。
余裕があれば、掛け金やダブルアップゲームのシステムも作れればと思っています。
ゲームの流れとしては、

山札作成
シャッフル
(掛け金を決める)
5枚配る
選んだ数交換
役判定
結果の表示、リトライなどの選択(、掛け金の払い戻し)
ダブルアップゲーム(ハイアンドロウ)

ひとまずはこんな感じです。
ジョーカーは特殊なので無しで考えていますが、最後まで作り終えたら実装しようと思っています。

早速作っていきます。
まずはUnity上でオブジェクトを作ります。
CardFieldを作成し、Horizontal LayoutGroupを設定。
下にCard1~5を作成し、とりあえず裏向きのカード画像を設定。

等間隔に5枚配置できました。

次はトランプのデータを作っていきましょう。

トランプにはマークと数字の2つの情報を持っているので、クラスを作りました。トランプIDのようなもので逐一計算する方法もあるみたいですが、クラスを作ったほうが見やすく作りやすくなると考えるので使用しない方向で行きます。
そして、チェンジの時に戻したカードは山札に戻したくないので、配列のような使い方ができ、動的に管理できるListを使って山札を管理することにしました。
そして、何か効率の良いシャッフルのプログラムを探していたら、配列をシャッフルするFisher Yatesアルゴリズムというものを見つけました。高速に動くようです。
画像の表示には、マークと数字のデータから画像名と一致させ、Recources.Loadで表示させました。
上から5枚引くため、トップのカードを1枚引く関数を作りました
完成したものがこちらです。

ランダムに5枚表示されました。

良い感じでした。次もこの調子で行きましょう。

興味を持たれた方はお気軽にお問い合わせください。

インターンシップへの申し込み・お問い合わせ先

インターンシップへの申し込み・お問い合わせ先
メールでのお問い合わせは、下記フォームに入力して送信してください。
ご氏名 (例)山田 太郎
メールアドレス 半角英数字:ご入力間違いのないようにご注意ください
メールアドレス(確認用) 半角英数字:ご入力間違いのないようにご注意ください
電話番号 (例)0354339211 ※ハイフン抜きで入力してください
題名
お問合わせ内容

アーカイブ

カテゴリー