本文将简要概述如何每一代在这段代码中计算。这绝对不是处理记忆或做计算的最有效的方法。<strong>请你们拿出让这个过程更有效</strong>!在这段代码中,生命都是一个字节的内存。它需要外部SRAM来存储所有的生命形式(除非你使用一个Arduino MEGA)。SPI通信速度慢,所以计算速度是有限的。
附上代码。
如果你想要<strong>更多的信息</strong>,你可以查看附件我有我的涂鸦。
生成初始的随机状态->一
/ *******************这个函数生成随机********************* / initialrandom() { void
为(int i = 0;i < 8064;i++){ SRAM。write_stream(我,pixoff,1);} 为(int i = 0;i <坐;i++){ int randx =随机(0,84); int兰迪=随机(0、48); 显示。drawpixel(randx、兰迪、黑); / / randx和兰迪写同一件事的nopixel矩阵 SRAM。write_stream((84×兰迪+ randx),Pixon,1); } 显示。打印(0);/ *************************可以禁用这里的代数******************* / 显示。设置鼠标指针(0、40);
这部分代码选择随机像素打开。该生物的密度取决于电位器阅读。该代码显示这些像素和他们也一部分的SRAM,我会打电话给“写道:”。
从A到B的计算
/ *********************计算产生从1到2 ******************* / void calcNextGen() { //goes from 1 to 2 // for (i = 4032; i<8064 ; i++) {SRAM.write_stream(i, pixoff, 1);} //clear 2 for (i = 0; i < 4032 ; i++) { numNeighbors = 0; //reset neighbors per pixel SRAM.read_stream(i, income, 1); x = (i) % 84; y = (i - x) / 84; findNeighbors(x, y); //[AxAy+BxBy+CxCy+DxDy+ExEy+FxFy+GxGy+HxHy] numNeighbors = countNeighbors(Ax, Ay) + countNeighbors(Bx, By) + countNeighbors(Cx, Cy) + countNeighbors(Dx, Dy) + countNeighbors(Ex, Ey) + countNeighbors(Fx, Fy) + countNeighbors(Gx, Gy) + countNeighbors(Hx, Hy); //<2||>3 DIE, =3 LIVE, =2 same if (numNeighbors == 2) { //do nothing } else if (numNeighbors == 3) { SRAM.write_stream(i + 4032, pixon, 1); } else { SRAM.write_stream(i + 4032, pixoff, 1); } } }
这部分代码看起来像素的状态”。
考平的游戏人生,这部分代码计数的邻居数量(8周围像素)细胞来确定它的下一个状态(死的或活的)。如果有2个邻居,一个细胞是它的当前状态。如果有3个邻居,一个细胞会活着还是活着的。其他任何数量的邻居,细胞会死。如果你看<em>countneighbors()</em>和<em>findneighbors()</em>附件中的代码,你会发现更多的细节。
在确定一个细胞的未来状态,新的状态存储在SRAM的“B”。
输出B到A
/ *********************从2显示***************************** / 无效dispgen() { // 2显示 为(i = 4032;i < 8064;i++){ SRAM。read_stream(我的收入,1); X =(I - 4032)% 84; y =(I - 4032 - x)/ 84; 如果(收入[ 0 ] = =“W”) { 显示。drawpixel(X,Y,黑色); SRAM。write_stream(I - 4032的像元,1); } 别的 { 显示。drawpixel(x,y,白色); SRAM。write_stream(我4032、pixoff,1);} } generationcount + +; 显示。打印(generationcount);/ *************************可以禁用生成数这里******************* / 显示。设置灯光(0
在这一步中,储存在“B”会显示并存储在一个“SRAM是什么。”B“在下一个周期。
#p#分页标题#e#-
生成初始的随机状态,商店这是一款“A”的SRAM
-
计算从“一”到“B”在SRAM。
-
输出“B”“”在SRAM展示
重复步骤2和3直到永远!