ひとます完成したので公開。
http://ajsriddle.web.fc2.com/bz/index.html
本家で遊んでたときもそうだったけど、ミサイルにやられっ放しで10万点に届かない^^;
ワイヤーフレーム大好きなので、次に作りたいのはこれ。
ひとます完成したので公開。
http://ajsriddle.web.fc2.com/bz/index.html
本家で遊んでたときもそうだったけど、ミサイルにやられっ放しで10万点に届かない^^;
ワイヤーフレーム大好きなので、次に作りたいのはこれ。
寝ても醒めてもBATTLE ZONE、BATTLE ZONEw
週末は朝から晩までやっとるわwww
ミサイルのジグザグな動きがどうやってもうまくいかず、考え方は合ってるのに何故だろうとずっと悩んでいたのだけれど、結局トレランスの問題だった。
衝突判定のためにトレランスを大きくしていたのがこっちの計算に悪影響を及ぼしていたので、ミサイル制御のためのトレランスを別に用意することで解決。
他にもいろいろ調整した。
本家のROMを解析した資料を見つけた。
https://6502disassembly.com/va-battlezone/
見よう見まねで作っていたいろんな部分がそうではないことが判明。
・マップの大きさは256x256。
自機の初期位置は中央(座標(0,0))で、北に月、火山は南西。
障害物はランダム配置ではなく場所が決まっている。
・敵もスコアを持ち、自機がやられると敵は1000点獲得。
彼我の得点差により敵の挙動が変わる。
・敵の出現位置は自機からの距離と角度で決定する。
距離はマップ最大半径の3/4か3/8のどちらかを50:50の確率で決める。
角度は敵スコアが高い場合は目に見える範囲、敵スコアが低い場合はランダム。
・敵出現後2秒間は敵は弾を撃たない。
・敵出現後3秒間はランダムな動きをする。
敵出現後3秒経過すると敵は攻撃してくるがその攻撃は甘い。
・敵出現後17秒経過すると敵は攻撃モードになりガンガン攻めてくる。
敵スコアとの得点差が7000点以上ある場合も攻撃モードになる。
・スコアが10000点(DIPスイッチにより20000点または30000点に切替可)を超えるとミサイルが出現するようになる。
出現するのが戦車になるのかミサイルになるのかはランダム。
・敵から長時間(48~64秒)逃げ回っていると、その敵を倒した後に出現するのはミサイルになる。
・ミサイルを躱すと次もミサイルが出現する。
このモードは一定時間(16~32秒)続く。
・ミサイル6発目から128発目の間はスーパータンクが出現する。
128発目を超えると0からのカウントに戻り出現するのはスロータンクになる。
・スコアが2000点を超えるとUFOが出現するようになる。
出現間隔はランダム(0~17秒)。
初期位置と動きもランダム。
とまあ思いも寄らない細かな設定になっていたのだが、敵戦車の動きのアルゴリズムについては言及がなかった。
ROM内のソースも公開されていたが、6502のアセンブラを読むのは大変すぎるので諦めた。
とりあえず上に書いたことは全部コーディングした。
その他もろもろ微調整中(文字の大きさとか描画位置とか)。