/**//********\**生命游戏**\********/“生命游戏”的小游戏。Life游戏实际上是一种模拟,并不是游戏者之间的游戏。它在一个无边界的矩形网格上进行,这个矩形网格中的每个单元可被一个有机体占据,或者不被占据。被占据的单元称为活的,未被占据的单元称位死的。哪个单元是活的要根据其周围活的邻居单元数目而一代代地发生变化。游戏规则如下:,水平或对角上相界的8个单元。,但没有邻居单元是活的,或者仅有一个邻居单元是活的,则在下一代,此单元会因为孤独而死亡。,则该单元在下一代也是活的。,则在下一代,如果它刚好有3个邻居单元是活的,则此单元变成活的。所有其它死的单元在下一代仍然是死的。,且有4个或者4个以上邻居单元是活的,则在下一代,此单元会因为拥塞而死亡。,则此单元的死亡有助于另一个单元的出生,但它不能通过减少拥塞而阻止其他单元的死亡;正在出生的单元也不能保护或者杀死上一代中活的单元。依此规则进行迭代变化,使单元生生死死,会得到一些有趣的结果。该游戏之所以被称为“生命游戏”,是因为其简单的游戏规则,反映了自然界中的生存规律:如果一个生命,其周围的同类生命太少的话,会因为得不到帮助而死亡;如果太多,则会因为得不到足够的资源而死亡。用计算机模拟这个“生命游戏”设定图像中的初始配置后依据上述的游戏规则演绎生命的变化,由于初始状态和迭代次数不同,将会得到各种的优美图案。/*************************************************************************************************/#include<>#include<>#include<>#defineESC0x11b#defineforever1/*************************************************************************************************/intnow_life[1+50+1][1+50+1];/*当前单元并加两行两列作为监视哨*/intnext_life[1+50+1][1+50+1];/*下一代单元1表示存活0表示死亡*/intback_color=15;/*设置背景颜色*/intrim_color=9;/*设置边框颜色*/intdraw_color=4;/*设置单元颜色*/intcounter=0;/*计算迭代次数*/charst_counter[5]="0";/*将迭代次数转变为字符串*//*************************************************************************************************/voidset_life();/*游戏初值设置*/voidinit_game();/*初始化游戏界面*/voidcount_life(intcounter);/*显 示迭代次数*/voiddraw_life();/*画出或者删除游戏单元*/voidrule_life();/*游戏规则*/voidend_life();/*显示终结状态*//*************************************************************************************************/voidmain(){intkey,i;intdriver=VGA,mode=VGAHI;initgraph(&driver,&mode,"");init_game();/*初始化游戏*/set_life();draw_life();getch();while(forever)/*无限循环*/{rule_life();draw_life();counter++;count_life(counter);key=bioskey(0);if(key==ESC)/*退出游戏*/break;else;}closegraph();}intnext_life[1+50+1][1+50+1];/*下一代单元1表示存活0表示死亡*/intback_color=15;/*设置背景颜色*/intrim_color=9;/*设置边框颜色*/intdraw_c
生命游戏 来自淘豆网m.daumloan.com转载请标明出处.