资源简介
元胞自动机的NS模型的C++代码实现 可用 结构清晰
代码片段和文件信息
#include“iostream“
#include
#include
#include
#include
using namespace std;
//#include
//#include“stdafx.h“
#define Lane 50//总共的格子数
#define TBEGIN 2000//开始计时的次数
#define T 3000//总共更新的次数
#define Vmax 5//最大速度
#define P 0.5//减速概率
void gotoxy(int xint y);
void back();
void show(intint);
void clear(int);
void delay(int );
void delay1(int );
void initcars(int );
void move();
float caculate(int );
int FindFront(int int );
int cars[T][Lane]; //定义数组
//车辆是从左到右顺序更新的,可能和实际不太相符。可以使用多线程并行更新的方法,网上一些NS模型的实现是采用顺序更新的,所以我就
//先采用了顺序更新。 为了便于观察,我在车辆更新时用了延迟函数。
int main()
{
int i;
float v;
srand(time(NULL));
i=20;
initcars(i);
move();
v=caculate(i);
return 0;
}
//初始化道路车辆
void initcars(int n)
{
int ijlocationspeed;
for(i=0;i for(j=0;j cars[i][j]=-1;
//赋初值
for(i=0;i {
location=rand()%Lane;
if( cars[0][location] ==-1)
{
cars[0][location]=rand()%(Vmax+1);
show(locationcars[0][location]);
back();
}
else //如果该位置上已经youchel,再为其重新随机选择一个位置
i--;
}
delay(1);
//debug
/*for(j=0;j if( cars[0][j] >=0 )
printf(“%d %d\n“jcars[0][j]);*/
}
//车辆运动
void move()
{
int i=0jxvgap;
for(i=0;i {
for(j=0;j {
if( cars[i][j] >= 0 )
{
v=cars[i][j];
gap=FindFront(ij); //与前车距离
//printf(“weizhi: %d sudu:%d gap:%d\n“jcars[i][j]gap);
//速度更新
if( (v+1) <= Vmax)
v++;
if( v > gap )
v = gap;
if( v>0 && ( rand()%100 <= P*100 ) )
v--;
//位置更新
x=v+j;
x=x%Lane;
//printf(“\n%d %d\n“xv);
if( cars[i+1][x] == -1 )
{
cars[i+1][x]=v;
clear(j);
back();
show(xv);
back();
}
else
{
printf(“撞车啦第%d秒,第%d格\n“ij);
exit(1);
}
delay1(1);//延迟显示
}
}
delay(1);//延迟显示
}
}
//计算与前车距离 空格的个数
int FindFront(int iint j)
{
int front=0;
while( cars[i][(++j
相关资源
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
- c++多边形交并差运算
- VC++基于OpenGL模拟的一个3维空间模型
评论
共有 条评论