Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.87 KB | None | 0 0
  1. package model;
  2.  
  3. public class FlexibleBot extends Bot{
  4.  
  5.     public FlexibleBot(Location loc, int id, Directions dir, int moveSpeed){
  6.         super(loc, id, dir);
  7.         setMoveSpeed(moveSpeed);
  8.     }
  9.     @Override
  10.     public boolean move(Map m){
  11.         boolean moved=super.move(m);
  12.         int spacesToMove=getMoveSpeed();
  13.         int turnCount=0;
  14.         int distance=distanceToEntityOrEdge(m);
  15.         System.out.println("DIstance: "+distance);
  16.         //do flex move
  17.         if(!moved){
  18.             System.out.println("In flex move here");
  19.             while(spacesToMove>0&&turnCount<4) {
  20.                 if(distance==0){
  21.                     System.out.println("turned");
  22.                     turn();
  23.                     turnCount++;
  24.                 }//turned
  25.                 else{
  26.                     if(spacesToMove>=distance){
  27.                         moveNumSpaces(distance,m);
  28.                         spacesToMove-=distance;
  29.                         System.out.println("Moved: "+distance);
  30.                     }
  31.                     else{
  32.                         moveNumSpaces(spacesToMove,m);
  33.                         System.out.println("Moved: "+spacesToMove);
  34.                         spacesToMove-=spacesToMove;
  35.                     }
  36.                     turnCount=0;
  37.                 }//moved
  38.                 distance=distanceToEntityOrEdge(m);
  39.             }//end while
  40.             moved=turnCount<4;
  41.         }
  42.  
  43.         return moved;
  44.     }
  45.  
  46.  
  47.     public int distanceToEntityOrEdge(Map m){
  48.         int distance=getMoveSpeed();
  49.         int count=0;
  50.         boolean pathClear=true;
  51.  
  52.         if(distance>=botDistanceFromEdge()){
  53.             distance=botDistanceFromEdge();
  54.         }
  55.         while (pathClear && count < distance) {
  56.              switch(getDirection()){
  57.                 case UP:{
  58.                     if(validCell(m,getLoc().getRow() - count - 1,getLoc().getCol())){
  59.                         System.out.println("counted: "+count);
  60.                         count++;
  61.                     }
  62.                     else{
  63.                         pathClear=false;
  64.                     }
  65.                     break;
  66.                 }
  67.                 case DOWN:{
  68.                     if(validCell(m,getLoc().getRow() + count + 1,getLoc().getCol())){
  69.                         System.out.println("counted: "+count);
  70.                         count++;
  71.                     }
  72.                     else{
  73.                         pathClear=false;
  74.                     }
  75.                     break;
  76.                 }
  77.                 case LEFT:{
  78.                     if(validCell(m, getLoc().getRow(),getLoc().getCol() - count - 1)){
  79.                         System.out.println("counted: "+count);
  80.                         count++;
  81.                     }
  82.                     else{
  83.                         pathClear=false;
  84.                     }
  85.                     break;
  86.                 }
  87.                 case RIGHT:{
  88.                     if(validCell(m,getLoc().getRow(),getLoc().getCol() + count + 1)){
  89.                         System.out.println("counted: "+count);
  90.                         count++;
  91.                     }
  92.                     else{
  93.                         pathClear=false;
  94.                     }
  95.                     break;
  96.                 }
  97.             }
  98.         }//end while
  99.  
  100.         return count;
  101.     }
  102.  
  103.     public void speedUp(int spdVal){
  104.         setMoveSpeed(getMoveSpeed()+spdVal);
  105.     }
  106.  
  107.     public void speedDown(int spdVal){
  108.         if(getMoveSpeed()-spdVal<0){
  109.             setMoveSpeed(0);
  110.         }
  111.         else {
  112.             setMoveSpeed(getMoveSpeed() - spdVal);
  113.         }
  114.     }
  115.  
  116.     @Override
  117.     public void counterTurn() {
  118.         if(getDirection().compareTo(Directions.UP)>0){
  119.             setDirection(Movable.getPreviousDirection(getDirection()));
  120.         }
  121.         else{
  122.             setDirection(Directions.LEFT);
  123.         }
  124.     }
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement