Advertisement
calcpage

Chess960V3.java

Mar 7th, 2012
487
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 2.55 KB | None | 0 0
  1. /*
  2. Chess960V3.java     MrG     2012.0227
  3. purpose:    randomly find all 960 Fischer Chess Board combinations
  4. required files: Chess960V3.java             main class
  5.         EasyWriter.java             file I/O class
  6. translator: javac Chess960V3.java
  7. interpreter:    java Chess960V3
  8. */
  9.  
  10. //imported classes
  11. import java.util.Random;
  12. import java.util.ArrayList;
  13.  
  14. //main class
  15. public class Chess960V3
  16. {
  17.     public static final int BOARD_SIZE = 8;
  18.     public static final int EVE = 0;
  19.     public static final int ODD = 1;
  20.     public static void main(String[] args)
  21.     {
  22.         int printCount = 1;
  23.  
  24.         ArrayList<String[]> foo = new ArrayList<String[]>();
  25.  
  26.         initList(foo);
  27.         System.out.println(printCount + "\t" +toString(foo.get(0)));
  28.    
  29.         while(printCount<960)
  30.         {
  31.             String[] whitePieces = new String[BOARD_SIZE];
  32.             setBishop(whitePieces,EVE);
  33.             setBishop(whitePieces,ODD);
  34.             setRandom(whitePieces,"Q");
  35.             setRandom(whitePieces,"N");
  36.             setRandom(whitePieces,"N");
  37.             setFirstOpen(whitePieces,"R");
  38.             setFirstOpen(whitePieces,"K");
  39.             setFirstOpen(whitePieces,"R");
  40.             if(!foundB(whitePieces,foo))
  41.             {
  42.                 System.out.println(printCount + "\t" +toString(whitePieces));
  43.                 foo.add(whitePieces);
  44.                 printCount++;
  45.             }
  46.         }
  47.         fileList(foo);
  48.     }
  49.  
  50.     public static void fileList(ArrayList<String[]> bar)
  51.     {
  52.         EasyWriter ross = new EasyWriter("960.txt");
  53.         for(int j = 0; j<bar.size(); j++)
  54.         {
  55.             ross.println(j + "\t" + toString(bar.get(j)));
  56.         }
  57.         ross.close();
  58.     }
  59.  
  60.     public static void initList(ArrayList<String[]> bar)
  61.     {
  62.         String[] bob = {"R","N","B","Q","K","B","N","R"};
  63.         bar.add(bob);
  64.     }
  65.  
  66.     public static boolean foundB(String[] wP, ArrayList<String[]> bar)
  67.     {
  68.         for(String[] board : bar)
  69.         {
  70.             if(sameB(board,wP))
  71.             {
  72.                 return true;
  73.             }
  74.         }
  75.         return false;
  76.     }
  77.  
  78.     public static boolean sameB(String[] b1, String[] b2)
  79.     {
  80.         for(int i=0; i<b1.length; i++)
  81.         {
  82.             if(!b1[i].equals(b2[i]))
  83.             {
  84.                 return false;
  85.             }
  86.         }
  87.         return true;
  88.     }
  89.  
  90.     public static void setFirstOpen(String[] wP, String piece)
  91.     {
  92.         int pos = 0;
  93.         while(wP[pos]!=null)
  94.         {
  95.             pos++;
  96.         }
  97.         wP[pos]=piece;
  98.     }
  99.  
  100.     public static void setRandom(String[] wP, String piece)
  101.     {
  102.         int pos;
  103.         Random die = new Random();
  104.         do
  105.         {
  106.             pos=die.nextInt(BOARD_SIZE);
  107.         }
  108.         while(wP[pos]!=null);
  109.         wP[pos]=piece;
  110.     }
  111.  
  112.     public static void setBishop(String[] wP, int offset)
  113.     {
  114.         Random die = new Random();
  115.         wP[offset+die.nextInt(4)*2]="B";
  116.     }
  117.  
  118.     public static String toString(String[] wP)
  119.     {
  120.         String temp = "";
  121.         for(int k=0; k<wP.length; k++)
  122.         {
  123.             temp += wP[k];
  124.         }
  125.         return temp;
  126.     }
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement