はじまり

今回はうちに来ているメンバーが極度の花札好きで彼がいつもSTOPに来ては花札をやっているので、そこからの発展として花札をプログラムで再現してみようというところから始まった。

その子はゲーム開発はもちろんパソコンにも慣れていないので、初歩の初歩からサポートする必要がありそうだ。とはいえ、パソコン操作の基本から教えるのは面倒なので、まずは彼のモチベーションを上げるためにもMakeCodeで花札のドット絵を描くところから始めて、パソコン操作などで躓いたらフォローするスタンスでいくことにする。

それはさておき、まずは自分でもゲームを作ってみよう。

まずは要件を確認する

この小さい画面がゲームを考える上で今回のポイントになりそうだ。高さ120px、幅160pxとサイズも解像度も低い。

花札をゲーム化する際に必要な要素としては、山札と各プレイヤーの手札と場札。と考えると画面構成は手札が2列、場札が2列、山札となるので、画面を縦に5分割する必要がある。相手の手札を省略したとしても4分割でカードサイズは縦30px。これだとキツキツな感じ。

そもそもNPC側の処理とかをいきなりプログラムするのは大変そうなので、最初につくるゲームとしては対戦形式じゃないほうがいいかも。(このあと調べたらマルチプレイ対応していたので、P2P対戦ゲームとしてなら良さそう)

ゲームアイデアを考える

スクリーンサイズの小ささを考慮して花札っぽいゲームとしてアイデアを考えてみた。
ルールとしてはソリティアみたいな感じかな。

  1. 場札が6枚ランダムに配置される
  2. プレイヤーカードがランダムに1枚配布される
  3. プレイヤーカードはキー操作で左右に移動できる
  4. プレイヤーカードはボタンを押すと発射される
  5. 発射されたカードと場札の札の種類が同じだと両方のカードが消える
  6. 種類が異なる場合はカードがスタックされていく
  7. 3枚つまり4段になるとゲームオーバーになる。

プログラムの流れを考える

■初期設定
  1. 花札カードを配列に登録する
  2. 配列をシャッフルする
  3. 場札を配列から取り出す(参照ではなく配列から抜く)
  4. 場札を配置した位置(1~6)と合わせて記録
  5. プレイヤーカードを配列から取り出す

■役(ポイント)の判定
  1. カードを射出
  2. 当たったカードの判定
  3. もし種類が同じなら消してスコアを入れる
  4. もし種類が異なるならスタックする
  5. スタックする場合はどの列に何枚あるかをカウント
  6. カードの補填処理を行う

■要検討事項
  • スタックされた二枚目以降の処理をどうする?場札の登録を変更して解決か?
  • 2枚の役だけでいいのか?三光や四光などの導入は?

絵札を描く

絵札の枚数とサイズを画面サイズとゲーム性を考慮して考える。
本物の花札より少し横幅を広くすることでドット絵でもなんとか表現できそうなので、
縦32x横24のサイズに決めた。キャンバスサイズは左下の数字を変更。

Arcadeのドット絵エディタは高機能ではないので、
描く前にあたりをつけておかないとあとでやり直しは大変。
初めは拡大して描いたり縮小したりしながら見栄えを調整するほうがいい。

画面に表示する Spriteブロック

まずは画面にカードを表示しないと始まらないので、表示系をチェックしていく。
Arcadeには”Sprite”というブロックが新たに追加されている。

Spriteブロック


部分的にプログラム カードの配置


部分的にプログラム カードの発射と当たり判定


プログラムを組み合わせてみる


残りのカードを描く


プログラムを調整する


配列のシャッフルを考える


音と演出を加える