今日は、ハマちゃんと対戦。結果は・・・・
最初、全く勝てなかったけど、プログラムを改良して初勝利!!!! 相手は、索敵すると弾を連射してくるので、当たったら500移動するようにしました。 あと、ランダムな移動を二つにわけ、移動用、方向転換用というようにしました。 package mf; import robocode.*; import java.awt.Color; /** * Miffy - a robot by (your name here) */ public class Miffy extends Robot { //ここからプログラムスタート boolean peek; // Don't turn if there's a robot there // ロボットがいれば回転しない double moveAmount; // How much to move // どれだけ動くか public void run() { setColors(Color.yellow,Color.pink,new Color(150,0,150)); turnLeft(getHeading());//左に曲がる turnGunRight(360);//砲台を右へ360度回転 while(true) { //もし真ならば //ahead(50);//50前進 //turnRight(90);//右へ90度 turnGunRight(360);//砲台を右へ360度 setAdjustGunForRobotTurn(true);// 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); 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; System.out.println("found;"+e.getName()); fire(1);//見つけたらファイア! System.out.println("energy;"+getEnergy()); 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(ScannedRobotEvent e) { if (getEnergy()>50){//エネルギーが50以上なら fire(3);//火力3で発射 } else{ fire(1);//そうでないならば火力1で発射 } scan(); } public void onHitByBullet(HitByBulletEvent e) {//敵に攻撃されたら //turnLeft(90 - e.getBearing());//砲台の方向から左へ90度向く back(500);//後ろへ90 } public void onHitWall(HitWallEvent e) {//壁に当たったら turnGunRight(180); //砲台を右へ180度 turnRight(90); ahead(500); } } しかし、ハマちゃんも対策をしてきたのでまた勝てなくなり、再び改良。 距離に応じてミサイルの威力を変更できるようにしました。 (もし、距離が10未満であれば威力10の弾を発射、それ以外は1で) package mf; import robocode.*; import java.awt.Color; /** * Miffy - a robot by (your name here) */ public class Miffy extends Robot { //ここからプログラムスタート boolean peek; // Don't turn if there's a robot there // ロボットがいれば回転しない double moveAmount; // How much to move // どれだけ動くか public void run() { setColors(Color.yellow,Color.pink,new Color(150,0,150)); turnLeft(getHeading());//左に曲がる turnGunRight(360);//砲台を右へ360度回転 while(true) { //もし真ならば //ahead(50);//50前進 //turnRight(90);//右へ90度 turnGunRight(360);//砲台を右へ360度 setAdjustGunForRobotTurn(true);// 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); 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; distance = e.getDistance(); System.out.println("found;"+e.getName()); if(distance<10){ fire(10);//見つけたらファイア! }else fire(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(ScannedRobotEvent e) { if (getEnergy()>50){//エネルギーが50以上なら fire(3);//火力3で発射 } else{ fire(1);//そうでないならば火力1で発射 } scan(); } public void onHitByBullet(HitByBulletEvent e) {//敵に攻撃されたら scan(); turnLeft(90 - e.getBearing());//砲台の方向から左へ90度向く back(200);//後ろへ90 } public void onHitWall(HitWallEvent e) {//壁に当たったら turnGunRight(180); //砲台を右へ180度 turnRight(90); ahead(200); } }
by viewtleaf
| 2004-11-16 15:31
| JAVAプログラミング
|
検索
カテゴリ
全体Diary 学校での取り組み全般 バレーボール 修論 Linux Network Security Software 総合関係 Medical treatment JAVAプログラミング 研究会等 特別支援 Fishing 流体力学 機械工学 画像処理 電気工学 情報工学 木材加工 異文化間教育 ビデオ編集 イギリスの学校 書評 リンク 金属加工 学ぶ・わかる Bowling Hardware 麺類 Piano English パズル 卓球 未分類 フォロー中のブログ
異能者集団のチームワーキング私たちにもできる!国際協力 ジャストジャンプ3@フレ... その他のジャンル
記事ランキング
ブログジャンル
画像一覧
| ||||||||||||||||||||||||||||||||||||||||||||||||||
ファン申請 |
||