Google Chrome または Safari を使用される事を強くお薦めしますw
他のブラウザでは Javascript の処理が重いです(汗)


2023/03/07

13年ぶり4

 ひとます完成したので公開。

http://ajsriddle.web.fc2.com/bz/index.html

本家で遊んでたときもそうだったけど、ミサイルにやられっ放しで10万点に届かない^^;


ワイヤーフレーム大好きなので、次に作りたいのはこれ。

データ作成が大変すぎて死にそうwww

(2023/03/08 追記)
ようやく10万点突破。
10万点超えると名前の隣に戦車マークが付くのだ。



2023/03/05

13年ぶり3

 寝ても醒めてもBATTLE ZONE、BATTLE ZONEw

週末は朝から晩までやっとるわwww

ミサイルのジグザグな動きがどうやってもうまくいかず、考え方は合ってるのに何故だろうとずっと悩んでいたのだけれど、結局トレランスの問題だった。

衝突判定のためにトレランスを大きくしていたのがこっちの計算に悪影響を及ぼしていたので、ミサイル制御のためのトレランスを別に用意することで解決。


他にもいろいろ調整した。

全体に画面が暗かったので明るく。
13年前に思うところがあって暗くしていたのだけれど、それは杞憂だった。

フォントも本家に近い感じにやや修正。
小フォントが小さすぎて読みにくいけれど、本家もそう。
残機数は開始時3機だったのだが、本家の残機は5機っぽいので変更。

デモ画面に戦車が登場するようになった。
ずんぐり戦車もちょっとだけスマートに。

これが形が不明だったミサイル。
検索しまくってようやく判明。

ミサイル発射6発目以降は敵がスーパータンクに変わる。
砲身形状が通常タンクと共用なので本家と若干見栄えが異なる。
忘れていなければ後で変更。

随分と遊べるようになったけれど、まだまだ調整は続く。

2023/03/04

13年ぶり2

本家の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のアセンブラを読むのは大変すぎるので諦めた。

とりあえず上に書いたことは全部コーディングした。

その他もろもろ微調整中(文字の大きさとか描画位置とか)。