【Android】Kotlinでポーカーゲームを作ってみる【Part1】

ニートになってしばらく経ち、いよいよ家族の当たりが辛くなってきたライラプスです。

今回は、Kotlinへのチャレンジ長い間触ってこなかったAndroid開発への復帰という2つの目的で、Kotlinでポーカーアプリを作ってみることにしました。

さあ作ってみるぞ!

いざポーカーゲームを作ってみるぞ!と覚悟を決めたものの、最初はActivityの構成やライフサイクルの概念など、基本的な部分そのものが抜け落ちていました。

ただでさえJavaでも欠陥アプリしか作ってこなかったのに大丈夫だろうか?そんな悩みを抱えながらも構成を考えながら組み立てていきます。

処理の流れとしては、MainActivityからGameActivityを起動し、GameActivity内でゲームを展開していく構成とします。

まずはMainActivityから。このアクティビティからゲーム画面のアクティビティに飛びます。なお、NEW GAMEとLOAD GAMEを分けているのは、後に扱う所持金を保存しておくためです。

ちょっと乱雑ですが、ゲームを起動できれば問題ないと考えこのように作成しました。

今はまだどちらのボタンを押しても同じアクティビティの同じゲームに遷移しますが、所持金機能を追加してから変化していく予定です。

ゲーム部分の基盤

続いてゲームパート。

ゲームの流れはこのようなものを想定しています。

GameActivity開始←MainActivityから開始時所持金を受け取る
 ↓
タイトル画面
 ↓
開始ボタンを押す
 ↓
 ↓掛け金選択
 ↓
掛け金決定でゲーム開始
 ↓
 ↓シャッフル
 ↓手札を5枚配布
 ↓
交換手札選択
 ↓
 ↓カードを交換するかを選択
 ↓
交換ボタンを押す
 ↓
 ↓先ほど選択したカードを交換
 ↓交換した場合新しいカードを入手
 ↓
役判定
 ↓
 ↓役の決定
 ↓
終了
 ↓
 ↓配当に応じてお金を返却
 ↓もし所持金が0になってしまったらゲームオーバー
 ↓
もう一度プレイするか選択→タイトルに戻るor終了

カード交換について

初期状態ではカードを交換しない設定となっていますが、それぞれのカードをタップして交換するしないを切り替えます。カード交換フラグの成立の有無を見て交換ボタンの仕様も切り替えます。

役判定

今回の役判定は、所謂「ジャックスオアベター」のものを拝借しました。(ワンペアの場合11以上で勝利、それ以下は敗北となる)

判定手順についてはソース内に解説を記載したのであわせて確認していただけると幸いです。

進捗

ここまでの段階ではゲームの基盤処理と役判定まで完成しましたが、所持金のベットと配当の実装、およびUI全般の調整がまだできておりません。

現状では完成も年明け以降となる見込みですが、役判定までできあがったものをTwitterに投稿してありますので参考程度にお願いいたします。

完成箇所

  • ゲーム基板処理
  • 各状態遷移
  • 役判定

未完成箇所

  • ベット&配当
  • 所持金保持
  • UIの全体調整

ここまでやってみた感想

現在までやってみて、改めてAndroid開発の楽しさと難しさに直面することができました。

今回はAndroidアプリの開発に復帰したい思いとKotlinの初学ということであえてAndroidネイティブのKotlinで開発に取り組みましたが、はっきりと断言します。この手のゲームはAndroidのネイティブではなくUnityなどのゲームエンジンやハイブリッドアプリなどで開発すべきです。

特にAndroidは端末サイズが機種ごとにまちまちなため、画面サイズの調整だけでも一苦労必要になってきます。

また、Android開発においてはライフサイクルを意識した設計開発が最重要であるため、「ゲーム開発でAndroidを学ぶ」という考えは正直失敗だったとまで思っています。

しかし、処理のアルゴリズムや状態・座標の管理、オブジェクト指向の基礎など、プログラミングに必要な知識の基礎を改めて学び直すきっかけにもなったので、そこは後悔していません。なんだかんだでKotlinの文法もある程度わかってきました。

もしまたKotlinでAndroidをやっていくのであれば、ネイティブアプリの強みを活かせる分野の作品を作ってみようと思います。

ソースコードを見ていただければわかりますが役判定アルゴリズムに関してはおそらく最適解ではないので、有識者の方のご意見をいただきたいと思っています。現在お互いにプログラミングで高め合える方を大募集しています!

現状までの経過をGitHubにアップいたしましたので、あわせてご確認していただけると幸いです。

年明け頃に完成品としてPart2の記事をアップしますので、そのときもまたよろしくお願いします。

GitHub

TrumpGame

お借りしたもの

トランプ画像素材(無料素材倶楽部様)
5000兆円ジェネレーター
いらすとや

参考にしたサイト

Kotlinの練習にオセロ作って遊んだ(みんからきりまで様)
30分で覚えるKotlin文法