第二回ロボコード大会
 前回は最下位だったけど、今回は5回戦中一回最後まで残ったので、4位に入りました。
 ただ、4台のみで戦ったら、やっぱり最下位でした・・・

 一番強かったロボットは、弾を発射しているときに立ち止まらず、常に動きながら弾を発射していました。このことにより、一度ロックオンしたら立ち止まってしまい、逆にねらわれることを回避しています。





ロボコードで戦うロボットも、それぞれクラスのインスタンス

クラスとは・・・オブジェクトの設計図

インスタンスとは

メソッドとは

クラスディレクションとは・・・




package mf;
import robocode.*;
import java.awt.Color;

/**
* Miffyproto - a robot by (your name here)
*/
public class Miffyproto extends Robot
{
//ここからプログラムスタート


boolean peek; // Don't turn if there's a robot there
// ロボットがいれば回転しない
double moveAmount; // How much to move
// どれだけ動くか

public void run() {


Direction myDir = new Direction(); //ここで新しい変数のようなものを作っている
Direction myRadarDir = new Direction();



setColors(Color.yellow,Color.pink,new Color(150,0,150));//色は本体が黄色で砲台がピンク

turnLeft(getHeading());//左に曲がる




//turnGunRight(360);//砲台を右へ360度回転
while(true) { //もし真ならば
turnRadarRight(360);//レーダーを360度回転する
//ahead(50);//50前進
//turnRight(90);//右へ90度
//turnRadarLeft(360);//レーダーを左へ360度
setAdjustGunForRobotTurn(true);//

ahead(100*myDir.getDir());
myDir.flip();
turnRadarRight(120 * myRadarDir.getDir());
myRadarDir.flip();

// double r=Math.random();//方向のみランダムで決定
// if(r > 0.75){
// ahead(50);
// }else if(r >0.5){
// turnLeft(90);//ahead(50);
// }else if(r>0.25){
// turnRight(90);//ahead(50);
// }else back(50);
// turnRadarRight(360);//レーダーを360度回転する
// double s=Math.random(); //移動のみランダムで決定
// if(s > 0.75){
// ahead(50);
// }else if(s >0.5){
// ahead(50);
// }else if(s>0.25){
// ahead(50);
//}else back(50);
}
}

public void onScannedRobot(ScannedRobotEvent e) {//ロボット索敵で発見したら?
double energy;
double distance;
double deg;

distance = e.getDistance();
System.out.println("found;"+e.getName());

/////////////////



deg =e.getBearing() - ( getGunHeading() - getHeading() ) ;

if(deg==0){
turnGunRight(0);
}else{
if(deg<180){
turnGunRight(deg);
}else{
turnGunLeft(359-deg);
}
}
//////////////////////////////

if(distance<30){//敵との距離が30以下だったら・・・
fire(10);//見つけたらファイア!
}else if(distance<100){fire(3);
}else fire(1);//それ以上離れていたら1の火力でファイア!
System.out.println("energy;"+getEnergy());
System.out.println("distance;"+distance);
scan();//索敵
}
public void onHitRobot(HitRobotEvent e) {
// If he's in front of us, set back up a bit.
// もし敵が私たちの前にいれば、少し後退します。
if (e.getBearing() > -90 && e.getBearing() < 90)
back(100);
// else he's in back of us, so set ahead a bit.
// そうでなければ敵は後ろにいるので、すこし前進します。
else
ahead(100);
}

public void onHitByBullet(HitByBulletEvent e) {//敵に攻撃されたら
scan();
while(true) { //もし真ならば
turnRadarRight(360);//レーダーを360度回転する
//ahead(50);//50前進
//turnRight(90);//右へ90度
//turnRadarLeft(360);//レーダーを左へ360度
setAdjustGunForRobotTurn(true);//


turnLeft(90 - e.getBearing());//砲台の方向から左へ90度向く
back(200);//後ろへ90
}
}


public void onHitWall(HitWallEvent e) {//壁に当たったら
turnGunRight(180); //砲台を右へ180度
turnRight(90);
ahead(200);
}
public void onWin(WinEvent e) {

turnRight(90);//右へ90度
turnLeft(90);//左へ90度
//勝利のダンス動作を記述 ex.360度回転するなど
}}

class Direction{
int flag;//方向の保存
//コンストラクタ
public Direction(){
this.flag = 1;
}
//方向の読み出し
public int getDir(){
return this.flag;
}
//方向の反転
public void flip(){
this.flag = -1;
}
}

//class Radardirection extends


//public void flip(){//5回に一回は回転する
// if((this counter % 5)==0{
// this.flag=-1;
// }
// this.flag=this.flag*(-1);
// this.counter++;
// }
//}
[PR]
by viewtleaf | 2004-12-14 20:37 | JAVAプログラミング
<< 鳴門セミナーを振り返る イスラエルを題材とした授業の開... >>



毎日起こった出来事を記入し、「振り返り」に活用したいと思います。写真は我が子の作品。
by viewtleaf
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31