かるあ のメモ

アクセスカウンタ

zoom RSS RoboCodeで.NETのサポートが開始に

<<   作成日時 : 2010/02/28 15:34   >>

面白い ブログ気持玉 1 / トラックバック 0 / コメント 0

RoboCodeは戦車の動作アルゴリズムを書くことで、同じフィールドにいるロボット同士を闘わせるゲームです。僕が専門学校の時に一時期はやってみんなでわいわいやった記憶があります。

アルゴリズムといっても記述するコードはとてもシンプルで、通常時の動作、敵発見時の動作などを発生したイベントを補足してコードを記述します。元々はJavaのみのサポートだったのですが、最新版で.NETのサポートが行われたそうです。

ということで、インストールのメモ

  1. Jreのインストール
    RoboCode自体はJavaで動作するので、とりあえず入っていない人はJREをインストール。最新版入れておけばとりあえずOKみたい。
    http://www.java.com/ja/download/
  2. PathとJAVA_HOMEの設定
    勝手に入れてくれると思ってたんだけれど、自分でやる必要があるみたい。ということで、コンピューターのプロパティー>詳細設定>環境変数を選択
    image

    PATHとJAVA_HOMEを設定
    image
    image 
  3. RoboCodeのインストール
    RoboCodeのダウンロードページ<http://sourceforge.net/projects/robocode/files/>からrobocode-1.7.2.0-Beta-setup.jarrobocode.dotnet-1.7.2.0-Beta-setup.jarをダウンロード

    Windows環境で動作させるなら、robocode-1.7.2.0-Beta-setup.jar→robocode.dotnet-1.7.2.0-Beta-setup.jarを順番にインストールすればインストールは終了
  4. とりあえず動かしてみる
    インストールするとデスクトップにRobocodeのアイコンができるのでこいつをダブルクリック
    image

    メニューのBattle>New(Ctrl+N)から闘わせたいロボットを追加してStart Battleをクリックすればバトル開始!!
    image 
    image

    単純なアルゴリズムであっても、これだけたくさんのロボットがフィールドにいると動きに多様性があっておもしろいです。
  5. カスタムロボの作成
    .NETで戦車のアルゴリズムを記述するには、Roboのベースクラスを継承して独自のロジックを入れてあげればOK。
    とりあえず順番に作ってみましょう。

    1) Classライブラリーとしてプロジェクトを作成
    Visual Studioのファイル > 新規作成 > プロジェクト からクラスライブラリーを選択してOKボタンをクリック
    image 

    2) 参照設定でrobocode.dllを追加
    プロジェクトのコンテキストメニューから参照の追加を選択して、
    image

    参照タブからrobocode.dllを選択してOKボタンをクリック
    image
    robocode.dllはデフォルトのインストールだったらたぶんここにある
    image
    "C:\robocode\libs\robocode.dll"


    3) カスタムロボ用のクラスを作成
    プロジェクトのコンテキストメニューから追加>新しい項目を選択
    image 
    クラスを選択し、作成するロボットの名前を入力して追加ボタンをクリック
    image 

    RoboCodeAPIのヘルプはRoboCodeをインストールしたディレクトリーにあるの(C:\robocode\RobotAPI.chm)で、詳しくはこのドキュメントを参照するとして、とりあえずRobocode.Robotクラスを継承してこんな感じで書いてみた。→なんかレイアウトが崩れるので、ソースは最後に移動

    いまいちそれっぽく動くかわからないけれど、とりあえずこれでロボの作成は終わり、次にRobocodeにこいつを読み込ませてみる。


    5.) ビルドしたアセンブリーをRoboデータベースに登録


    RoboCodeのメニュー> Options > Preferencesを選択


    image


    Development Options タブでAddボタンを押してビルドしたアセンブリーがあるフォルダーを追加してあげる。


    登録したらFinishボタンをクリックしてダイアログを閉じる。


    image


     



    6.) 早速バトル



    メニューのBattle>New(Ctrl+N)を選択すると、Robotsの中にさっき作ったRoboAsaがいるので、戦闘に参加させたいロボットと一緒にAddボタンでSelected Robotsに入れてあげたらStart Battleボタンでバトル開始!!



    image


    image


    なんとRoboAsaが最後まで残りました!!


    image 


     





もしカスタムロボがロードされない場合は。。。


もしStart Battleボタンを押してもゲームが始まらない場合は、アセンブリのロードに失敗している場合があります。


RoboCodeを起動したコマンドプロンプトにメッセージが出ているかもしれないのでチェックしてみる。


僕の時は最初にPathの設定とJAVA_HOMEを設定してなかったのでjni4netがExceptionをはいていました。


とりあえず、コンソールを確認してみましょう。


 



参考URL




using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Robocode;

namespace SampleRobo
{
   public class RoboAsa: Robot
   {
       public override void Run()
       {
           this.BodyColor = System.Drawing.Color.Azure;
           while (true)
           {
               this.Ahead(100);
               this.Back(200);

               this.TurnLeft(90);
               this.TurnRight(180);

               this.Fire(1);
               this.Fire(1);
               this.Fire(1);
           }
       }

       public override void OnScannedRobot(ScannedRobotEvent evnt)
       {
           this.Fire(1);
           this.Fire(1);
           this.Fire(1);
       }
   }
}

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 1
面白い

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
URL(任意)
本 文
RoboCodeで.NETのサポートが開始に かるあ のメモ/BIGLOBEウェブリブログ
文字サイズ:       閉じる