“RUN” それは魔法の言葉

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

86.HSPでゲーム&ウォッチのヘルメットを作ろう その4

次は事務所のドアの開閉処理を作る。
GAME Aは10秒、GAME Bは5秒間隔で開閉を繰り返す。

1/60秒単位でのループは、基本的に変えないので、ゲーム内カウンタを利用して、固定値で、300ごとに開閉を繰り返すようにした。
とりあえずこれで、5秒間隔で開閉はするようになった。GAME AとGAME Bでの違いは、この後作ることにする。

*showdoor ;ドアの開閉 
  if gamecnt\300 {
    doorflg=doorflg^1
  }

  pos 648,332
  celput 3,doorflg

  return

doorflg=doorflg^1 は、論理式のXORを実行している。
XORは、排他的論理和というもので、小難しく聞こえるけど、どっちも同じ値なら0に、違っていたら1になる。だから、1とのXORを取ると、0→1→0→1→…と、オンオフを繰り返すような数字の動きになる。

やっかいなのは、ミス時や、ボーナスのミスクリア時にも、開閉は継続するってところだな。
このあたりは、あとで作り込むことにした。

2周年!

f:id:CORO3:20210415234121p:plain

1周年を迎えたときは、もう少しだけネタが持つかな?と思いつつ、2年目に突入しましたが、プログラムネタで食いつなぐことができ、何とか2周年を迎えることができました♪
HSPでのプログラミングが楽しいので、あと1年は持たせられる。のか?w

3年目に突入しますが、変わらずごひいきにしていただけると嬉しいです。

85.HSPでゲーム&ウォッチのヘルメットを作ろう その3

作りはじめは、ファイアと同じく、作業員の移動処理から始めた。
移動のためのキーボードの入力判定や、タッチパネル処理自体は、ファイアのプログラムをそのまま流用できた。

ファイアでは、熱中していると少しずつ指がずれて、ボタンを押せていないことがあったので、プレイ感を上げるために今回はボタンを押したことになる領域を少し広げてみた。

f:id:CORO3:20210529214814j:plain

ファイアと比べて、スタート地点には戻れない、事務所のドアが閉まっていると入れないという処理が必要。
なので、せっかく便利と思っていたlimit命令が使えない…

ファイアだと、救助隊の移動範囲が決まっているので、移動範囲を超えないように、プラス側、マイナス側でそれぞれif文を書いていた。

if px<0 : px=0
if px>2 : px=2

作っている途中で、いろんなサイトや参考ソースを見ていて、limitという命令があることに気づいた。
limit命令は、変数と、下限値、上限値を引数に渡すと、上限、下限を越えない範囲の数値を返してくれる。

px=limit(px,0,2)

こう書いておけば、pxをマイナスしていっても、0未満にならないし、プラスしても2以上にはならない。
救助隊の移動範囲に必ず収まるようになる。
さっきの2つのif文を、1つにまとめられる!便利♪

閑話休題

で、ヘルメットでは、普通にif文で判定することにした。
本来は、スタート地点から一度でると戻れないし、事務所のドアが開いてないと入れない、入ったらスタート地点に戻るが、まずは、動きを見てみたかったので、無視して、移動だけさせてみた。

キャラが動くだけなのだけど、なんか作ってる!って感じがいい。

youtu.be

84.HSPでゲーム&ウォッチのヘルメットを作ろう その2

まずは、恒例の液晶パターンの切り出し作業から。

今回は、まだゴールドシリーズだからなのか、液晶パターンとセロファン部分の重なりは無い。
電池を抜いた状態の写真が手に入れば楽なんだろうけど、だいたいオークションの汚くなった液晶画面の画像しかない…

ま、ある画像でやるしかないので、なるべく綺麗な画像を使って切り出し開始。

工具は5種類。ピクセル数がそれぞれ縦横違うので、5つ分の画像にする。落ちる工具の角度でもピクセル数が違うが、最大のものに併せて、celdiv命令で指定する値を決めた。

f:id:CORO3:20210529165303j:plain

ミスマークは、3つとも同じだが、MISSという文字が表示されるので、これだけを分割して画像をいちいち表示するのが面倒。
ミスが1つでもあれば、マークが表示されるのだから、すべてのミスマークを同じサイズで切り出して、同じ位置に重ね合わせて表示することにした。
こうすれば、1つ目にMISSの文字付きマーク、残りの2つは、位置をずらしてマークだけにした。
ミスの数分、ループしてcelputすればいい♪

f:id:CORO3:20210529195859j:plain

ドアの開閉も液晶パターンなので切り出し。これは閉じたとき、開いたときで同じサイズで切り出した。2つが重なるようにして、ミスマークと同じようにした。

f:id:CORO3:20210529200204j:plain

あとは作業員と作業員のミス時のパターンを切り出しておしまい。

f:id:CORO3:20210529200558j:plain

点数のフォントは、そのまま「ファイア」で作ったものを流用することにした。
材料を揃えるのに時間がかかってしまった…