生命游戏代码_第1页
生命游戏代码_第2页
生命游戏代码_第3页
生命游戏代码_第4页
生命游戏代码_第5页
已阅读5页,还剩15页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、生命游戏代码1.代码C/C+代码001/002/程序名称:生命游戏003/编译环境:Visual C+ 6.0,EasyX 2011 惊蛰版004/作 者:yan gw80 005/最后修改:2011-5-22006/007#in elude gra phics.h008#in elude 009#in elude 010011012013/ 定义全局变量014_int8 world102102 = 0;/定义二维世界015IMAGE imgLive, imgE mpty;/定义活细胞和无细胞区域的图案016017018019/函数声明035020voidIni t();/初始化021void

2、SquareWorld();/创建一个细胞以方形分布的世界022voidRan dWorld();/创建一个细胞随机分布的世界023voidP ai ntWorldO;/绘制世界024voidEvoluti on();/进化025026027028/主函数029int mainO030031Ini t();032int Speed = 500;/游戏速度(毫秒)033034while (true )036if (kbhitO II Speed = 900)037056break ;038char c = getch();039040if (c = & Speed != 900)041c = g

3、etch();042043if (c = 0 & c = 9)044Speed = (9 - c) * 100;045046switch (c)047048case s:049case S:050SquareWorldO;/产生默认的细胞以方形分布的世界051break ;052053case r:054case R:055Ran dWorld();/产生默认的细胞以方形分布的世界057058case VK ESCAPE:059goto END;060061062063Evoluti on();/进化064Pai ntWorldO;/绘制世界065066if (Speed != 900)/速度

4、为900时,为按任意键单步执行067Slee p(Sp eed);068069070END:071closegra phO;072return 0;073074075076077/096setfillstyle(GREEN);078/函数定义079080/初始化081void Init()082083/创建绘图窗口084in itgra ph(640,480);085086/设置随机种子087srand (unsigned)time (NULL);088089/调整世界图案的大小090Resize(&i mgLive, 4, 4);091Resize(&i mgE mp ty, 4, 4);0

5、92093/绘制有生命世界的图案094SetWorki nglmage(&im gLive);095setcolor(GREEN);097fillelli pse(O, 0, 3, 3);098099/绘制无生命世界的图案100SetWorki nglmage(&imgEmp ty);101setcolor(DARKGRAY);102recta ngle(1, 1, Z 2);103104/恢复对默认窗口的绘图105SetWorki nglmage(NULL);106107/输岀简单说明108setfo nt(24, 0,黑体);109outtextxy(254, 18,游戏);110RECT

6、 r = 440, 60, 620, 460;111setfon t(12, 0,宋体);112drawtext(生命游戏简介:n格居住生命游戏包括一个二维矩形世界,这个世界中的每个方113着一个活着的或死了的细胞。一个细胞在下一个时刻生死取决于相邻八个方格中活着的114细胞的数量。如果一个细胞周围的活细胞数量多于3个,这个细胞会因为资源匮乏而在下一个时刻死去;如果一个位置周围有 3个活细胞,则该位置在下一个时刻将诞生一个新的细胞;如115116果一个位置周围有2个活细胞,则该位置的细胞生死状态保持不变;如果一个细胞周 围的活117细胞少于2个,那么这个细胞会因太孤单而死去。这样整个生命世界才

7、不至于太过荒 凉或拥118挤,而是一种动态的平衡。nn游戏控制:n 0-9:调节速度(慢-快)n ESC: 退岀n空格:119暂停I继续n S:创建细胞以方形分布的世界n R:创建细胞随机分布的世界,120&r, DT_WORDBREAK);121122/产生默认的细胞以方形分布的世界123SquareWorldO;124125126/创建一个细胞以方形分布的世界127voidSquareWorld()128129memset(world, 0, 102 * 102 *sizeof (_int8 );130131for (int x = 1; x = 100; x+)132world x1 =

8、 world x 100 = 1;134for (int y = 1; y = 100; y+)133135world1y = world100y = 1;152153136137138/创建一个细胞随机分布的世界139voidRan dWorldO140141142for (int x = 1; x = 100; x+)for (int y = 1; y = 100; y+)143world x y=rand () % 2;144145146/绘制世界147voidPai ntWorldO148149150for (int x = 1; x = 100; x+)for (int y = 1;

9、 y = 100; y+)151p utimage(16+ x * 4, 56 + y * 4, worldxy? &imgLive : &imgEmpty);154/进化155voidEvoluti onO156157_int8 tmp 102102 = 0;/临时数组158intsum;159160for(intx = 1; x = 100; x+)161162for(inty = 1; y = 100; y+)163164/计算周围活着的生命数量sum165worldx+1yworldx+1y-1+ worldxy-1166167168169170171172173worldx-1y-1worldx-1yworldx-1y+1+world xy+1worldx+1y+1;/计算当前位置的生命状态switch (sum)case 3:case

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论