Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //I know it's shit. I wrote it to get more familiar with Java
- class GameOfLife
- {
- static int field[][];
- static int width;
- static int height;
- public static void main (String args[])
- {
- width = 20;
- height = 20;
- field = new int[width][height];
- field[1][0] = 1;
- field[2][1] = 1;
- field[0][2] = 1;
- field[1][2] = 1;
- field[2][2] = 1;
- int i = 0;
- while (i != 5)
- {
- print();
- try //just why
- {
- Thread.sleep(100);
- }
- catch(InterruptedException exception)
- {
- Thread.currentThread().interrupt();
- }
- iterate();
- //i += 1;
- }
- }
- public static void iterate()
- {
- int nextField[][] = new int[width][height];
- int i,j;
- int xLimit = width - 1;
- int yLimit = height - 1;
- int numberOfNeighbours = 0; //top left
- if (field[1][0] == 1) numberOfNeighbours += 1;
- if (field[1][1] == 1) numberOfNeighbours += 1;
- if (field[0][1] == 1) numberOfNeighbours += 1;
- nextField[0][0] = processNeighbours(field[0][0], numberOfNeighbours);
- numberOfNeighbours = 0; //top right
- if (field[xLimit - 1][0] == 1) numberOfNeighbours += 1;
- if (field[xLimit - 1][1] == 1) numberOfNeighbours += 1;
- if (field[xLimit][1] == 1) numberOfNeighbours += 1;
- nextField[xLimit][0] = processNeighbours(field[xLimit][0], numberOfNeighbours);
- numberOfNeighbours = 0; //bottom left
- if (field[0][yLimit - 1] == 1) numberOfNeighbours += 1;
- if (field[1][yLimit - 1] == 1) numberOfNeighbours += 1;
- if (field[1][yLimit] == 1) numberOfNeighbours += 1;
- nextField[0][yLimit] = processNeighbours(field[0][yLimit], numberOfNeighbours);
- numberOfNeighbours = 0; //bottom right
- if (field[xLimit - 1][yLimit] == 1) numberOfNeighbours += 1;
- if (field[xLimit - 1][yLimit - 1] == 1) numberOfNeighbours += 1;
- if (field[xLimit ][yLimit - 1] == 1) numberOfNeighbours += 1;
- nextField[xLimit][yLimit] = processNeighbours(field[xLimit][yLimit], numberOfNeighbours);
- for (i = 1; i < xLimit - 1; i++) //top row
- {
- numberOfNeighbours = 0;
- if (field[i-1][0] == 1) numberOfNeighbours += 1;
- if (field[i-1][1] == 1) numberOfNeighbours += 1;
- if (field[i][1] == 1) numberOfNeighbours += 1;
- if (field[i+1][1] == 1) numberOfNeighbours += 1;
- if (field[i+1][0] == 1) numberOfNeighbours += 1;
- nextField[i][0] = processNeighbours(field[i][0], numberOfNeighbours);
- }
- for (j = 1; j < yLimit - 1; j++) //left row
- {
- numberOfNeighbours = 0;
- if (field[0][j-1] == 1) numberOfNeighbours += 1;
- if (field[1][j-1] == 1) numberOfNeighbours += 1;
- if (field[1][j] == 1) numberOfNeighbours += 1;
- if (field[1][j+1] == 1) numberOfNeighbours += 1;
- if (field[0][j+1] == 1) numberOfNeighbours += 1;
- nextField[0][j] = processNeighbours(field[j][yLimit], numberOfNeighbours);
- }
- for (i = 1; i < xLimit - 1; i++) //bottom row
- {
- numberOfNeighbours = 0;
- if (field[i-1][yLimit] == 1) numberOfNeighbours += 1;
- if (field[i-1][yLimit - 1] == 1) numberOfNeighbours += 1;
- if (field[i][yLimit - 1] == 1) numberOfNeighbours += 1;
- if (field[i+1][yLimit - 1] == 1) numberOfNeighbours += 1;
- if (field[i+1][yLimit] == 1) numberOfNeighbours += 1;
- nextField[i][yLimit] = processNeighbours(field[i][yLimit], numberOfNeighbours);
- }
- for (j = 1; i < yLimit - 1; j++) //right row
- {
- numberOfNeighbours = 0;
- if (field[xLimit][j-1] == 1) numberOfNeighbours += 1;
- if (field[xLimit - 1][j-1] == 1) numberOfNeighbours += 1;
- if (field[xLimit - 1][j] == 1) numberOfNeighbours += 1;
- if (field[xLimit - 1][j+1] == 1) numberOfNeighbours += 1;
- if (field[xLimit][j+1] == 1) numberOfNeighbours += 1;
- nextField[xLimit][j] = processNeighbours(field[xLimit][j], numberOfNeighbours);
- }
- for (i = 1; i < xLimit - 1; i++) //the rest
- {
- for (j = 1; j < yLimit - 1; j++)
- {
- numberOfNeighbours = 0;
- if (field[i-1][j-1] == 1) numberOfNeighbours += 1;
- if (field[i-1][j] == 1) numberOfNeighbours += 1;
- if (field[i-1][j+1] == 1) numberOfNeighbours += 1;
- if (field[i][j+1] == 1) numberOfNeighbours += 1;
- if (field[i+1][j+1] == 1) numberOfNeighbours += 1;
- if (field[i+1][j] == 1) numberOfNeighbours += 1;
- if (field[i+1][j-1] == 1) numberOfNeighbours += 1;
- if (field[i][j-1] == 1) numberOfNeighbours += 1;
- nextField[i][j] = processNeighbours(field[i][j], numberOfNeighbours);
- }
- }
- field = nextField;
- }
- public static int processNeighbours(int value, int numberOfNeighbours)
- {
- //if (numberOfNeighbours != 0) System.out.print(numberOfNeighbours + ", ");
- if (value == 1)
- {
- if (numberOfNeighbours == 2 || numberOfNeighbours == 3) return 1;
- else return 0;
- }
- else if (numberOfNeighbours == 3) return 1;
- else return 0;
- }
- public static void print()
- {
- /*try
- {
- Runtime.getRuntime().exec("clear");
- }
- catch (java.io.IOException exception)
- {
- exception.printStackTrace();
- }*/
- for (int i = 0; i < 100; i++) System.out.println("");
- for (int j = 0; j < height; j++)
- {
- for (int i = 0; i < width; i++)
- {
- System.out.print(field[i][j]);
- }
- System.out.println("");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment