该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

/*一个windows版的“元胞自动机”,也叫生命游戏。

dev c++ ,winXP 编译通过。

用setpiexal()在窗体上画点代表元胞,用timer1计时,每隔20毫秒画一帧。开始时用随机函数生成元胞分布,50%。

左键单击开始或暂停,右键重新开始。*/

//生命游戏

#include 

#define xmax 250

#define ymax 250

const char g_szClassName[] = "myWindowClass";

const int ID_TIMER = 1;

int a[xmax+2][ymax+2]={0},b[xmax+2][ymax+2]={0};

int timerflag=0;

HDC hdc;

void inita(void)//初始化“生命”分布

{

int i,j;

srand(time(0)); //用时间作为随机函数种子初始化随机函数

for(i=1;i<=xmax;i++)

for(j=1;j<=ymax;j++)

{

if(rand()>16383)a[i][j]=1;//用随机函数产生随机数

}

}

void step(void)

{

int i,j,cont;

for(i=1;i<=xmax;i++)

for(j=1;j<=ymax;j++)

{

b[i][j]=a[i][j];//b[][]临时转存

}

for(i=1;i<=xmax;i++)

for(j=1;j<=ymax;j++)//判断周围有多少个生命

{

cont=b[i-1][j-1]+b[i-1][j]+b[i-1][j+1]+b[i][j-1]+b[i][j+1]+b[i+1][j-1]+b[i+1][j]+b[i+1][j+1];

if(cont==2);

else if(cont==3)a[i][j]=1;

else a[i][j]=0;

}

}

void drawp(HDC hdc)

{

int i,j;

for(i=1;i<=xmax;i++)

for(j=1;j<=ymax;j++)

if(a[i][j]!=b[i][j])//根据数据矩阵画图

if(a[i][j]==1)SetPixelV(hdc,i*2,j*2,0x00ff00);

else SetPixelV(hdc,i*2,j*2,0x000000);

else ;

}

// Step 4: the Window Procedure

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)

{

switch(msg)

{

case WM_TIMER://时钟

{

if(timerflag==1)//如果当前不是暂停状态,走一步,画图

{

step();

drawp(hdc);

}

}

break;

case WM_CREATE:

{

SetTimer(hwnd, ID_TIMER, 20, NULL);//建立时钟

hdc = GetDC(hwnd);

inita();//初始化生命分布

}

break;

case WM_LBUTTONDOWN:

{

if(timerflag==0)timerflag=1;//切换暂停标志

else timerflag=0;

}

break;

case WM_RBUTTONDOWN:

{

inita();//重新初始化

}

break;

case WM_CLOSE:

ReleaseDC(hwnd, hdc);

DestroyWindow(hwnd);

break;

case WM_DESTROY:

KillTimer(hwnd, ID_TIMER);//销毁时钟

PostQuitMessage(0);

break;

default:

return DefWindowProc(hwnd, msg, wParam, lParam);

}

return 0;

}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,

LPSTR lpCmdLine, int nCmdShow)

{

WNDCLASSEX wc;

HWND hwnd;

MSG Msg;

//Step 1: Registering the Window Class

wc.cbSize        = sizeof(WNDCLASSEX);

wc.style         = 0;

wc.lpfnWndProc   = WndProc;

wc.cbClsExtra    = 0;

wc.cbWndExtra    = 0;

wc.hInstance     = hInstance;

wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION);

wc.hCursor       = LoadCursor(NULL, IDC_ARROW);

wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+2);

wc.lpszMenuName  = NULL;

wc.lpszClassName = g_szClassName;

wc.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);

if(!RegisterClassEx(&wc))

{

MessageBox(NULL, "Window Registration Failed!", "Error!",

MB_ICONEXCLAMATION | MB_OK);

return 0;

}

// Step 2: Creating the Window

hwnd = CreateWindowEx(

WS_EX_CLIENTEDGE,

g_szClassName,

"Life game, left click to start or pause, right click to redraw.",

WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT, CW_USEDEFAULT, 500, 500,

NULL, NULL, hInstance, NULL);

if(hwnd == NULL)

{

MessageBox(NULL, "Window Creation Failed!", "Error!",

MB_ICONEXCLAMATION | MB_OK);

return 0;

}

ShowWindow(hwnd, nCmdShow);

UpdateWindow(hwnd);

// Step 3: The Message Loop

while(GetMessage(&Msg, NULL, 0, 0) > 0)

{

TranslateMessage(&Msg);

DispatchMessage(&Msg);

}

return Msg.wParam;

}

c语言细胞自动机,关于细胞自动机的程序..求救!!谢谢!相关推荐

  1. 细胞自动机c语言源代码,关于细胞自动机的程序..求救!!谢谢!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /*一个windows版的"元胞自动机",也叫生命游戏. dev c++ ,winXP 编译通过. 用setpiexal()在窗体上画 ...

  2. c语言编程 构建围墙,c语言程序设计朝盛 综合程序练习题.ppt

    c语言程序设计朝盛 综合程序练习题 综合程序练习题 综合程序练习题 大型程序设计的要求 综合程序练习题 综合程序练习题 大型程序设计题目分析: 1 打字练习 2 电子琴 3 简易画图板 4 贪吃蛇 5 ...

  3. python是c语言写的吗-先学C语言还是Python?资深程序员往往是这样建议的!

    编程是一门手艺, 学习编程首先要有目的,w3cschool先带大家了解一下自己需要学习什么吧! 0.学一门语言 其实学什么语言都可以,因为语言都是互通的,C语言也好, 对于初学者来说,Python 也 ...

  4. 没学c语言可以学python_先学C语言还是Python?资深程序员往往是这样建议的!

    编程是一门手艺, 学习编程首先要有目的,w3cschool先带大家了解一下自己需要学习什么吧! 0.学一门语言 其实学什么语言都可以,因为语言都是互通的,C语言也好, 对于初学者来说,Python 也 ...

  5. 换硬币c语言编程_为什么大多数程序员都会学C语言的5大原因!什么原因让你学不会?...

    一.c语言,不朽的传奇 从30年前到如今,一些流行的科技媒体上发表的编程语言排行榜,c语言始终稳定位于前三位,这是其他一种其他的编程语言都达不到的.c语言的江湖地位,不容撼动.虽历史悠久,却也是不朽的 ...

  6. 图像haar特征提取 c语言,基于C语言的特征点提取程序 本程序是利用C语言对各种信号数据的特征点提取程序 - 下载 - 搜珍网...

    基于C语言的特征点提取程序\修改后 特征点提取程序\提取特征点\Debug\football.ilk 基于C语言的特征点提取程序\修改后 特征点提取程序\提取特征点\Debug\football.ob ...

  7. c语言求成绩标准差,C程序计算标准偏差

    C程序计算标准偏差 在此示例中,您将学习使用数组计算10个数字的标准偏差. 要理解此示例,您应该了解以下C语言编程主题: 该程序使用数组计算单个系列的标准偏差.为了计算标准差,我们创建了一个名为cal ...

  8. c语言烟花百度云,C语言实现放烟花的程序

    这是一个利用C语言编写放烟花的程序(同时也可以播放音乐),供大家参考,具体内容如下 代码如下 #pragma once #include #include //图形界面库头文件 #include // ...

  9. 51单片机蜂鸣器演奏《小苹果》C语言程序,51单片机C语言蜂鸣器发声生日快乐播放程序...

    <51单片机C语言蜂鸣器发声生日快乐播放程序>由会员分享,可在线阅读,更多相关<51单片机C语言蜂鸣器发声生日快乐播放程序(4页珍藏版)>请在人人文库网上搜索. 1.按键发音/ ...

  10. c语言高亮字符,C语言必背18个程序+190例--语法高亮

    <C语言必背18个程序+190例--语法高亮>由会员分享,可在线阅读,更多相关<C语言必背18个程序+190例--语法高亮(111页珍藏版)>请在人人文库网上搜索. 1.C语言 ...

最新文章

  1. 基于权因子的图像融合
  2. JSP、ASP、PHP Web应用程序怎么这么多P!
  3. spring cloud gateway的stripPrefix配置
  4. go爬虫和python爬虫哪个好_python 爬虫实战项目--爬取京东商品信息(价格、优惠、排名、好评率等)-Go语言中文社区...
  5. 每个数据科学专家都应该知道的六个概率分布
  6. 数据交互智能终端设想
  7. 面向对象的软件开发方法简介
  8. 开源erp_大公司为何使用开源ERP
  9. 《流畅的Python》读书笔记——Python文本和字节序列
  10. BroadcastReceiver入门
  11. idea eclipse主题
  12. 【java】Java 包(package)
  13. python学习笔记分享(二十四)python学习笔记分期补充(二)复数,randint与sample,进制转换表,转义字符,二维数组,键,end,pass,迭代器和生成器
  14. <STM32学习>--跑马灯实验
  15. 阿里巴巴Java开发手册 (Alibaba Java Coding Guidelines)
  16. 【Docker】安装 Portainer
  17. DCT变换和DFT变换
  18. 为什么说裁员18000只是微软计划的一部分
  19. python使用urllib发送post请求_python使用urllib2提交http post请求的方法
  20. 为什么说现在IT toB发展的拐点

热门文章

  1. 超标量处理器设计 姚永斌 第10章 指令提交 摘录
  2. 【深入理解JS核心技术】11. 什么是一级函数
  3. windows优化大师怎么用_曾经辉煌的装机必备软件,你用过几个?
  4. 中职学校计算机专业课程设置,中职学校计算机专业课程设置的几点思考
  5. 日历java代码_java 日历代码实现
  6. java 宠物店管理系统
  7. python模拟火车票订票系统_除夕火车票明天开售,上海各大火车站售票时间都在这...
  8. visual studio设置背景颜色为眼睛保护色
  9. php大牛额城战笔记,泰牛程序员 韩顺平 PHP 大牛班 javascript课程 完整笔记
  10. mysql insert语句_MySQL INSERT语句简介