Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.*;
- import robocode.HitRobotEvent;
- import robocode.HitWallEvent;
- import robocode.Robot;
- import robocode.RobotStatus;
- import robocode.ScannedRobotEvent;
- import robocode.StatusEvent;
- public class MyRobot extends Robot { //lub AdvancedRobot
- private RobotStatus robotstatus;
- private int X = 0;
- private int Y = 0;
- private double enX = 0;
- private double enY = 0;
- private int entX = 0, entY = 0;
- private boolean[][] board = new boolean[40][40];
- private boolean[][] me = new boolean[40][40];
- private boolean radar_dir = true;
- final private double radar_angle = 180;
- private int dx, dy;
- @Override
- public void run() {
- // ruch robota
- turnRadarLeft(90);
- dx = (int)getBattleFieldWidth()/40;
- dy = (int)getBattleFieldHeight()/40;
- while (true) {
- radar();
- me = new boolean[40][40];
- X = (int)robotstatus.getX();
- Y = (int)robotstatus.getY();
- me[X/dx][Y/dy] = true;
- switch((int)getHeading()) {
- case 0:
- if(board[X/dx][Y/dy+1]) {
- turnRight(90);
- }
- break;
- case 90:
- if(board[X/dx+1][Y/dy]) {
- turnRight(90);
- }
- break;
- case 180:
- if(board[X/dx][Y/dy-1]) {
- turnRight(90);
- }
- break;
- case 270:
- if(board[X/dx-1][Y/dy]) {
- turnRight(90);
- }
- break;
- }
- ahead(2*dx);
- }
- }
- @Override
- public void onStatus(StatusEvent event) {
- this.robotstatus = event.getStatus();
- }
- @Override
- public void onHitRobot(HitRobotEvent e) {
- turnRight(90);
- }
- @Override
- public void onHitWall(HitWallEvent e) {
- turnRight(90);
- }
- @Override
- public void onScannedRobot(ScannedRobotEvent e) {
- double enemy_ang = e.getBearing();
- double dist = e.getDistance();
- enX = (dist * Math.sin(Math.toRadians(robotstatus.getHeading() + enemy_ang)) + robotstatus.getX() - 20);
- enY = (dist * Math.cos(Math.toRadians(robotstatus.getHeading() + enemy_ang)) + robotstatus.getY() - 20);
- entX = (int)(enX/dx + 0.5d);
- entY = (int)(enY/dy + 0.5d);
- for(int i=0; i<2; i++) {
- for(int j=0; j<2; j++) {
- board[entX+i][entY+j] = true;
- }
- }
- }
- @Override
- public void onPaint(Graphics2D g) {
- for(int i=0; i<40; i++) {
- for(int j=0; j<40; j++) {
- if(!board[i][j]) {
- g.setColor(Color.green);
- } else {
- g.setColor(Color.red);
- }
- g.drawRect(i*dx, j*dy, dx, dy);
- if(me[i][j]) {
- g.setColor(Color.blue);
- g.drawRect(i*dx, i*dy, dx, dy);
- }
- }
- }
- }
- void radar() {
- if(radar_dir) turnRadarRight(radar_angle);
- else turnRadarLeft(radar_angle);
- radar_dir = !radar_dir;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement