test/lpfklife.c

changeset 10
f76c929f65e6
parent 9
1519a9a8d924
     1.1 diff -r 1519a9a8d924 -r f76c929f65e6 test/lpfklife.c
     1.2 --- a/test/lpfklife.c	Tue Aug 26 22:13:49 2008 +0100
     1.3 +++ b/test/lpfklife.c	Wed Sep 03 17:15:47 2008 +0100
     1.4 @@ -5,6 +5,8 @@
     1.5  #include <string.h>
     1.6  #include "liblpfk.h"
     1.7  
     1.8 +#define LIFE_ALGORITHM_NAIVE
     1.9 +
    1.10  /************************
    1.11   * copied from http://linux-sxs.org/programming/kbhit.html
    1.12   */
    1.13 @@ -153,19 +155,79 @@
    1.14  				nei = 0;
    1.15  
    1.16  				// count neighbours
    1.17 +#ifdef LIFE_ALGORITHM_NAIVE
    1.18 +				/// NAIVE ALGORITHM
    1.19 +				// Assumes every cell outside the grid is dead.
    1.20  				if (y > 0) {
    1.21  					if (x > 0) { if (old_gamegrid[y-1][x-1]) nei++; }
    1.22  					if (old_gamegrid[y-1][x]) nei++;
    1.23  					if (x < 5) { if (old_gamegrid[y-1][x+1]) nei++; }
    1.24  				}
    1.25 +
    1.26  				if (x > 0) { if (old_gamegrid[y][x-1]) nei++; }
    1.27  				// old_gamegrid[x][y] is us!
    1.28  				if (x < 5) { if (old_gamegrid[y][x+1]) nei++; }
    1.29 +
    1.30  				if (y < 5) {
    1.31  					if (x > 0) { if (old_gamegrid[y+1][x-1]) nei++; }
    1.32  					if (old_gamegrid[y+1][x]) nei++;
    1.33  					if (x < 5) { if (old_gamegrid[y+1][x+1]) nei++; }
    1.34  				}
    1.35 +#else
    1.36 +				/// WRAPPING ALGORITHM
    1.37 +				// Accesses off of one side of the grid are wrapped to the
    1.38 +				// opposite side.
    1.39 +				//
    1.40 +				// WARNING: this algorithm has NOT been extensively tested,
    1.41 +				// and completely screws up the glider test.
    1.42 +				//
    1.43 +				// TODO: test and debug:
    1.44 +				if (y > 0) {
    1.45 +					if (x > 0)	{ if (old_gamegrid[y-1][x-1]) nei++; }
    1.46 +						else	{ if (old_gamegrid[y-1][5]) nei++; }
    1.47 +
    1.48 +					if (old_gamegrid[y-1][x]) nei++;
    1.49 +
    1.50 +					if (x < 5)	{ if (old_gamegrid[y-1][x+1]) nei++; }
    1.51 +						else	{ if (old_gamegrid[y-1][0]) nei++; }
    1.52 +				} else {
    1.53 +					if (x > 0)	{ if (old_gamegrid[5][x-1]) nei++; }
    1.54 +						else	{ if (old_gamegrid[5][5]) nei++; }
    1.55 +						
    1.56 +					if (old_gamegrid[y-1][x]) nei++;
    1.57 +
    1.58 +					if (x < 5)	{ if (old_gamegrid[5][x+1]) nei++; }
    1.59 +						else	{ if (old_gamegrid[5][0]) nei++; }
    1.60 +				}
    1.61 +
    1.62 +
    1.63 +				if (x > 0)	{ if (old_gamegrid[y][x-1]) nei++; }
    1.64 +					else	{ if (old_gamegrid[y][5]) nei++; }
    1.65 +
    1.66 +				// old_gamegrid[x][y] is us!
    1.67 +
    1.68 +				if (x < 5)	{ if (old_gamegrid[y][x+1]) nei++; }
    1.69 +					else	{ if (old_gamegrid[y][0]) nei++; }
    1.70 +
    1.71 +
    1.72 +				if (y < 5) {
    1.73 +					if (x > 0) { if (old_gamegrid[y+1][x-1]) nei++; }
    1.74 +						else	{ if (old_gamegrid[y+1][5]) nei++; }	///
    1.75 +
    1.76 +					if (old_gamegrid[y+1][x]) nei++;
    1.77 +
    1.78 +					if (x < 5) { if (old_gamegrid[y+1][x+1]) nei++; }
    1.79 +						else	{ if (old_gamegrid[y+1][0]) nei++; }	///
    1.80 +				} else {
    1.81 +					if (x > 0) { if (old_gamegrid[y+1][x-1]) nei++; }
    1.82 +						else	{ if (old_gamegrid[y+1][5]) nei++; }	///
    1.83 +
    1.84 +					if (old_gamegrid[y+1][x]) nei++;
    1.85 +
    1.86 +					if (x < 5) { if (old_gamegrid[y+1][x+1]) nei++; }
    1.87 +						else	{ if (old_gamegrid[y-1][0]) nei++; }	///
    1.88 +				}
    1.89 +#endif
    1.90  
    1.91  				// so what happens to our cell?
    1.92  				if (old_gamegrid[y][x]) {