资源简介
C语言实现电梯模拟,不过其中用到了少量的C++语法(引用参数和变量声明)。
设计一个电梯模拟系统。这是一个离散的模拟程序,因为电梯系统是乘客和电梯等“活动体”构成的集合,虽然它们彼此交互作用,但它们的行为是基本独立的。在离散的模拟中,以模拟时钟决定每个活动体的动作发生的时刻和顺序,系统在某个模拟瞬间处理有待完成的各种事情,然后把模拟时钟推进到某个动作预定要发生的下一个时刻。
代码片段和文件信息
#include “elevator.h“
//画房子
void DrawBuild(const Building &build)
{
char s[5];
int y;
setlinecolor(WHITE);
settextcolor(WHITE);
rectangle(build.x1 build.y1 build.x2 build.y2);
for(int i = 0 f = build.lowfloor; i < build.floors; i++)
{
y = getLocation(build f);
line(build.x1 y build.x2 y);
RECT r = {build.x2 y - build.height build.x2 + build.height y};
sprintf(s “%dF“ f);
drawtext(_T(s) &r DT_CENTER | DT_VCENTER | DT_SINGLELINE);
while(++f == 0);
}
}
//画每层楼的乘客
void DrawPassenger(const Building &build PPtr queue int InFloor int up)
{
PPtr p;
char s[5];
int x1 y1 x2 y2 r;
r = (build.height - 8) / 6;
x1 = build.x1 + 1 + r;
x2 = build.x2 - 1 ;
if(up == 1)
y1 = getLocation(build InFloor) - r * 4 - 5;
else y1 = getLocation(build InFloor) - r * 2 - 3;
y2 = y1 + 2 * r + 2;
clearrectangle(x1 y1 x2 y2);
x1 = build.x1 + r * 2;
y1++;
for(p = queue->next; p != NULL; p = p->next)
{
RECT rect = {x1 y1 x1 + 2 * r y1 + 2 * r};
sprintf(s “%d“ p->OutFloor);
drawtext(_T(s) &rect DT_CENTER | DT_VCENTER | DT_SINGLELINE);
circle(x1 + r y1 + r r);
x1 += 3 * r;
}
}
//画静态电梯
void DrawElevator(const Building &build const Elevator &E)
{
int x1 y1 x2 y2 r i count;
char s[5];
PPtr e;
x1 = E.x1 y1 = E.y1 x2 = E.x2 y2 = E.y2;
clearrectangle(x1 y1 x2 y2);
rectangle(x1 y1 x2 y2);
if(E.count == 0) return;
x1 += 2 y1 += 2;
r = (build.height - 8) / 6;
for(i = 0 count = 0; i < build.floors; i++)
{
for(e = E.Into[i]->next; e != NULL; e = e->next)
{
RECT rect = {x1 y1 x1 + 2 * r y1 + 2 * r};
sprintf(s “%d“ e->OutFloor);
drawtext(_T(s) &rect DT_CENTER | DT_VCENTER | DT_SINGLELINE);
circle(x1 + r y1 + r r);
if(count % 3 == 2)
{
x1 -= 4 * r + 4;
y1 += 2 * r + 2;
}
else x1 += 2 * r + 2;
count++;
}
}
}
//画动态的电梯
void DrawElevatorMove(const Building &build Elevator &E int displacement)
{
IMAGE img;
int x y;
x = E.x1 y = E.y1;
getimage(&img x y build.height build.height+1);
BeginBatchDraw();
clearrectangle(x y x + build.height-1 y + build.height+1);
FlushBatchDraw();
putimage(x y + displacement &img);
EndBatchDraw();
E.y1 += displacement;
E.y2 += displacement;
}
//画每层楼的电梯按钮
void DrawButton(const Building &build FState *FS)
{
char s[2];
int r = (build.height - 8) / 6;
for(int i = 0; i < build.floors; i++)
{
clearrectangle(build.x1 + 1 getLocation(build getfloor(build i)) - 4 - r * 4 build.x1 + r getLocation(build getfloor(build i)) - 2);
if(FS[i].up == true)
sprintf(s “%c“ 24);
else if(FS[i].up == false)
sprintf(s “%c“ ‘ ‘);
RECT r1 = {build.x1 + 1 getLocation(build getfloor(build i)) - 4 - r * 4 build.x1 + r getLocation(build getfloor(build i)) - 4 - 2 * r};
settextcolor(BLUE);
drawtext(_T(s) &r1 DT_CENTER | DT_VCENTER | DT_SINGLELINE);
if(FS[i].
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 31753024 2010-05-09 16:04 C++6.0_Win7_XP85\vc6_cn_full.exe
文件 109 2014-07-25 10:59 C++6.0_Win7_XP85\系统之家.url
目录 0 2014-11-06 14:33 C++6.0_Win7_XP85
文件 590603 2016-12-16 21:28 EasyX 20140321(beta)(画图函数).zip
----------- --------- ---------- ----- ----
32343736 4
相关资源
- [亲测-超高清]数据结构与算法分析
- c语言经典三部曲 pdf格式
- 数据结构与算法分析.C++语言描述 第四
- C语言模拟ARQ程序 停等式解压即用
- 数据结构 C++ 版 第2版 王红梅等 扫描
- C语言设计模式
- 数据结构 C++版 第三版 教材+习题解析
- 电子词典代码(c语言)
- 数据结构与算法分析 : C++描述(第三
- 单片机C语言编程与
- C语言疯狂讲义 v2
- C语言程序设计第四版 谭浩强著 高清
- 邓俊辉数据结构第三版c++版.pdf,高清
- Windows下 基于ModbusRtu的master端开发C语
- C语言名题精选百则 技巧篇+源码
- H264 TS打包C语言源代码
- 32位单片机C语言编程:基于PIC32中文
- 数据结构与面向对象程序设计(C++版
- 2018年新华三C语言笔试题
- 数据结构1000个问题与解答(C语言版)
- 计算机二级C语言完整复习资料
- c++数据结构.pdf
- 全国计算机等级考试-二级教程-C语言
- 数据结构与程序设计——C++语言描述
- 经典教材单片机的C语言应用程序设计
- 计算机二级考试模拟软件c语言
- 国二C语言试题库
- Windows下基于ModbusRtu的Slave端开发C语言
- C语言在线考试系统
- crocostone制作,数据结构算法与应用
评论
共有 条评论