title: Game of Life Processing
body: <pre class="lang-java prettyprint-override"><code>    import processing.core.PApplet;
  
      public class gl extends PApplet {
  
      static int neighborCount;
      static int screenRows;
      int tNC; // Temporary Neighbor Count
      int newState;
  
      int columns = 960;
      int rows = 477;
  
      int[][] cells = new int[columns][rows];
      int[][] newGen = new int[columns][rows];
  
      public static void main(String[] args) {
          PApplet.main("gl");
      }
  
      public void settings() {
          size(1920, 955);
      }
  
      public void setup() {
          // Set background white and all of cells[][] to 0 or 1
          screenRows = 0;
          background(255);
          for (int j = 0; j &lt; (rows / 2); j++) {
              for (int i = 0; i &lt; (columns / 2); i++) {
                  cells[i][j] = (int) random(0, 2);
              }
          }
      }
  
      public void draw() {
          // If program has finished generating this frame, reset everything and set cells[][] equal to newGen[][]
          if (screenRows &gt; (height / 2)) {
              screenRows = 0;
              System.out.println("End of generation reached");
              background(255);
              cells = newGen.clone();
              for (int i = 0; i &lt; columns; i++) {
                  for (int j = 0; j &lt; rows; j++) {
                      newGen[i][j] = 0;
                  }
              }
          }
          // Go through every element in cells[][], determine it's value, and display it
          for (int x = 1; x &lt; (width / 2) - 1; x++) {
              for (int y = 1; y &lt; (height / 2) - 1; y++) {
  
                  printCell(x, y);
              }
          }
          screenRows++;
  
      }
  
      public void printCell(int x, int y) {
          setCellState(x, y);
  
          if (newGen[x][y] == 0) {
              stroke(255);
              fill(255);
  
          } else if (newGen[x][y] == 1) {
              stroke(0);
              fill(0);
  
          }
          System.out.println(x + ", " + y);
          rect(x, y, 2, 2);
      }
  
      public void setCellState(int x, int y) {
          tNC = getNeighborCount(x, y);
          neighborCount = 0;
          System.out.println(tNC);
  
          if (tNC &lt; 2) { // If less than 2 neighbors, cell dead
              newGen[x][y] = 0;
  
          } else if (tNC &gt; 3) { // If more than 3 neighbors, cell dead
              newGen[x][y] = 0;
  
          } else if ((tNC == 2 || tNC == 3) &amp;&amp; cells[x][y] == 1) { // If 2 or 3 neighbors and cell is alive, do nothing (unnecessary statement but makes visualizing easier)
  
          } else if (tNC == 3 &amp;&amp; cells[x][y] == 0) { // If 3 neighbors and cell is dead, cell is alive
              newGen[x][y] = 1;
  
          } else if (tNC == 2 &amp;&amp; cells[x][y] == 0) { // If 2 neighbors and cel is dead, do nothing (also unnecessary)
  
          } else {
              System.out.println("Error in setCellState(int, int);"); // In event of none of the conditions being met
          }
          tNC = 0; // Reset variable (probably unnecessary but might as well)
      }
  
      public int getNeighborCount(int x, int y) {
          // Go through each cell adjacent or diagonal to the cell and add it's value (0 or 1) to neighborCount
          for (int i = -1; i &lt; 2; i++) {
              for (int j = -1; j &lt; 2; j++) {
                  neighborCount += cells[i + x][j + y];
              }
          }
          // Subtract the value of the cell being evaluated from neighborCount as that is not a factor in the sum of the neighbors
          neighborCount -= cells[x][y];
          return neighborCount;
      }
  }
  </code></pre>
  
  <p><a href="http://pastebin.com/Ycu9mYSQ" rel="nofollow"><em>Pastebin</em></a></p>
  
  <p>I am just going for functionality over speed, for now.</p>
  
  <p>I am attempting to code Conway's Game of Life using Processing in Eclipse. The above code is dysfunctional in multiple ways:</p>
  
  <p>The generation displayed appears much smaller in the window than I want to be. It only takes up a fraction of the window despite my efforts to counterbalance this by making each cell 2x2 pixels and half as many rows and columns as the window is tall and wide.</p>
  
  <p>Also, the generation does not appear to update in the window after the first generation is displayed after a few seconds.</p>
  
  <p>I noticed that the variable tNC is often equal to 0 when it should be equal to any number from 0 to 7.</p>