Abdulg

How not to implement the Game of Life

Nov 1st, 2015
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.09 KB | None | 0 0
  1. //I know it's shit. I wrote it to get more familiar with Java
  2.  
  3. class GameOfLife
  4. {
  5.     static int field[][];
  6.     static int width;
  7.     static int height;
  8.    
  9.     public static void main (String args[])
  10.     {
  11.         width = 20;
  12.         height = 20;
  13.         field = new int[width][height];
  14.        
  15.         field[1][0] = 1;
  16.         field[2][1] = 1;
  17.         field[0][2] = 1;
  18.         field[1][2] = 1;
  19.         field[2][2] = 1;
  20.         int i = 0;
  21.         while (i != 5)
  22.         {
  23.             print();
  24.             try  //just why
  25.             {
  26.                 Thread.sleep(100);
  27.             }
  28.             catch(InterruptedException exception)
  29.             {
  30.                 Thread.currentThread().interrupt();
  31.             }
  32.             iterate();
  33.             //i += 1;
  34.         }
  35.     }
  36.    
  37.     public static void iterate()
  38.     {
  39.         int nextField[][] = new int[width][height];
  40.         int i,j;
  41.         int xLimit = width - 1;
  42.         int yLimit = height - 1;
  43.        
  44.         int numberOfNeighbours = 0; //top left
  45.         if (field[1][0] == 1) numberOfNeighbours += 1;
  46.         if (field[1][1] == 1) numberOfNeighbours += 1;
  47.         if (field[0][1] == 1) numberOfNeighbours += 1;
  48.         nextField[0][0] = processNeighbours(field[0][0], numberOfNeighbours);
  49.        
  50.         numberOfNeighbours = 0; //top right
  51.         if (field[xLimit - 1][0] == 1) numberOfNeighbours += 1;
  52.         if (field[xLimit - 1][1] == 1) numberOfNeighbours += 1;
  53.         if (field[xLimit][1] == 1) numberOfNeighbours += 1;
  54.         nextField[xLimit][0] = processNeighbours(field[xLimit][0], numberOfNeighbours);
  55.        
  56.         numberOfNeighbours = 0; //bottom left
  57.         if (field[0][yLimit - 1] == 1) numberOfNeighbours += 1;
  58.         if (field[1][yLimit - 1] == 1) numberOfNeighbours += 1;
  59.         if (field[1][yLimit] == 1) numberOfNeighbours += 1;
  60.         nextField[0][yLimit] = processNeighbours(field[0][yLimit], numberOfNeighbours);
  61.        
  62.         numberOfNeighbours = 0; //bottom right
  63.         if (field[xLimit - 1][yLimit] == 1) numberOfNeighbours += 1;
  64.         if (field[xLimit - 1][yLimit - 1] == 1) numberOfNeighbours += 1;
  65.         if (field[xLimit ][yLimit - 1] == 1) numberOfNeighbours += 1;
  66.         nextField[xLimit][yLimit] = processNeighbours(field[xLimit][yLimit], numberOfNeighbours);
  67.        
  68.         for (i = 1; i < xLimit - 1; i++) //top row
  69.         {
  70.             numberOfNeighbours = 0;
  71.             if (field[i-1][0] == 1) numberOfNeighbours += 1;
  72.             if (field[i-1][1] == 1) numberOfNeighbours += 1;
  73.             if (field[i][1] == 1) numberOfNeighbours += 1;
  74.             if (field[i+1][1] == 1) numberOfNeighbours += 1;
  75.             if (field[i+1][0] == 1) numberOfNeighbours += 1;
  76.             nextField[i][0] = processNeighbours(field[i][0], numberOfNeighbours);
  77.         }
  78.        
  79.         for (j = 1; j < yLimit - 1; j++) //left row
  80.         {
  81.             numberOfNeighbours = 0;
  82.             if (field[0][j-1] == 1) numberOfNeighbours += 1;
  83.             if (field[1][j-1] == 1) numberOfNeighbours += 1;
  84.             if (field[1][j] == 1) numberOfNeighbours += 1;
  85.             if (field[1][j+1] == 1) numberOfNeighbours += 1;
  86.             if (field[0][j+1] == 1) numberOfNeighbours += 1;
  87.             nextField[0][j] = processNeighbours(field[j][yLimit], numberOfNeighbours);
  88.         }
  89.        
  90.         for (i = 1; i < xLimit - 1; i++) //bottom row
  91.         {
  92.             numberOfNeighbours = 0;
  93.             if (field[i-1][yLimit] == 1) numberOfNeighbours += 1;
  94.             if (field[i-1][yLimit - 1] == 1) numberOfNeighbours += 1;
  95.             if (field[i][yLimit - 1] == 1) numberOfNeighbours += 1;
  96.             if (field[i+1][yLimit - 1] == 1) numberOfNeighbours += 1;
  97.             if (field[i+1][yLimit] == 1) numberOfNeighbours += 1;
  98.             nextField[i][yLimit] = processNeighbours(field[i][yLimit], numberOfNeighbours);
  99.         }
  100.        
  101.         for (j = 1; i < yLimit - 1; j++) //right row
  102.         {
  103.             numberOfNeighbours = 0;
  104.             if (field[xLimit][j-1] == 1) numberOfNeighbours += 1;
  105.             if (field[xLimit - 1][j-1] == 1) numberOfNeighbours += 1;
  106.             if (field[xLimit - 1][j] == 1) numberOfNeighbours += 1;
  107.             if (field[xLimit - 1][j+1] == 1) numberOfNeighbours += 1;
  108.             if (field[xLimit][j+1] == 1) numberOfNeighbours += 1;
  109.             nextField[xLimit][j] = processNeighbours(field[xLimit][j], numberOfNeighbours);
  110.         }
  111.        
  112.         for (i = 1; i < xLimit - 1; i++) //the rest
  113.         {
  114.             for (j = 1; j < yLimit - 1; j++)
  115.             {
  116.                 numberOfNeighbours = 0;
  117.                
  118.                 if (field[i-1][j-1] == 1) numberOfNeighbours += 1;
  119.                 if (field[i-1][j] == 1) numberOfNeighbours += 1;
  120.                 if (field[i-1][j+1] == 1) numberOfNeighbours += 1;
  121.                 if (field[i][j+1] == 1) numberOfNeighbours += 1;
  122.                 if (field[i+1][j+1] == 1) numberOfNeighbours += 1;
  123.                 if (field[i+1][j] == 1) numberOfNeighbours += 1;
  124.                 if (field[i+1][j-1] == 1) numberOfNeighbours += 1;
  125.                 if (field[i][j-1] == 1) numberOfNeighbours += 1;
  126.                 nextField[i][j] = processNeighbours(field[i][j], numberOfNeighbours);
  127.             }
  128.         }
  129.        
  130.         field = nextField;
  131.     }
  132.    
  133.     public static int processNeighbours(int value, int numberOfNeighbours)
  134.     {
  135.         //if (numberOfNeighbours != 0) System.out.print(numberOfNeighbours + ", ");
  136.         if (value == 1)
  137.         {
  138.             if (numberOfNeighbours == 2 || numberOfNeighbours == 3) return 1;
  139.             else return 0;
  140.         }
  141.         else if (numberOfNeighbours == 3) return 1;
  142.         else return 0;
  143.     }
  144.    
  145.     public static void print()
  146.     {
  147.         /*try
  148.         {
  149.             Runtime.getRuntime().exec("clear");
  150.         }
  151.         catch (java.io.IOException exception)
  152.         {
  153.             exception.printStackTrace();
  154.         }*/
  155.         for (int i = 0; i < 100; i++) System.out.println("");
  156.        
  157.         for (int j = 0; j < height; j++)
  158.         {
  159.             for (int i = 0; i < width; i++)
  160.             {
  161.                 System.out.print(field[i][j]);
  162.             }
  163.             System.out.println("");
  164.         }
  165.     }
  166. }
Advertisement
Add Comment
Please, Sign In to add comment