目录

  • 项目描述:
  • 代码如下:
  • 效果图如下:

项目描述:

每个矩阵方格可以包含一个有机体,不在边上的有机体有8个相邻方格。
生命游戏演化的规则如下:
1.如果一个细胞周围有3个细胞为生,则该细胞为生(即该细胞若原先为死,则转为生,
若原先为生,则保持不变)。
2.如果一个细胞周围有两个细胞为生,则该细胞的生死状态保持不变。
3.在其他情况下该细胞为死(即该细胞若原先为生,则转为死;若原先为死,则保持不变)。

代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<Windows.h>
#include<time.h>#define High 25   //游戏画面尺寸
#define Width 50//全局变量
int cells[High][Width];  //所有位置细胞 生是1,死是0
int temp=0;//判断是否加速
char input=0;void gotoxy(int x,int y) //将光标移动到(x,y)位置
{HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);COORD pos;pos.X=x;pos.Y=y;SetConsoleCursorPosition(handle,pos);
}void startup() //数据的初始化
{int i,j;srand(time(NULL));for(i=0;i<High;i++)//随机初始化{for(j=0;j<Width;j++){cells[i][j]=rand()%2;}}
}void  show() //显示画面
{gotoxy(0,0);//将光标移动到原点位置,以下重画清屏int i,j;for(i=0;i<=High;i++){for(j=0;j<=Width;j++){if(cells[i][j]==1)printf("*");//输出活的细胞elseprintf(" ");}printf("\n");}printf("≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡\n");printf("            操作菜单               +\n");printf("1. 按w键加速                       +\n");printf("2. 按s键减速                       +\n");printf("3. 按空格回到初速度                +\n");printf("4. 按r键重置                       +\n");printf("≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡\n");if(temp==0)Sleep(60);if(temp==1)Sleep(30);if(temp==2)Sleep(120);
}void updateWithoutInput()//与用户输入无关的更新
{int NewCells[High][Width];//下一帧的细胞情况int NeibourNumber;//统计邻居的个数int i,j;for(i=1;i<=High-1;i++){for(j=1;j<=Width-1;j++){NeibourNumber = cells[i-1][j-1]+cells[i-1][j]+cells[i-1][j+1]+cells[i][j-1]+cells[i][j+1]+cells[i+1][j-1]+cells[i+1][j]+cells[i+1][j+1];if(NeibourNumber == 3)NewCells[i][j]=1;else if(NeibourNumber == 2)NewCells[i][j]=cells[i][j];elseNewCells[i][j]=0;}}for(i=1;i<=High-1;i++){for(j=1;j<=Width-1;j++)cells[i][j] = NewCells[i][j];}
}void updateWithInput() //与用户输入有关的更新
{if(kbhit()){input=getch();if(input == 'w'|| input =='W')temp=1;if(input == 's'|| input == 'S')temp=2;if(input == ' ')temp=0;if(input == 'r'||input == 'R')startup(); //数据的初始化}
}//定义隐藏光标函数
void HideCursor()
{CONSOLE_CURSOR_INFO cursor;    cursor.bVisible = FALSE;    cursor.dwSize = sizeof(cursor);    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);    SetConsoleCursorInfo(handle, &cursor);
}int main(void)
{startup();//数据的初始化HideCursor();//隐藏光标system("title 生命游戏 进行中");system("color 09");while(1){show();//显示画面updateWithoutInput();//与用户输入无关的更新updateWithInput();//与用户输入有关的更新}return 0;
}

效果图如下:

项目: 生命游戏(C语言)相关推荐

  1. c语言设计生命游戏,C语言实现生命游戏.doc

    C语言实现生命游戏 本世纪70年代,人们曾疯魔一种被称作"生命游戏"的小游戏,这种游戏相当简单.假设有一个像棋盘一样的方格网,每个方格中放置一个生命细胞,生命细胞只有两种状态:&q ...

  2. 生命游戏 c语言,c++生命游戏源码

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 glViewport( 0, 0, width, height ); glMatrixMode( GL_PROJECTION ); glLoadIdent ...

  3. 生命游戏c语言代码easy,c++生命游戏源码

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 glViewport( 0, 0, width, height ); glMatrixMode( GL_PROJECTION ); glLoadIdent ...

  4. 生命游戏c语言代码,c++生命游戏源码

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 glViewport( 0, 0, width, height ); glMatrixMode( GL_PROJECTION ); glLoadIdent ...

  5. C语言零基础项目:生命游戏!详细思路+源码分享

    每天一个C语言小项目,提升你的编程能力! 程序简介 生命游戏也叫康威生命游戏.细胞自动机.元胞自动机等. 生命游戏不需要任何玩家,它是一个二维矩形世界,这个世界中的每个方格居住着一个活细胞或为空. 一 ...

  6. C语言康威生命游戏,【2020存档】康威生命游戏(CGoL)研究进展

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 1.历史概述 生命游戏,由康威发明于1970年,同年登载在科学杂志上,引发一阵风潮. 最早的发现是在1969年末,康威和研究生初步探索B3/S23时,发现 ...

  7. Go语言模拟康威生命游戏Conway‘s Game of Life

    康威生命游戏是一种很有意思的游戏,显示的是细胞的生死状态取决于周边细胞(相邻8个细胞)的存活状态,是一种模拟生命的演化过程. 反过来看,还可模拟病毒的传染,患者传染给接触者,也可以设定概率,另外是否戴 ...

  8. 做游戏,学编程(C语言) 5 数组之生命游戏

    学完数组的概念后,有一个简单的小游戏特别适合上手---生命游戏,假设有int Cells[30][30],也即有30×30个小格子,每个小格子里面可以有细胞生命,或者细胞死亡.通过把这些状态输出出来, ...

  9. 【C语言】 游戏合集 《弹球》《生命游戏》《无足鸟》创作过程及思路 通过二维数组呈现游戏画面

    目录 一.弹球的2.0和3.0 弹球2.0 弹球3.0 二.无足鸟 三.生命游戏 弹球之前那个版本没有可玩性,随后又更新了两个版本,可玩性都有所提升,然后无足鸟.弹球2.0和飞机2.0的程序逻辑大体类 ...

  10. 细胞生命游戏一维c语言,生命游戏一维细胞自动机 笔记

    de 生命游戏是一种简单的聚合模型,展示了事物是如何聚合的,是自动机(CA)模型的一种.由剑桥大学约翰康威发明,其规则为: 1. 每个细胞拥有八个邻居,细胞状态只有存活(黑)和死亡(白)两种: 2.处 ...

最新文章

  1. 训练LaneATT遇到CUDA_HOME环境变量问题
  2. 掌声送给TensorFlow 2.0!用Keras搭建一个CNN | 入门教程
  3. php之static静态变量详解
  4. easyui placeholder 解决方案
  5. 5G 标准 — R18
  6. 在linux下安装mongo数据库,Linux系统下安装MongoDB
  7. redis集群搭建与配置
  8. 每个开发人员都需要学Python?看看大佬是怎么说的!
  9. 今天来谈谈内容溢出和文字溢出的问题
  10. xadmin可能是帮助我完成django网站的一大助力
  11. 23 个问题 TCP 疑难杂症全解析
  12. 如何学习单片机?单片机c语言编程入门教程
  13. Ubuntu、CentOS、macOS测试服务器上传和下载速度
  14. 适配7.0手机拍照、相册、裁剪图片
  15. 微信小程序网络请求异常怎么办_微信小程序网络超时的处理
  16. 利用freemarker导出Excel(格式自定义)
  17. 【linux虚拟机使用yum安装MySQL+修改密码】
  18. Day2多种抓包工具介绍以及使用封包监听工具找到挑战数据包实现发送数据包进行挑战
  19. 汇编语言与高级语言的区别
  20. 2021年诺贝尔物理学奖——平衡混沌与秩序的复杂

热门文章

  1. python加密成pyc_pyc文件加密 python写的程序怎样加密
  2. ITIL学习笔记——核心流程之:IT服务财务管理
  3. 一个轻量级多功能免费开源web聊天室
  4. 产品学习:淘宝网的架构演化案例分析
  5. win7计算机高级还原,最好用的win7一键恢复64位方法
  6. 奇迹Mu分析 - 各种主流BT功能实现
  7. 利用图神经网络进行社交机器人检测
  8. 摄像机标定之四大坐标系之间转换关系详解
  9. 手把手一步步用DataGridView 控件编写属于自己的日历
  10. McAfee如何卸载?MacBook 如何卸载麦克菲