“RUN” それは魔法の言葉

私とコンピュータの思い出を、だらだらと綴ります。最近はHSP3でのゲーム作り日記です

289.LCD風ゲームを作ろう 憂邪鮫(うぃじゃざめ) その3

ことはちゃんの方がサクサク進むのと、久々のLCDゲーム風以外のアプリなので、作業に割く時間の割合が多いなw

でも、コンテストに出すにあたり、事前にGooglePlayストアで公開しておきたいので、こちらも進めていく。

移動操作をつかさどるスティック操作部分を作って行く。
今回はシーン1、シーン2と、まったく違う画面になるため、今までのアプリのように画面のタッチ処理とプレイヤーの移動処理や判定を一緒に行ってしまうと、2倍のソースを作る必要がある。

それは流石にあとで見づらいので、タッチの検出をしたらフラグを立てるまでにして、あとはシーンごとの判定、処理ルーチンに飛ばすように分割した。

ここまではよかったのだが、実際にスティックのように常にタッチしたままスライドして動かす、でも同一方向におしっぱなし(タッチ位置をキープ)にしても、連続移動しないようにしなくてはならない。
今までのタッチ判定は指を離したことを検知して、離してなければ連続移動しないようにしていた。

と、小難しく書いているけど、ステート管理するのには変わりない。タッチ位置をキープしているのか、いったん離れたのかを保持する変数を用意して、判定していく。

スティックは倒したままの画像を表示したいので、方向判定は必要。あとはプレイヤーの移動量を判定しないように、前と同じ方向かどうかをフラグで追加判定する。

こうして調整して出来たスティックの動きがこちら。

マウスで動かしているので、ちょっとぎこちない。スマホのタッチパネルで試せていないので、指を動かす範囲などの調整が必要になるだろうな。

タッチ判定を分離出来たので、今まではタッチした判定内に書いていたプレイヤーの移動処理や、アタックボタンを押したときの処理をシーン別にサブルーチンにして書いていった。

続く。

288.HSPでゲームを作ろう:かんじたんてい ことはちゃん その2

まずは問題の表示から。
データベースのテーブルは、仮でこんな感じにした
mondai_table

ID kanji yomi onkun gakunen
1 いち 1
2 一つ ひとつ 1
○○ ×× ▶▶ n

すっかりSqleleの文法を忘れてるww
「たまねとりっぷ!」のソースを見て思い出す。

データベースをオープンして、問題数だけレコードをSELECTする。
問題数はあとで可変できるようにするのと、学年を選べるようにする予定なので、条件に加える。
肝になるのが、ORDER BY RANDOM()。このSQLを発行すると、ランダムに条件に合ったレコードを取得してくれる。
LIMIT句と合わせて使うと10問だったらこんな感じ。

SELECT * FROM mondai_table WHERE gakunen=1 ORDER BY RANDOM() LIMIT 10;

SQLを実行したら、結果を配列変数に格納していく。

;問題用の配列を定義
dim d_gakunen,10
sdim d_kanji,10
sdim d_yomi,10
sdim d_onkun,10

repeat 10
  d_gakunen(cnt)=sql_i("gakunen")
  d_kanji(cnt)=sql_v("kanji")
  d_yomi(cnt)=sql_v("yomi")
  d_onkun(cnt)=sql_v("onkun")
  sql_next
loop

ブログ用に件数をべた書きしているが、元ソースでは定数で書いている。

問題の元は取得できたが、実際に表示するのは、

  • 漢字
  • 読みの枠
  • 答えの選択肢(ひらがなチップ)

選択肢は、1文字ずつひらがなのチップを表示して、マウスでクリックして選択していくようにしたい。
そのために、正解のチップ+誤答用のチップを用意しなくてはならない。

ひらがなチップ

ゲームの形にすることを優先したので、チャッピー君にHSP3で、ひらがな何文字かを渡したら、残りのひらがなを足して、かつ並び順をランダムにした10文字を返すユーザー関数を書いてもらった。
以前に比べて、ほぼエラーがない関数を書いてくれた。チャッピー3.5ぐらいの時はHSP3で書いてっていっても適当な命令で書いてたけど、最近のはほぼ学習出来てるね。ついでに適当な文字は、他の文字と被らないようにしてくれなどの注文を付けて、関数が完成。

例えば問題が、
入る(はいる)だと、関数を通して「いはふうぶびえゆごる」というような文字列を出してくれる

チップ表示するとこんな感じになる。

続く。

287.HSPでゲームを作ろう:かんじたんてい ことはちゃん その1

HSPプログラムコンテストに向けて、「憂邪鮫」を作成中の出来事。
妻から、子供が漢字の読み方を覚えられるような、学習アプリを探しているけど無いわ。なんかある?と相談を持ち掛けられた。
んなことあるの?と思い、自分でも探してみたが、読みだけってアプリは無い。
じゃ、自分で作るか。と安請け合いしたwwのが始まり。

作ると決めたら、ここも生成AIの出番。素材作成はお任せして、プログラム部分を自分で作るという分担で。
早速、ゲームタイトル案を考えてもらい、それらを加味して「かんじたんてい ことはちゃん」というタイトルに決定。
探偵なのは、今シーズンのPキュアのテーマということで、察してw
「ことは」は、漢字の「言葉」の読み替え。

で、ゲームタイトル画面を作って!と頼んだら、キャラ付きで描いてくれた。

さらに、主人公 ことは ちゃんの、キャラパターンも作成してもらった。娘も喜んでいた。

次は、漢字と読みのデータを作るのをどうするか。
問題のデータは、SQLiteを使って、データベースで管理することを想定していた。
「たまねとりっぷ!」で使ってた、ランダムにレコードを取得するSQL文を使えば、毎回違う問題で遊べる。

小学生で習う漢字の一覧は、ネットで公開しているだろうと踏んで、AIさんに依頼。
データベースに流し込めるように、CSVファイルを作ってと頼んだが、できないと拒否w。
元データがあれば作るよと言われたので、PDFで公開しているサイトを見つけて、ダウンロードして食わせる。
そしたら、CSVファイルにしてくれたので、データベースに加工して流し込み、とりあえず問題のベースができた。

ほぼ手間がかからずに、下準備ができるのはいいね。最近のゲーム作りは、素材を作る時点で萎え気味だったので、性に合ってるかな。

ということで、憂邪鮫と並行して、こちらの本編を作って行く。

286.LCD風ゲームを作ろう 憂邪鮫(うぃじゃざめ) その2

いつものごとく、画像素材を作っていく。今回も生成AIを使って、作ることにした。
フリーの素材から探して、加工するのは限界があるし、自分ではまともに描けないしね。

まず1つ目のシーンから。
主人公は女性。一緒にBBQに来ていた友人たちを、幽霊サメから守る。
生成AIで画像を作ってもらうと、画像サイズを指定しても無視してでっかい画像を作るし、白黒2色って書いても、グレースケールで作るしと、大変。
それでも、一から自分で描くよりは早いし、いろんなパターンで描いてくれるので助かる。

生成AIに作ってもらった画像

準備してもらった画像を縮小すると、画像がつぶれるので、板タブを使って修正しつつ出来たのが、これ。

2つ目のシーンも、構想は終わっているので、生成AIで作っているのだが、うまく作れない。
それは、ドット絵の編集だ、生成AIがやることじゃないって言われたww
こちらも素材になるであろう元画像は出来たので、ちまちまと画像編集していこう。

先に1つ目のシーンのプログラムを開始する。