c语言细胞自动机,关于细胞自动机的程序..求救!!谢谢!
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
/*一个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语言细胞自动机,关于细胞自动机的程序..求救!!谢谢!相关推荐
- 细胞自动机c语言源代码,关于细胞自动机的程序..求救!!谢谢!
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /*一个windows版的"元胞自动机",也叫生命游戏. dev c++ ,winXP 编译通过. 用setpiexal()在窗体上画 ...
- c语言编程 构建围墙,c语言程序设计朝盛 综合程序练习题.ppt
c语言程序设计朝盛 综合程序练习题 综合程序练习题 综合程序练习题 大型程序设计的要求 综合程序练习题 综合程序练习题 大型程序设计题目分析: 1 打字练习 2 电子琴 3 简易画图板 4 贪吃蛇 5 ...
- python是c语言写的吗-先学C语言还是Python?资深程序员往往是这样建议的!
编程是一门手艺, 学习编程首先要有目的,w3cschool先带大家了解一下自己需要学习什么吧! 0.学一门语言 其实学什么语言都可以,因为语言都是互通的,C语言也好, 对于初学者来说,Python 也 ...
- 没学c语言可以学python_先学C语言还是Python?资深程序员往往是这样建议的!
编程是一门手艺, 学习编程首先要有目的,w3cschool先带大家了解一下自己需要学习什么吧! 0.学一门语言 其实学什么语言都可以,因为语言都是互通的,C语言也好, 对于初学者来说,Python 也 ...
- 换硬币c语言编程_为什么大多数程序员都会学C语言的5大原因!什么原因让你学不会?...
一.c语言,不朽的传奇 从30年前到如今,一些流行的科技媒体上发表的编程语言排行榜,c语言始终稳定位于前三位,这是其他一种其他的编程语言都达不到的.c语言的江湖地位,不容撼动.虽历史悠久,却也是不朽的 ...
- 图像haar特征提取 c语言,基于C语言的特征点提取程序 本程序是利用C语言对各种信号数据的特征点提取程序 - 下载 - 搜珍网...
基于C语言的特征点提取程序\修改后 特征点提取程序\提取特征点\Debug\football.ilk 基于C语言的特征点提取程序\修改后 特征点提取程序\提取特征点\Debug\football.ob ...
- c语言求成绩标准差,C程序计算标准偏差
C程序计算标准偏差 在此示例中,您将学习使用数组计算10个数字的标准偏差. 要理解此示例,您应该了解以下C语言编程主题: 该程序使用数组计算单个系列的标准偏差.为了计算标准差,我们创建了一个名为cal ...
- c语言烟花百度云,C语言实现放烟花的程序
这是一个利用C语言编写放烟花的程序(同时也可以播放音乐),供大家参考,具体内容如下 代码如下 #pragma once #include #include //图形界面库头文件 #include // ...
- 51单片机蜂鸣器演奏《小苹果》C语言程序,51单片机C语言蜂鸣器发声生日快乐播放程序...
<51单片机C语言蜂鸣器发声生日快乐播放程序>由会员分享,可在线阅读,更多相关<51单片机C语言蜂鸣器发声生日快乐播放程序(4页珍藏版)>请在人人文库网上搜索. 1.按键发音/ ...
- c语言高亮字符,C语言必背18个程序+190例--语法高亮
<C语言必背18个程序+190例--语法高亮>由会员分享,可在线阅读,更多相关<C语言必背18个程序+190例--语法高亮(111页珍藏版)>请在人人文库网上搜索. 1.C语言 ...
最新文章
- 基于权因子的图像融合
- JSP、ASP、PHP Web应用程序怎么这么多P!
- spring cloud gateway的stripPrefix配置
- go爬虫和python爬虫哪个好_python 爬虫实战项目--爬取京东商品信息(价格、优惠、排名、好评率等)-Go语言中文社区...
- 每个数据科学专家都应该知道的六个概率分布
- 数据交互智能终端设想
- 面向对象的软件开发方法简介
- 开源erp_大公司为何使用开源ERP
- 《流畅的Python》读书笔记——Python文本和字节序列
- BroadcastReceiver入门
- idea eclipse主题
- 【java】Java 包(package)
- python学习笔记分享(二十四)python学习笔记分期补充(二)复数,randint与sample,进制转换表,转义字符,二维数组,键,end,pass,迭代器和生成器
- <STM32学习>--跑马灯实验
- 阿里巴巴Java开发手册 (Alibaba Java Coding Guidelines)
- 【Docker】安装 Portainer
- DCT变换和DFT变换
- 为什么说裁员18000只是微软计划的一部分
- python使用urllib发送post请求_python使用urllib2提交http post请求的方法
- 为什么说现在IT toB发展的拐点
热门文章
- 超标量处理器设计 姚永斌 第10章 指令提交 摘录
- 【深入理解JS核心技术】11. 什么是一级函数
- windows优化大师怎么用_曾经辉煌的装机必备软件,你用过几个?
- 中职学校计算机专业课程设置,中职学校计算机专业课程设置的几点思考
- 日历java代码_java 日历代码实现
- java 宠物店管理系统
- python模拟火车票订票系统_除夕火车票明天开售,上海各大火车站售票时间都在这...
- visual studio设置背景颜色为眼睛保护色
- php大牛额城战笔记,泰牛程序员 韩顺平 PHP 大牛班 javascript课程 完整笔记
- mysql insert语句_MySQL INSERT语句简介