Robocodeによるロボットバトル入門（環境構築編）

昨年末より、
職場のエンジニアメンバで昼休みにコードバトルを実施しています。

* [Coding Games and Programming Challenges to Code Better](https://www.codingame.com/start)

最近は、Robocodeでのバトルを企画中です。

随分古いアプリケーションということですが、社内ではやらせようと合作中。
流行らせるために *概要* や *実行方法* 、 *開発環境構築方法+* を整理し始めたのでここにメモしていきます。


# Robocodeとは？

*参考になる情報を五月雨で貼り付けておきます。*

## 本家 : [Robocode Home](http://robocode.sourceforge.net/)

### 引用

[ReadMe for Robocode](http://robocode.sourceforge.net/docs/ReadMe.html)

> 1. WHAT IS ROBOCODE?
> 
> Robocode is a programming game where the goal is to code a robot battle tank to compete against other robots in a battle arena.
> So the name Robocode is a short for "Robot code".
> The player is the programmer of the robot, who will have no direct influence on the game.
> Instead, the player must write the AI of the robot telling it how to behave and react on events occurring in the battle arena.
> Battles are running in real-time and on-screen.

## [闘え、Robocode (ロボコード) !](https://www.ibm.com/developerworks/jp/java/library/j-robocode/)

*記事はずいぶん古い。*

### 引用

*Java 2という表現に歴史を感じます。*

> Robocodeは、Java 2をサポートするあらゆるプラットフォームで実行できる、使いやすいロボット戦闘シミュレーターです。
> ユーザーはロボットを作成し、それをバトルフィールドに配置して、他の開発者が作成した敵ロボットを相手に徹底的に闘わせます。
> Robocodeには初心者用にあらかじめ作成された敵がいくつか含まれていますが、これらの敵に勝てるようになったら、あなたが作ったロボットを世界のいずれかのリーグに参加させて、世界最強の相手と闘わせることができます。


---


# 実行環境の構築

*実際に動かしてみるのが一番手っ取り早いです。*  
**開発環境の構築** は次の章を参照下さい。


## 必要なものは？

*2017-03-13現在*

1. JRE1.6 （JDKはなくてもよい）
    - *Java 6.0 or newer is required for running Robocode（ [Robocode Home](http://robocode.sourceforge.net/) ）*
2. setup.jar
    - *[Robocode - Browse Files at SourceForge.net](https://sourceforge.net/projects/robocode/files/)*

## 手順

1. **必要なものは？** にあるものたちをインストールする（で実施）

### ヒント

* *以下のようなときには、コマンドラインから `java -version` と入力してみる*
    - JREがインストールされているかわからない
    - JREはインストールされているがバージョンがわからない



---


# 開発環境の構築

*開発効率化？* に向けて、 @kiy0taka さんが開発環境を整備してくれました。

## 必要なものは？

1.  [JDK1.8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
2.  [IntelliJ IDEA the Java IDE](https://www.jetbrains.com/idea/#chooseYourEdition)
    - JavaはやっぱりIDEが必須

## 手順

1. **必要なものは？** にあるものたちをインストールする
2. 適当なフォルダに以下のファイルを `git clone` する
    - [GitHub - kiy0taka/robocode-start](https://github.com/kiy0taka/robocode-start)
        - `git clone git@github.com:kiy0taka/robocode-start.git`

## 上記まで終わったら

```sh
$ cd robocode-start/

# 結構時間がかかりますが、コーヒーでも飲みながら待つ
## 途中で何度かrobocodeのインストーラーがダイアログを表示しますので YES ボタンをクリックする
$ ./gradlew installRobocode 
```

*IntelliJ IDEA* を起動する。

`Open` > `robocode-start/` ディレクトリを選択

ウィンドウ最右下に、 **四角いアイコン** が見えるはずなので、クリックし `Gradle` を選択

<img width="414" alt="全画面_2017_03_13_23_40.png" src="https://qiita-image-store.s3.amazonaws.com/0/15523/bb8ff1d6-3c60-a9ed-06b1-fa82ea0557f4.png">


`build.gradle` というビルドファイルに設定済みのタスクが、右のペインに一覧表示されているはず。
`run` をダブルクリックして実行してみる。

<img width="609" alt="Banners_and_Alerts_と_robocode-start_-____99_sandbox_robocode-start_.png" src="https://qiita-image-store.s3.amazonaws.com/0/15523/c018bb1d-853d-2582-2724-02dbe8bd0db5.png">


めでたく **Robocode** アプリケーションが起動される。
メニューの `Battle` > `New` から、はじめから組み込み済みのロボットを選択して戦わせることが可能。

<img width="912" alt="Banners_and_Alerts_と_Robocode.png" src="https://qiita-image-store.s3.amazonaws.com/0/15523/b8d83a28-0fe9-a506-63b9-419cfdc74b1d.png">



### ヒント

* *以下のようなときには、コマンドラインから `javac -version` と入力してみる* （ *java* コマンドではないことに注意！ *JRE* ではなく *JDK* が必要です！ ）
    - JDKがインストールされているかわからない
    - JDKはインストールされているがバージョンがわからない