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