2

ロボコードロボットについて聞きに来ました。私はロボットのコードを持っていて、26 人の友人に対して 11 位になりました。とはいえ、もっと良くなるように頑張りたいです。私はウェブサイトを調べ、コードを調整して、予期しない動きができるようにしました。これにより、10ラウンドに1回、1位になりました。このロボットを改善するためのアイデアやヒントを教えてください。次に、ロボットを編集して、その動作を確認します。ただし、ロボットを extends Robot のままにしておきたいです。

package aaa;
import robocode.*;
//import java.awt.Color;

// API help: http://robocode.sourceforge.net/docs/robocode/robocode/Robot.html

/**  
 *Epictron - a robot by ASHAR ASLAM!!!
 */
public class Epictron extends Robot
{
    /**
     * run: Epictron's default behavior
     */
    public void run() {
        // Initialization of the robot should be put here
        // After trying out your robot, try uncommenting the import at the top,
        // and the next line:
        // setColors(Color.blue,Color.blue,Color.grey,Color.red,Color.green); // body,gun,radar
        // Robot main loop
        while(true) {
            // Replace the next 4 lines with any behavior you would like
            double distance = Math.random()*300;
            double angle = Math.random()*45;
            turnRight(angle);
            ahead(distance);
            ahead(100);
            turnGunRight(90);
            back(100);
            turnGunRight(90);
        }
    }

    /**
     * onScannedRobot: What to do when you see another robot
     */
    public void onScannedRobot(ScannedRobotEvent e) {
        // Replace the next line with any behavior you would like
        double distance = e.getDistance();

        if(distance<200)
        {
           fire(3.5);
        }
        else if(distance<500)
        {
           fire(2.5);
        }
        else if(distance<800)
        {
           fire(1.5);
        }
        else
        {
           fire(0.5);
        }
    }

    /**
     * onHitByBullet: What to do when you're hit by a bullet
     */
    public void onHitByBullet(HitByBulletEvent e) {
        // Replace the next line with any behavior you would like
        back(10);
    }

    /**
     * onHitWall: What to do when you hit a wall
     */
    public void onHitWall(HitWallEvent e) {
        // Replace the next line with any behavior you would like
        back(20);
    }   
}
4

3 に答える 3

2

ランダムに回転するのではなく、スキャンするロボットに自分の側面が向くように回転します。これにより、簡単に左右に移動して弾丸をかわすことができます。横にランダムに移動するか、他のロボットのエネルギーレベルの変化を登録したときにのみ移動することができます.

また、敵をターゲットにするより良い方法が必要です。あなたがそれらを見たとき、あなたは発砲するので、弾丸がそれらに到達するまでに、それらはおそらく動いています. 基本的な三角法を使用して、弾丸が敵に到達したときに敵がどこにいるのかを推測できます。

于 2012-08-21T05:44:11.500 に答える
1

robowikiには、すべてのトップ ボットに関する情報があります。ロボコーディングを少し行ったところ、パターン マッチング ガンを使用したウェーブ サーフィンは、おそらくほとんどのボットに対抗できるほど優れていることがわかりました。半分まともな実装をまとめる程度。それでも、コードが失われたときに再実装するのに十分な知識を保持していませんでした。

于 2012-03-15T20:28:49.670 に答える