Advertisement
Guest User

Untitled

a guest
May 6th, 2015
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.49 KB | None | 0 0
  1. import java.awt.*;
  2. import robocode.HitRobotEvent;
  3. import robocode.HitWallEvent;
  4. import robocode.Robot;
  5. import robocode.RobotStatus;
  6. import robocode.ScannedRobotEvent;
  7. import robocode.StatusEvent;
  8.  
  9. public class MyRobot extends Robot { //lub AdvancedRobot
  10.    
  11.     private RobotStatus robotstatus;
  12.    
  13.     private int X = 0;
  14.     private int Y = 0;
  15.     private double enX = 0;
  16.     private double enY = 0;
  17.     private int entX = 0, entY = 0;
  18.     private boolean[][] board = new boolean[40][40];
  19.     private boolean[][] me = new boolean[40][40];
  20.     private boolean radar_dir = true;
  21.     final private double radar_angle = 180;
  22.     private int dx, dy;
  23.        
  24.     @Override
  25.     public void run() {
  26.     // ruch robota
  27.         turnRadarLeft(90);
  28.        
  29.         dx = (int)getBattleFieldWidth()/40;
  30.         dy = (int)getBattleFieldHeight()/40;
  31.        
  32.         while (true) {
  33.             radar();
  34.            
  35.             me = new boolean[40][40];
  36.            
  37.             X = (int)robotstatus.getX();
  38.             Y = (int)robotstatus.getY();
  39.             me[X/dx][Y/dy] = true;
  40.            
  41.             switch((int)getHeading()) {
  42.                 case 0:
  43.                     if(board[X/dx][Y/dy+1]) {
  44.                         turnRight(90);
  45.                     }
  46.                     break;
  47.                 case 90:
  48.                     if(board[X/dx+1][Y/dy]) {
  49.                         turnRight(90);
  50.                     }
  51.                     break;
  52.                 case 180:
  53.                     if(board[X/dx][Y/dy-1]) {
  54.                         turnRight(90);
  55.                     }
  56.                     break;
  57.                 case 270:
  58.                     if(board[X/dx-1][Y/dy]) {
  59.                         turnRight(90);
  60.                     }
  61.                     break;
  62.             }
  63.            
  64.             ahead(2*dx);
  65.         }
  66.     }
  67.    
  68.     @Override
  69.     public void onStatus(StatusEvent event) {
  70.         this.robotstatus = event.getStatus();
  71.     }
  72.    
  73.     @Override
  74.     public void onHitRobot(HitRobotEvent e) {
  75.         turnRight(90);
  76.     }
  77.    
  78.     @Override
  79.     public void onHitWall(HitWallEvent e) {
  80.         turnRight(90);
  81.     }
  82.    
  83.     @Override
  84.     public void onScannedRobot(ScannedRobotEvent e) {
  85.         double enemy_ang = e.getBearing();
  86.         double dist = e.getDistance();
  87.         enX = (dist * Math.sin(Math.toRadians(robotstatus.getHeading() + enemy_ang)) + robotstatus.getX() - 20);
  88.         enY = (dist * Math.cos(Math.toRadians(robotstatus.getHeading() + enemy_ang)) + robotstatus.getY() - 20);
  89.        
  90.         entX = (int)(enX/dx + 0.5d);
  91.         entY = (int)(enY/dy + 0.5d);
  92.        
  93.         for(int i=0; i<2; i++) {
  94.             for(int j=0; j<2; j++) {
  95.                 board[entX+i][entY+j] = true;
  96.             }
  97.         }
  98.     }
  99.    
  100.     @Override
  101.     public void onPaint(Graphics2D g) {        
  102.         for(int i=0; i<40; i++) {
  103.             for(int j=0; j<40; j++) {
  104.                 if(!board[i][j]) {
  105.                     g.setColor(Color.green);
  106.                 } else {
  107.                     g.setColor(Color.red);
  108.                 }
  109.                 g.drawRect(i*dx, j*dy, dx, dy);
  110.                
  111.                 if(me[i][j]) {
  112.                     g.setColor(Color.blue);
  113.                     g.drawRect(i*dx, i*dy, dx, dy);
  114.                 }
  115.             }
  116.         }
  117.     }
  118.    
  119.     void radar() {
  120.         if(radar_dir) turnRadarRight(radar_angle);
  121.         else turnRadarLeft(radar_angle);
  122.         radar_dir = !radar_dir;
  123.     }
  124. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement