今天有个搞电子设计竞赛的来问我电梯的运行逻辑的C代码实现,我想到学数据结构那会用C/C++写过一个,不过好久自己现在也记不清了,直接就把源代码给他,让他自己看了。
想想自己马上要开始漫长艰苦的数模国赛集训,心情就不好啊。
这个测序运行后结果如下:(要源代码在下面,不过我把VS卸载了,今天本来想运行下那个.exe文件,结果没法运行了,说丢失MSVCP120.dll,不过有几张以前的截图)
这个代码可以以动画的形式:
1.实现电梯载人的逻辑规则
2.电梯实现开关门,保证该出去的人先出完然后该进来的人再进来,排除本层人去本层的情况
3.可以初始化电梯的任何开始位置(不过正常情况下应该初始化在最底层)
4.不断的在人运完后随机产生人(就像网游刷怪一样)
5.显示电梯的运行方向及所处的楼层
6.当人在楼道等电梯的时候圆圈(用圆圈代表人)内显示是上还是下,进入电梯后显示要去的层数
7.可以调节电梯运行速度及停留时间
现在看当时的代码,不忍直视。。。
代码如下(要想编译通过,记得要在VS2013的头文件里加个EasyX的图形库):
#include<graphics.h> #include<conio.h> #include<stdlib.h> #include<time.h> #include<queue> #include<vector> #include<string.h> using namespace std; #define speed 30 //电梯速度调节 #define stay_time 1500//电梯停留时间调节 int tdt_a = 460, tdt_b = 550, dt_Now_Place = 0;//存储电梯某次载客完成后的信息 struct People { int Now_place;//人当前所处的层数 int Destination;//人所要去的目标层数 int index;//用这个标号便于在优先队列中实现让人入电梯和让人出电梯的操作 int x, y;//人在图中具体的坐标 }Peo[45];//在本程序中由于显示屏大小的限制所以最多显示45个人 struct cmp1//按起始位置从小到大排序 { bool operator()(People a, People b) { return a.Now_place > b.Now_place; } }; struct cmp2//按目的地从小到大排列 { bool operator()(People a, People b) { return a.Destination > b.Destination; } }; struct cmp3//按起始位置从大到小排序 { bool operator()(People a, People b) { return a.Now_place < b.Now_place; } }; struct cmp4//按目的地从大到小排列 { bool operator()(People a, People b) { return a.Destination < b.Destination; } }; struct Elevator { int a, b;//电梯当前位置具体坐标(上下两条线的y坐标)(a<b) int c, d; int Now_place;//电梯当前所处的层数 int Go_place;//电梯所要去的目标层数 int Direction;//电梯方向(-1表示未定,0表示向下,1表示向上) int Peo_num;//电梯中的人数 int seat[8]; int flag;//表示电梯现在门是开的,还是关的(0表示关 1表示开) }dt; priority_queue<People, vector<People>, cmp1> q1;//按起始位置从小到大排序(只记录上楼的人,入电梯的时候用) priority_queue<People, vector<People>, cmp2> q2;//按目的地从小到大排列(只记录上楼的人,出电梯的时候用) //当情况不连续的时候使用的队列 priority_queue<People, vector<People>, cmp1> q5;//按起始位置从小到大排序(只记录上楼的人,入电梯的时候用) priority_queue<People, vector<People>, cmp2> q6;//按目的地从小到大排列(只记录上楼的人,出电梯的时候用) priority_queue<People, vector<People>, cmp3> q3;//按起始位置从大到小排序(只记录下楼的人,入电梯的时候用) priority_queue<People, vector<People>, cmp4> q4;//按目的地从大到小排列(只记录下楼的人,出电梯的时候用) //当情况不连续的时候使用的队列 priority_queue<People, vector<People>, cmp3> q7;//按起始位置从大到小排序(只记录下楼的人,入电梯的时候用) priority_queue<People, vector<People>, cmp4> q8;//按目的地从大到小排列(只记录下楼的人,出电梯的时候用) void Init_people() { int Peo_num[5];//存储每层电梯随机产生的人数(最多9个人) int Peo_y[5][3] = { 535, 505, 475, 435, 405, 375, 335, 305, 275, 235, 205, 175, 135, 105, 75 };//把人所处的(圆心)y坐标存在数组里,方便一点 int Peo_x[3] = { 330, 360, 390 };//人所处位置的x坐标(用圆表示人,即圆心坐标) srand((unsigned)time(NULL));//播种子 while (!q1.empty())//队列初始化 { q1.pop(); } while (!q2.empty()) { q2.pop(); } while (!q3.empty())//队列初始化 { q3.pop(); } while (!q4.empty()) { q4.pop(); } while (!q5.empty())//队列初始化 { q5.pop(); } while (!q6.empty()) { q6.pop(); } while (!q7.empty())//队列初始化 { q7.pop(); } while (!q8.empty()) { q8.pop(); } for (int i = 0; i < 5; i++) { Peo_num[i] = rand() % 4;//随机产生0-9的数 //有改动!!!!!!!!!!!!!!!!! } /*///////////////////////////////////////////////// Peo_num[0] = 0; Peo_num[1] = 2; Peo_num[2] = 1; Peo_num[3] = 0; Peo_num[4] = 0; //////////////////////////////////////////////////*/ int k = 0; for (int i = 0; i < 5; i++) { for (int j = 0; j < Peo_num[i]; j++) { Peo[k].Now_place = i;//初始化该人当下所处的位置 while (1)//随机产生该人想去的目的地(且排除了本层人去本层的情况) { int t1 = rand() % 5; Peo[k].Destination = t1; if (t1 != i) { break; } } setlinecolor(GREEN);//设置圆的颜色 circle(Peo_x[j / 3], Peo_y[i][j % 3], 15);//用画出的圆表示人 // TCHAR s[5]; // _stprintf_s(s, _T("%d"), Peo[k].Destination); // 高版本 VC 推荐使用 _stprintf_s 函数 // outtextxy(Peo_x[j / 3], Peo_y[i][j % 3], s); if (Peo[k].Destination > Peo[k].Now_place) { TCHAR c = _T('上'); outtextxy(Peo_x[j / 3], Peo_y[i][j % 3], c); } else { TCHAR c = _T('下'); outtextxy(Peo_x[j / 3], Peo_y[i][j % 3], c); } Peo[k].x = Peo_x[j / 3];//记录该人在图中具体位置的坐标(便于后续操作) Peo[k].y = Peo_y[i][j % 3]; //将各种情况的人入队 if (Peo[k].Now_place >= dt.Now_place&&Peo[k].Now_place < Peo[k].Destination) { q1.push(Peo[k]); q2.push(Peo[k]); } if (Peo[k].Now_place >= dt.Now_place&&Peo[k].Now_place > Peo[k].Destination) { q3.push(Peo[k]); q4.push(Peo[k]); } if (Peo[k].Now_place < dt.Now_place&&Peo[k].Now_place < Peo[k].Destination) { q5.push(Peo[k]); q6.push(Peo[k]); } if (Peo[k].Now_place < dt.Now_place&&Peo[k].Now_place > Peo[k].Destination) { q7.push(Peo[k]); q8.push(Peo[k]); } k++; } } } void Background_Init() { line(100, 50, 100, 550);//画电梯两侧的线 line(300, 50, 300, 550); line(300, 150, 400, 150);//画楼层 line(300, 250, 400, 250); line(300, 350, 400, 350); line(300, 450, 400, 450); line(300, 550, 400, 550); setlinecolor(YELLOW);//画矩形电梯 rectangle(130, 460, 270, 550); TCHAR s[] = _T("Elevator_State");//电梯状态显示栏 outtextxy(5, 50, s); TCHAR s1[] = _T("Now_place:"); outtextxy(10, 70, s1); TCHAR s2[] = _T("Direction:"); outtextxy(10, 110, s2); TCHAR s3[] = _T("Peo_num:"); outtextxy(10, 150, s3); LOGFONT f1; gettextstyle(&f1); // 获取当前字体设置 settextcolor(RED); f1.lfWeight = 900; f1.lfHeight = 30; // 设置字体高度为 48 _tcscpy_s(f1.lfFaceName, _T("黑体")); // 设置字体为“黑体”(高版本 VC 推荐使用 _tcscpy_s 函数) f1.lfQuality = ANTIALIASED_QUALITY; // 设置输出效果为抗锯齿 settextstyle(&f1); // 设置字体样式 outtextxy(105, 10, _T("电梯模拟系统")); LOGFONT f2; gettextstyle(&f2); // 获取当前字体设置 settextcolor(WHITE); f2.lfWeight = 100; f2.lfHeight = 15; _tcscpy_s(f2.lfFaceName, _T("黑体")); // 设置字体为“黑体”(高版本 VC 推荐使用 _tcscpy_s 函数) f2.lfQuality = ANTIALIASED_QUALITY; // 设置输出效果为抗锯齿 settextstyle(&f2); // 设置字体样式 } void Elevator_Init() { dt.a = 460; dt.b = 550; dt.Direction = 1;//1表示方向向上,0表示方向向下 dt.Now_place = 0; dt.Peo_num = 0; for (int i = 0; i < 8; i++) { dt.seat[i] = -1;//初始化电梯的每个位置都没人 } } void Elevator_Init2() { dt.a = tdt_a; dt.b = tdt_b; // dt.Direction = 1;//1表示方向向上,0表示方向向下 dt.Now_place = dt_Now_Place; // dt.Peo_num = 0; for (int i = 0; i < 8; i++) { dt.seat[i] = -1;//初始化电梯的每个位置都没人 } } int Concret1(People tq)//搭乘客时的具体操作函数 { if (dt.a > dt.c) { int t1 = dt.a; int t2 = dt.b; while (dt.a >= dt.c) { /**********************这部分代码是实现电梯和电梯内人的动画移动************************************/ setfillcolor(BLACK);//把人消除掉 setlinecolor(BLACK);//注意这个圆的填充是包括外框的,所以要把线的颜色也设为黑色!!! for (int i = 0; i < 8; i++) { if (dt.seat[i] != -1) { fillcircle(150 + i % 4 * 30, t2 - 20 - i / 4 * 40, 15); } } setlinecolor(GREEN); for (int i = 0; i < 8; i++) { if (dt.seat[i] != -1) { circle(150 + i % 4 * 30, dt.b - 20 - i / 4 * 40, 15);//通过坐标间的关系确定所画圆的坐标 TCHAR s[5]; _stprintf_s(s, _T("%d"), dt.seat[i]);//在圆心画出这个人所要去的楼层 outtextxy(150 + i % 4 * 30, dt.b - 20 - i / 4 * 40, s); } } setlinecolor(BLACK); rectangle(130, t1, 270, t2); setlinecolor(YELLOW); rectangle(130, dt.a, 270, dt.b); t1 = dt.a; t2 = dt.b; dt.a -= 5; dt.b -= 5; Sleep(speed); /****************************************************************************************************************************************/ } dt.a += 5; dt.b += 5; } if (dt.a < dt.c) { int t1 = dt.a; int t2 = dt.b; while (dt.a <= dt.c) { setfillcolor(BLACK);//把人消除掉 setlinecolor(BLACK);//注意这个圆的填充是包括外框的,所以要把线的颜色也设为黑色!!! for (int i = 0; i < 8; i++) { if (dt.seat[i] != -1) { fillcircle(150 + i % 4 * 30, t2 - 20 - i / 4 * 40, 15); } } setlinecolor(GREEN); for (int i = 0; i < 8; i++) { if (dt.seat[i] != -1) { circle(150 + i % 4 * 30, dt.b - 20 - i / 4 * 40, 15);//通过坐标间的关系确定所画圆的坐标 TCHAR s[5]; _stprintf_s(s, _T("%d"), dt.seat[i]);//在圆心画出这个人所要去的楼层 outtextxy(150 + i % 4 * 30, dt.b - 20 - i / 4 * 40, s); } } setlinecolor(BLACK); rectangle(130, t1, 270, t2); setlinecolor(YELLOW); rectangle(130, dt.a, 270, dt.b); t1 = dt.a; t2 = dt.b; dt.a += 5; dt.b += 5; Sleep(speed); } dt.a -= 5; dt.b -= 5; } TCHAR s[5];//显示电梯所处的楼层 _stprintf_s(s, _T("%d"), dt.Now_place); outtextxy(10, 90, s); //具体的搭人代码 if (!dt.flag) { dt.flag = 1; setlinecolor(BLACK);//电梯停留开门 line(270, dt.c, 270, dt.d); } setfillcolor(BLACK);//把人消除掉 setlinecolor(BLACK); fillcircle(tq.x, tq.y, 15);//是一个一个人进的 //Sleep(1000); setlinecolor(GREEN); for (int i = 0; i < 8; i++) { if (dt.seat[i] == -1) { dt.seat[i] = tq.Destination; circle(150 + i % 4 * 30, dt.d - 20 - i / 4 * 40, 15);//通过坐标间的关系确定所画圆的坐标 TCHAR s[5]; _stprintf_s(s, _T("%d"), dt.seat[i]);//在圆心画出这个人所要去的楼层 outtextxy(150 + i % 4 * 30, dt.d - 20 - i / 4 * 40, s); break; } } Sleep(stay_time); if (dt.flag)//如果门是开的,关电梯门 { dt.flag = 0; setlinecolor(YELLOW); line(270, dt.c, 270, dt.d); } return 1; } int Concret2()//乘客出电梯具体操作 { if (dt.a > dt.c) { int t1 = dt.a; int t2 = dt.b; while (dt.a >= dt.c) { /**********************这部分代码是实现电梯和电梯内人的动画移动************************************/ setfillcolor(BLACK);//把人消除掉 setlinecolor(BLACK);//注意这个圆的填充是包括外框的,所以要把线的颜色也设为黑色!!! for (int i = 0; i < 8; i++) { if (dt.seat[i] != -1) { fillcircle(150 + i % 4 * 30, t2 - 20 - i / 4 * 40, 15); } } setlinecolor(GREEN);//生成人 for (int i = 0; i < 8; i++) { if (dt.seat[i] != -1) { circle(150 + i % 4 * 30, dt.b - 20 - i / 4 * 40, 15);//通过坐标间的关系确定所画圆的坐标 TCHAR s[5]; _stprintf_s(s, _T("%d"), dt.seat[i]);//在圆心画出这个人所要去的楼层 outtextxy(150 + i % 4 * 30, dt.b - 20 - i / 4 * 40, s); } } setlinecolor(BLACK); rectangle(130, t1, 270, t2); setlinecolor(YELLOW); rectangle(130, dt.a, 270, dt.b); t1 = dt.a; t2 = dt.b; dt.a -= 5; dt.b -= 5; Sleep(speed); /*******************************************************************************************************************/ } dt.a += 5; dt.b += 5; } if (dt.a < dt.c) { int t1 = dt.a; int t2 = dt.b; while (dt.a <= dt.c) { setfillcolor(BLACK);//把人消除掉 setlinecolor(BLACK);//注意这个圆的填充是包括外框的,所以要把线的颜色也设为黑色!!! for (int i = 0; i < 8; i++) { if (dt.seat[i] != -1) { fillcircle(150 + i % 4 * 30, t2 - 20 - i / 4 * 40, 15); } } setlinecolor(GREEN);//生成人 for (int i = 0; i < 8; i++) { if (dt.seat[i] != -1) { circle(150 + i % 4 * 30, dt.b - 20 - i / 4 * 40, 15);//通过坐标间的关系确定所画圆的坐标 TCHAR s[5]; _stprintf_s(s, _T("%d"), dt.seat[i]);//在圆心画出这个人所要去的楼层 outtextxy(150 + i % 4 * 30, dt.b - 20 - i / 4 * 40, s); } } setlinecolor(BLACK); rectangle(130, t1, 270, t2); setlinecolor(YELLOW); rectangle(130, dt.a, 270, dt.b); t1 = dt.a; t2 = dt.b; dt.a += 5; dt.b += 5; Sleep(speed); } dt.a -= 5; dt.b -= 5; } TCHAR s[5];//显示电梯所处的楼层 _stprintf_s(s, _T("%d"), dt.Now_place); outtextxy(10, 90, s); tdt_a = dt.a;//记录电梯某次载客完成后所处的真实坐标位置(因为这个函数是某次载客最后执行的函数) tdt_b = dt.b; dt_Now_Place = dt.Now_place; //具体的乘客出电梯代码 if (!dt.flag) { dt.flag = 1; setlinecolor(BLACK);//电梯停留开门 line(270, dt.c, 270, dt.d); } //Sleep(500); setfillcolor(BLACK);//把人消除掉 setlinecolor(BLACK);//注意这个圆的填充是包括外框的,所以要把线的颜色也设为黑色!!! for (int i = 0; i < 8; i++) { if (dt.seat[i] == dt.Now_place) { fillcircle(150 + i % 4 * 30, dt.b - 20 - i / 4 * 40, 15); dt.seat[i] = -1; } } Sleep(stay_time); if (dt.flag) { dt.flag = 0; setlinecolor(YELLOW);//电梯关门 line(270, dt.c, 270, dt.d); } return 1; } void Q1_Q2() { while (!q2.empty() && q2.top().Destination == dt.Now_place)//出电梯(一定要用while循环确保多个人出电梯队列中元素删除干净) { People tq1 = q2.top(); q2.pop(); switch (tq1.Destination) { case 0: dt.c = 460; dt.d = 550; if (Concret2())//重复性的代码一定要做成函数 { break; } case 1: dt.c = 360; dt.d = 450; if (Concret2())//重复性的代码一定要做成函数 { break; } case 2: dt.c = 260; dt.d = 350; if (Concret2())//重复性的代码一定要做成函数 { break; } case 3: dt.c = 160; dt.d = 250; if (Concret2())//重复性的代码一定要做成函数 { break; } case 4: dt.c = 60; dt.d = 150; if (Concret2())//重复性的代码一定要做成函数 { break; } } } while (!q1.empty() && q1.top().Now_place == dt.Now_place)//一个一个人进电梯 { People tq1 = q1.top(); q1.pop(); switch (dt.Now_place) { case 0: dt.c = 460; dt.d = 550; if (Concret1(tq1))//重复性的代码一定要做成函数 { break; } case 1: dt.c = 360; dt.d = 450; if (Concret1(tq1))//重复性的代码一定要做成函数 { break; } case 2: dt.c = 260; dt.d = 350; if (Concret1(tq1))//重复性的代码一定要做成函数 { break; } case 3: dt.c = 160; dt.d = 250; if (Concret1(tq1))//重复性的代码一定要做成函数 { break; } case 4: dt.c = 60; dt.d = 150; if (Concret1(tq1))//重复性的代码一定要做成函数 { break; } } } } void Q5_Q6() { while (!q5.empty() && q5.top().Now_place == dt.Now_place)//一个一个人进电梯 { People tq1 = q5.top(); q5.pop(); switch (dt.Now_place) { case 0: dt.c = 460; dt.d = 550; if (Concret1(tq1))//重复性的代码一定要做成函数 { break; } case 1: dt.c = 360; dt.d = 450; if (Concret1(tq1))//重复性的代码一定要做成函数 { break; } case 2: dt.c = 260; dt.d = 350; if (Concret1(tq1))//重复性的代码一定要做成函数 { break; } case 3: dt.c = 160; dt.d = 250; if (Concret1(tq1))//重复性的代码一定要做成函数 { break; } case 4: dt.c = 60; dt.d = 150; if (Concret1(tq1))//重复性的代码一定要做成函数 { break; } } } if (dt.flag)//如果门是开的,关电梯门 { setlinecolor(YELLOW); line(270, dt.c, 270, dt.d); } while (!q6.empty() && q6.top().Destination == dt.Now_place)//出电梯(一定要用while循环确保多个人出电梯队列中元素删除干净) { People tq1 = q6.top(); q6.pop(); switch (tq1.Destination) { case 0: dt.c = 460; dt.d = 550; if (Concret2())//重复性的代码一定要做成函数 { break; } case 1: dt.c = 360; dt.d = 450; if (Concret2())//重复性的代码一定要做成函数 { break; } case 2: dt.c = 260; dt.d = 350; if (Concret2())//重复性的代码一定要做成函数 { break; } case 3: dt.c = 160; dt.d = 250; if (Concret2())//重复性的代码一定要做成函数 { break; } case 4: dt.c = 60; dt.d = 150; if (Concret2())//重复性的代码一定要做成函数 { break; } } } } void Q3_Q4() { while (!q3.empty() && q3.top().Now_place == dt.Now_place)//一个一个人进电梯 { People tq1 = q3.top(); q3.pop(); switch (dt.Now_place) { case 0: dt.c = 460; dt.d = 550; if (Concret1(tq1))//重复性的代码一定要做成函数 { break; } case 1: dt.c = 360; dt.d = 450; if (Concret1(tq1))//重复性的代码一定要做成函数 { break; } case 2: dt.c = 260; dt.d = 350; if (Concret1(tq1))//重复性的代码一定要做成函数 { break; } case 3: dt.c = 160; dt.d = 250; if (Concret1(tq1))//重复性的代码一定要做成函数 { break; } case 4: dt.c = 60; dt.d = 150; if (Concret1(tq1))//重复性的代码一定要做成函数 { break; } } } if (dt.flag)//如果门是开的,关电梯门 { dt.flag = 0; setlinecolor(YELLOW); line(270, dt.c, 270, dt.d); } while (!q4.empty() && q4.top().Destination == dt.Now_place)//出电梯(一定要用while循环确保多个人出电梯队列中元素删除干净) { People tq1 = q4.top(); q4.pop(); switch (tq1.Destination) { case 0: dt.c = 460; dt.d = 550; if (Concret2())//重复性的代码一定要做成函数 { break; } case 1: dt.c = 360; dt.d = 450; if (Concret2())//重复性的代码一定要做成函数 { break; } case 2: dt.c = 260; dt.d = 350; if (Concret2())//重复性的代码一定要做成函数 { break; } case 3: dt.c = 160; dt.d = 250; if (Concret2())//重复性的代码一定要做成函数 { break; } case 4: dt.c = 60; dt.d = 150; if (Concret2())//重复性的代码一定要做成函数 { break; } } } } void Q7_Q8() { while (!q7.empty() && q7.top().Now_place == dt.Now_place)//一个一个人进电梯 { People tq1 = q7.top(); q7.pop(); switch (dt.Now_place) { case 0: dt.c = 460; dt.d = 550; if (Concret1(tq1))//重复性的代码一定要做成函数 { break; } case 1: dt.c = 360; dt.d = 450; if (Concret1(tq1))//重复性的代码一定要做成函数 { break; } case 2: dt.c = 260; dt.d = 350; if (Concret1(tq1))//重复性的代码一定要做成函数 { break; } case 3: dt.c = 160; dt.d = 250; if (Concret1(tq1))//重复性的代码一定要做成函数 { break; } case 4: dt.c = 60; dt.d = 150; if (Concret1(tq1))//重复性的代码一定要做成函数 { break; } } } if (dt.flag)//如果门是开的,关电梯门 { dt.flag = 0; setlinecolor(YELLOW); line(270, dt.c, 270, dt.d); } while (!q8.empty() && q8.top().Destination == dt.Now_place)//出电梯(一定要用while循环确保多个人出电梯队列中元素删除干净) { People tq1 = q8.top(); q8.pop(); switch (tq1.Destination) { case 0: dt.c = 460; dt.d = 550; if (Concret2())//重复性的代码一定要做成函数 { break; } case 1: dt.c = 360; dt.d = 450; if (Concret2())//重复性的代码一定要做成函数 { break; } case 2: dt.c = 260; dt.d = 350; if (Concret2())//重复性的代码一定要做成函数 { break; } case 3: dt.c = 160; dt.d = 250; if (Concret2())//重复性的代码一定要做成函数 { break; } case 4: dt.c = 60; dt.d = 150; if (Concret2())//重复性的代码一定要做成函数 { break; } } } } void Elevator_Run_Up1() { while (dt.Now_place <= 4) { TCHAR s[] = _T("UP ");//显示出电梯的运行方向,用空格键覆盖上次的显示残留 outtextxy(10, 130, s); Q1_Q2(); dt.Now_place++; } dt.Now_place--; } void Elevator_Run_Up2() { while (dt.Now_place <= 4) { TCHAR s[] = _T("UP ");//显示出电梯的运行方向,用空格键覆盖上次的显示残留 outtextxy(10, 130, s); Q5_Q6(); dt.Now_place++; } dt.Now_place--; } void Elevator_Run_Down1() { while (dt.Now_place >= 0) { TCHAR s[] = _T("DOWN ");//显示出电梯的运行方向,用空格键覆盖上次的显示残留 outtextxy(10, 130, s); Q3_Q4(); dt.Now_place--; } dt.Now_place++; } void Elevator_Run_Down2() { while (dt.Now_place >= 0) { TCHAR s[] = _T("DOWN ");//显示出电梯的运行方向,用空格键覆盖上次的显示残留 outtextxy(10, 130, s); Q7_Q8(); dt.Now_place--; } dt.Now_place++; } int main() { initgraph(400, 600);//设置输出框的大小 Background_Init();//初始化整个背景图形 Elevator_Init(); char c = 1; while (1) { //获取按键 //c = _getch(); // if (c == 113)//按Q键进行人状态的初始化刷新 // { Init_people(); // } //if (c == 27)//按ESC键终止整个程序的运行 //{ // break; //} //_getch();//按任意键电梯开始运行 Elevator_Run_Up1(); Elevator_Run_Down1(); Elevator_Run_Up2(); Elevator_Run_Down2(); Elevator_Init2(); // TCHAR s[] = _T("STOP ");//显示出电梯处于停止状态,用空格键覆盖上次的显示残留 // outtextxy(10, 130, s); } closegraph(); // 关闭绘图屏幕 }
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/u014285517/article/details/47104915