5年前を最後に、毎年今年は応募するぞー、ぞー、ぞー、で、結局何もできずに歯がゆい思いをしていましたが、今年はなんとか滑り込みで応募できました。
マンガ肉もぐもぐ
では、続いて「ゲーム紹介」と「操作説明」などどうぞ。
ゲーム紹介
あなたは、第13回マンガ肉大食い大会にエントリーしました! 制限時間は30秒! マウスの左ボタンを押した状態でぐるぐると動かしてマンガ肉をもぐもぐしましょう♪ さらに、手に汗握る実況機能付きでランキング上位者と夢の対決が実現しました。
操作説明
- かの有名な“マンガ肉”。 マウスの左ボタンを押したままぐりぐりと消しゴムツールで消すように操作すると、お肉を珠音ちゃんが食べます。 マウスクリック時は赤色で塗りつぶされた円、クリックしていない時は赤色の単なる円でマウスの位置が表示されます。
- 今の状態。
- 制限時間 30 秒の残りがどのぐらいあるか?
- “マンガ肉”を幾つ食べ終えたか。
- 今食べている“マンガ肉”の残りがどのぐらいか。
- 実況中継
リアルタイムで、ランキングに登っているプレーヤとの比較が表示されます。
←★★★
の表示が今のランキングです。
裏話的な
時刻差分の取得
今回、制限時間30秒という差分時間を取るために API を利用しない方法を使っています。
と、得意そうに書こうとしましたが、今調べたら API を利用した方がサイズ的に小さくなるようですね、とほほ。
GetTickCount()
や timeGetTime()
を利用しても 49.7 日問題がありますが、まあそれでも小さそうなので、次回から API を利用するということで。
実況リプレイの仕組み
ゲーム画面右上の「実況」の仕組みです。
毎度おなじみ(?) HSPTV のランキング機能を利用(悪用?)し、実現しています。
hsptv_up p1,"comment", p2 HSPTVデータ更新 p1 : スコア値(32bit整数値) "comment" : コメント文字列(256byteまで) p2 : オプション機能値
HSPTV対応ソフト作成マニュアル(中上級者向け)(hsptv_api.txt) より
より詳しく言えば HSPTV のスコアを更新する hsptv_up
命令の "comment"
にリプレイデータを入れています。
収納しているデータは n個目の“マンガ肉”を食べ終わった時間 です。
例えば、
個数 | 時間(ms) | エンコード後 |
---|---|---|
1 個目 | 1637 | 1G |
2 個目 | 7865 | s_ |
3 個目 | 18647 | "*C |
4 個目 | 25308 | "q6 |
こんな感じで、 "comment"
の内容は 1G s_"*C"q6
となります。
この方法だと数値の 0 〜 830584 までを三文字に符号化できますが、実際利用しているのは 30000 までです。
符号化(数値→文字列)処理
n = 1234 : gosub *n2s
mes s
stop
*n2s
sdim s, 64
repeat 3
; 32 ... 126 ->
poke s, 2 - cnt, 32 + n ¥ 94
n /= 94
loop
return
復号化(文字列→数値)処理
s = " -," : gosub *s2n
mes n
stop
*s2n
n = 0
repeat 3
; 32 ... 126
n = n * 94 + peek(s, cnt) - 32
loop
return
まあ、実際は一回しか読んでいないので、サブルーティンにせずに、展開して直接埋め込んでいます。
あのお肉はどこから?
あの見事な“マンガ肉”はどこから来たのでしょう?
答えは HSP3オフィシャル2D素材 "珠音(たまね)" の tamadot.bmp
からです。
ただし、 tamadot.bmp
のお肉は、斜めを向いているので
→ gsquare →
と回転させて横向きのお肉にしています。
なお、そのまま回転させるとドットが斜めになってきたないので、かなり大きく拡大してから縮小してそれなりに見えるようにしています。
ゲーム画面上のお肉がドットなのは、元が64ドットなのでしょうがないです。
最後に
「マンガ肉もぐもぐ」を HSPTV で遊んでいただけると嬉しいです。
ゲームの感想を書き込んでもらえると更に嬉しいです。
ゲームへのコメントは 作品情報 からお願いします。