I know it's all to do with the blinding inefficiencies of my implementation, which is pretty much brute-force. Any help with speeding it up would be more than appreciated.
if ((Keyboard.GetState().IsKeyDown(Keys.A) && NewGenerationReady) || Keyboard.GetState().IsKeyDown(Keys.S)) { NewGenerationReady = false; for (int i = 1; i < (Window.ClientBounds.Width/8)-1; i++) for (int j = 1; j < (Window.ClientBounds.Height/8)-1; j++) { CellArray[i, j].neighbors = 0; if (CellArray.alive)<br> CellArray[i, j].neighbors++;<br><br> <span class="cpp-keyword">if</span> (CellArray.alive)<br> CellArray[i, j].neighbors++;<br><br> <span class="cpp-keyword">if</span> (CellArray.alive)<br> CellArray[i, j].neighbors++;<br><br> <span class="cpp-keyword">if</span> (CellArray.alive)<br> CellArray[i, j].neighbors++;<br><br> <span class="cpp-keyword">if</span> (CellArray[i, j - <span class="cpp-literal"><span class="cpp-number">1</span></span>].alive)<br> CellArray[i, j].neighbors++;<br><br> <span class="cpp-keyword">if</span> (CellArray.alive)<br> CellArray[i, j].neighbors++;<br><br> <span class="cpp-keyword">if</span> (CellArray.alive)<br> CellArray[i, j].neighbors++;<br><br> <span class="cpp-keyword">if</span> (CellArray[i, j + <span class="cpp-literal"><span class="cpp-number">1</span></span>].alive)<br> CellArray[i, j].neighbors++;<br> }<br><br> <span class="cpp-keyword">foreach</span> (Cell c <span class="cpp-keyword">in</span> CellArray)<br> {<br> <span class="cpp-keyword">if</span> (c.alive)<br> {<br> <span class="cpp-keyword">if</span> (c.neighbors == <span class="cpp-literal"><span class="cpp-number">2</span></span>)<br> c.alive = <span class="cpp-literal">true</span>;<br> <span class="cpp-keyword">else</span> <span class="cpp-keyword">if</span> (c.neighbors == <span class="cpp-literal"><span class="cpp-number">3</span></span>)<br> c.alive = <span class="cpp-literal">true</span>;<br> <span class="cpp-keyword">else</span><br> c.alive = <span class="cpp-literal">false</span>;<br> }<br> <span class="cpp-keyword">else</span> <span class="cpp-keyword">if</span> (!c.alive)<br> {<br> <span class="cpp-keyword">if</span> (c.neighbors == <span class="cpp-literal"><span class="cpp-number">3</span></span>)<br> c.alive = <span class="cpp-literal">true</span>;<br> }<br><br> }<br> }<br><br><br></pre></div><!–ENDSCRIPT–><br><br>Current implementation of the game, at least the part relevant to this question.<br><br><!–EDIT–><span class=editedby><!–/EDIT–>[Edited by - Bromordra on December 11, 2010 2:23:44 AM]<!–EDIT–></span><!–/EDIT–>