#JavaScriptを学びつつ戦う!RoboCodeやろうぜ!
※Windows + Node.js環境を想定して書いています。
Git
https://github.com/mokemokepyonpyon/robocode-js/tree/gh-pages
Download
https://github.com/mokemokepyonpyon/robocode-js/archive/refs/heads/gh-pages.zip
##RoboCodeとは
Robocodeとは元々Java言語でプログラミングする対戦型ロボットシミュレータです。
自分プログラミングしたロボットを、世界中のプログラマが開発したロボットと闘わせることができるんです!
youchenleeさんが作成したJS言語バージョンを
更に初心者向けに改良したものが本記事で紹介しているものです。
##はじめかた
クローンor解凍したZIPの中にある、install.batを起動します。
start.batを起動します。
RoboCodeを起動します。
※中身はただの http://localhost:3000/index.html へのショートカットです
画面上で戦車が戦い始めたら準備完了です。
##遊び方
基本はオートバトルでステージ0~2 とファイナルステージの敵機を倒していく遊びとなります。
自機の強化
ステージ0はデフォルトのままでは勝てると思いますが、ステージ2以降は自機を強化しなければいけません。
public / robot / myrobot.jsをカスタマイズしましょう。
★参考情報★
自己情報
・ me.id
・ me.x
・ me.y
・ me.hp
・ me.angle-現在の角度(タンク角度+タレット角度)
・ me.tank_angle
・ me.turret_angle
敵情報
・ enemy-spot [N] .id
・ enemy-spot [N] .hp
・ enemy-spot [N] .angle-敵に対する角度(方向)
シーケンシャルアクション:
・turn_left(角度)
・turn_right(角度)
・move_forwards(距離)
・move_backwards(距離)
・move_opposide(distance)-このアクションはOnWallCollide()でのみ使用できます
並列アクション:
・turn_turret_left(角度)
・turn_turret_right(角度)
・shoot(攻撃)
・yell(メッセージ)
イベント:
OnIdle()-アイドル時にトリガーされます(実装する必要があります)
OnWallCollide()-タンクが壁に衝突したとき
OnHit()-弾丸が当たったとき
OnEnemySpot()-砲塔が敵に直接面している場合(発砲しない理由はないようです!)
おわりに
一通りクリアしたら、攻撃と防衛に分かれて、友人と対戦してみるのはいかがでしょう。
攻撃 myrobot.jsをカスタマイズして、ボスを倒す
防衛 boss-0.js~boss-3.jsのいずれかをカスタマイズして、倒されないように防衛する
地味に盛り上がりますよ。
私が学生だった頃はこの遊びはめちゃめちゃ流行ってました。