Advertisement
Guest User

Program

a guest
Jun 9th, 2014
18
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.65 KB | None | 0 0
  1. /*
  2. * NOTE: THIS IS THE MAIN METHOD
  3. */
  4.  
  5.  
  6. package chessboard;
  7.  
  8. public class ChessBoardMain {
  9.  
  10.     public static void main(String[] args) {
  11.        
  12.         int moves = Integer.parseInt(args[0]);
  13.         Coordinate start = new Coordinate(0,0);
  14.        
  15.         Knight knight = new Knight(start);
  16.         for(int j=0; j < 10; ++j){
  17.             for(int i=0; i<moves; ++i){
  18.                 knight.move(knight);
  19.             }
  20.             Coordinate end = knight.getPos();
  21.            
  22.             System.out.println("(" + end.getX() + "," + end.getY() + ")");
  23.         }      
  24.     }
  25.  
  26. }
  27.  
  28. /*
  29. * NOTE: COORDINATE CLASS
  30. */
  31.  
  32. package chessboard;
  33.  
  34. public class Coordinate {
  35.  
  36.     private int x;
  37.     private int y;
  38.  
  39.     public Coordinate(int x, int y){
  40.         this.x = x;
  41.         this.y = y;
  42.     }
  43.     public int getX(){
  44.         return x;
  45.     }
  46.     public int getY(){
  47.         return y;
  48.     }
  49. }
  50.  
  51. /*
  52. * NOTE: KNIGHT CLASS, THIS IS THE MAIN BRAIN OF THE PROGRAM
  53. */
  54.  
  55. package chessboard;
  56.  
  57. import java.util.ArrayList;
  58.  
  59. public class Knight {
  60.    
  61.     private Coordinate currentPos;
  62.    
  63.     public Knight(Coordinate currentPos){
  64.         this.currentPos = currentPos;
  65.     }
  66.    
  67.     public void move(Knight knight){
  68.         Coordinate movePos = currentPos;
  69.        
  70.         int x = movePos.getX();
  71.         int y = movePos.getY();
  72.        
  73.         ArrayList<Integer> validMove = new ArrayList<Integer>();
  74.        
  75.         if (isValid(x - 2, y + 1)) {
  76.             validMove.add(0);
  77.         }
  78.         if (isValid(x - 1, y + 2)) {
  79.             validMove.add(1);
  80.         }
  81.         if (isValid(x + 2, y + 2)) {
  82.             validMove.add(2);
  83.         }
  84.         if (isValid(x + 2, y + 1)) {
  85.             validMove.add(3);
  86.         }
  87.         if (isValid(x + 2, y - 1)) {
  88.             validMove.add(4);
  89.         }
  90.         if (isValid(x + 1, y - 2)) {
  91.             validMove.add(5);
  92.         }
  93.         if (isValid(x - 1, y - 2)) {
  94.             validMove.add(6);
  95.         }
  96.         if (isValid(x - 2, y - 1)) {
  97.             validMove.add(7);
  98.         }
  99.        
  100.         int indexRand = (int) (Math.random()*(validMove.size() - 1));
  101.         int numOption = validMove.get(indexRand);
  102.        
  103.         switch(numOption){
  104.         case 0: currentPos = new Coordinate(x-2,y+1);
  105.                 break;
  106.         case 1: currentPos = new Coordinate(x-1,y+2);
  107.                 break;
  108.         case 2: currentPos = new Coordinate(x+1,y+2);
  109.                 break;
  110.         case 3: currentPos = new Coordinate(x+2,y+1);
  111.                 break;
  112.         case 4: currentPos = new Coordinate(x+2,y-1);
  113.                 break;
  114.         case 5: currentPos = new Coordinate(x+1,y-2);
  115.                 break;
  116.         case 6: currentPos = new Coordinate(x-1,y-2);
  117.                 break;
  118.         case 7: currentPos = new Coordinate(x-2,y-1);
  119.                 break;
  120.  
  121.         }
  122.     }
  123.  
  124.     public boolean isValid(int x, int y) {
  125.         if(x <= 8 && y <= 8 && x >= 0 && y>=0){
  126.             return true;
  127.         }
  128.         else return false;
  129.     }
  130.    
  131.     public boolean contains(int n, int[] array){
  132.         for(int i=0; i < array.length; ++i){
  133.             if(array[i] == n){
  134.                 return true;
  135.             }
  136.         }
  137.         return false;
  138.     }
  139.    
  140.     public Coordinate getPos(){
  141.         return currentPos;
  142.     }
  143.    
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement