トランプゲームを作ってみた ~大富豪 ~
M5Stack BASIC / CORE2でトランプゲーム(大富豪)を作ってみました。トランプ表示ライブラリ ~ SHOWCARD ~

カード1枚のサイズは24×44ドット
13列×5行表示できるサイズですので、七並べにも使用できるでしょう。
スートとジョーカーはペイントソフトでデザインしてImage2cpp で配列データに変換しています。

ZIP形式でダウンロードして
ArduinoIDEの「スケッチ]-[ライブラリをインクルード]から[.ZIP形式のライブラリをインクルード...]から取り込み
サンプルスケッチに「SHOWCARD」が追加されます。
大富豪のプログラム
大富豪では最弱のカードが3,最強のカードが2(ジョーカーなしのルールなので)で、トランプの数字と強さにズレがあります。普通にやると数字の今日弱の判定が難しので、プログラム内部では1~13の数字で判定し、表示する際に内部値が1なら3のカードを、内部値が13なら2のカードを表示します。
こうするとプログラムが単純になります。

カードの内部表現は1Byteの整数で上位4Bitでスートを、下位4Biteで数値を表現します。
F0hとANDを取れはスートが、0FhとANDを取れば数値が得られます。

ゲームでは乱数を使用しますが、ArduinoIのrandum()関数は疑似乱数なので、毎回違うseed値を設定しないと毎回同じ乱数値になります。
毎回違うseed値を設定するために起動から開始までにボタンが押される時間を利用します。
人間の操作を介在することでseed値に変化を持たせます。

扉絵は画像生成AI( AMUSE )で生成しました。
このJPEGファイルをテキスト化してスケッチに埋め込みます。
M5Stack BASIC では展開時にメモリー不足に陥りましたので、320×80の画像に3分割しています。
画像を3分割してテキスト化する作業はChatGPTにやってもらいました。
画像を320x80のサイズで3つの画像に分割して、それぞれ独立したJPEG画像にしたのちに、それぞれをC言語の16進数表記の配列に変換してください。
疑似乱数ではseed値の変更が必要ですが、M5Stack BASIC / CORE2などのESP32マイコンでは無線アンテナのノイズを利用したハードウエア乱数が使用できます。
esp_randum( ) 関数を使用すればseed値を変更しなくても毎回異なった値になります。
スケッチ
一応 M5Stack BASIC / CORE2で動作するように記述していますが CORE2での実行は確認していません。
