2013年5月11日土曜日

[ロボコード]Javaの勉強用に便利な戦車ゲーム

どうも僕です.
タイトル通りロボコードについて忘れないように書いときます.

まずロボコードについてなんですが,IBMってとこが提供するフリーのゲームで,Javaを使ってプログラムした戦車ロボット同士を戦わせるものになってます.

要するに,ゲームしながら勉強ができるってわけですね.僕は,これにめちゃくちゃハマりました.
ただ最近は人気があまりないみたいなので残念です.

今回は人気でろよってことで,始め方とか書いていこうかと思ってます.
まずロボコードの本体をDLしてこないと始まらないのでDL(ver1.8.1.0)してきます.
その後実行したら良い感じにセットアップしてくれるので楽です(JDKを入れてること前提に話してます).

さて,セットアップできたらたちあげてみましょう.
初回起動時だけ突然戦い始めます.次から自分で戦わせるときは左上のBattle→Newを押すと戦いの設定ができます.

・戦い方
 戦わせたいロボットを選んで右の枠に入れてstartBattleで対戦が開始出来ます.いろんなサンプルが最初からいるので適当な奴を入れて対戦させるといいでしょう.

でもサンプル戦わせても楽しくないし自分のロボットを作りたくなりますよね.
そこでRobot→Editorを押すとロボコード専用のeditorが開きます.これだけで開発することができます.すごいお得ですね.

・ロボの作り方
 File→new→Robotを押すと新しいRobotを作ることができます.
 押したらまず名前をつけてその後所属グループみたいなものを決めます.
 最初から一応動くプログラムになってるのでコンパイルしてしまいましょう.
compiler→compileを押すとなんか画面出てきてCompiled successfully.とか出てたらOKです.
上手くいかなかったらcompiler→option→ResetcompilerでコンパイラをResetしてみてください(初期起動の時確かeditor開いた瞬間にコンパイラのパス通していいか聞かれた気がするのでなにか出たらOKしとけばだいたい動きます).

自分のRobotを戦わせましょう.

先ほどのeditorでどんな動きをするプログラムだったのか見て行きましょう.
・初期コードの説明(最初からコメントされてる部分を消してコメント入れてます)

//今回はRobotの名前をRoboにしてグループをroboにしてます
package robo;

//ロボコードのAPI
import robocode.*;

//ロボクラス
public class Robo extends Robot{

 //ロボットの動きを制御するメソッド
 public void run() {
  //常にこれを繰り返します
  while(true) {
   ahead(100);  //前に100進む
   turnGunRight(360); //砲台を360度右向きにまわす
   back(100);  //後ろに100進む
   turnGunRight(360); //砲台を360度右向きにまわす
  }
 }

 //イベント処理→レーダーで捉えたら呼び出されるメソッド
 public void onScannedRobot(ScannedRobotEvent e) {
  fire(1);   //弾のパワー1で打つ
 }

 //イベント処理→弾に撃たれた時呼び出されるメソッド
 public void onHitByBullet(HitByBulletEvent e) {
  back(10);   //後ろに10進む
 }
 
 //イベント処理→壁にぶつかった時呼び出されるメソッド
 public void onHitWall(HitWallEvent e) {
  back(20);   //後ろに20進む
 } 
} 


こんなかんじになります.英語が読めればだいたい意味はわかりますよね…読めなかった僕が悪いんですよね.
他にもイベント処理に現在のターンとか取得できたり相手のロボットの名前を取得できたりするので後日時間があったらちょいちょい書いていきますかね.

・まとめ
 ロボコードのセットアップから初期ロボットまでは作れるような感じになったはず.


0 件のコメント:

コメントを投稿