LoginSignup
16
7

More than 1 year has passed since last update.

【準備時間5分】JavaScriptを学びつつ戦う!RoboCodeやろうぜ!

Posted at

JavaScriptを学びつつ戦う!RoboCodeやろうぜ!

image.png

※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を起動します。

※中身はただのnpm installです。
image.png

 

start.batを起動します。

※中身はただのnode server.jsです。
image.png

 

RoboCodeを起動します。

※中身はただの http://localhost:3000/index.html へのショートカットです

image.png

 

画面上で戦車が戦い始めたら準備完了です。

image.png

遊び方

基本はオートバトルでステージ0~2 とファイナルステージの敵機を倒していく遊びとなります。

image.png

 
 

自機の強化

ステージ0はデフォルトのままでは勝てると思いますが、ステージ2以降は自機を強化しなければいけません。

public / robot / myrobot.jsをカスタマイズしましょう。

image.png

★参考情報★

自己情報
・ 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のいずれかをカスタマイズして、倒されないように防衛する

地味に盛り上がりますよ。
私が学生だった頃はこの遊びはめちゃめちゃ流行ってました。

16
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
7