📄 dianti.txt
字号:
m=POSETION/10;
switch(m)
{
case 1:outtextxy(232,50,"1");break;
case 2:outtextxy(232,50,"2");break;
case 3:outtextxy(232,50,"3");break;
case 4:outtextxy(232,50,"4");break;
case 5:outtextxy(232,50,"5");break;
case 6:outtextxy(232,50,"6");break;
case 7:outtextxy(232,50,"7");break;
case 8:outtextxy(232,50,"8");break;
case 9:outtextxy(232,50,"9");break;
}
}
void drawlift()
{
setcolor(RED);
rectangle(60,280,120,310);
setfillstyle(SOLID_FILL,BLUE);
floodfill(70,300,RED);
}
void directionlight_control()
{
if(AIMFLOOR!=10&&(POSETION%10!=0||POSETION/10!=AIMFLOOR))
{if(DIRECTION==1)
{
setfillstyle(SOLID_FILL,YELLOW);
floodfill(arr_instructioncoordinate[1][0],arr_instructioncoordinate[1][1],RED);
}
else if(DIRECTION==2)
{
setfillstyle(SOLID_FILL,YELLOW);
floodfill(arr_instructioncoordinate[0][0],arr_instructioncoordinate[0][1],RED);
}
}
else if(AIMFLOOR==10||(POSETION%10==0&&POSETION/10==AIMFLOOR))
{
setfillstyle(SOLID_FILL,BLACK);
floodfill(arr_instructioncoordinate[0][0],arr_instructioncoordinate[0][1],RED);
setfillstyle(SOLID_FILL,BLACK);
floodfill(arr_instructioncoordinate[1][0],arr_instructioncoordinate[1][1],RED);
}
}
void buttonon_control()
{
int i,record;
for(i=1;i<=9;i++)
{if(request.callin[i]!=0)record=i;
switch(record)
{
case 1:setfillstyle(SOLID_FILL,YELLOW);floodfill(211,100,RED);
setcolor(GREEN);settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
outtextxy(212,100,"1");break;
case 2:setfillstyle(SOLID_FILL,YELLOW);floodfill(231,100,RED);
setcolor(GREEN);settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
outtextxy(232,100,"2");break;
case 3:setfillstyle(SOLID_FILL,YELLOW);floodfill(211,140,RED);
setcolor(GREEN);settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
outtextxy(212,140,"3");break;
case 4:setfillstyle(SOLID_FILL,YELLOW);floodfill(231,140,RED);
setcolor(GREEN);settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
outtextxy(232,140,"4");break;
case 5:setfillstyle(SOLID_FILL,YELLOW);floodfill(211,180,RED);
setcolor(GREEN);settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
outtextxy(212,180,"5");break;
case 6:setfillstyle(SOLID_FILL,YELLOW);floodfill(231,180,RED);
setcolor(GREEN);settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
outtextxy(232,180,"6");break;
case 7:setfillstyle(SOLID_FILL,YELLOW);floodfill(211,220,RED);
setcolor(GREEN);settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
outtextxy(212,220,"7");break;
case 8:setfillstyle(SOLID_FILL,YELLOW);floodfill(231,220,RED);
setcolor(GREEN);settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
outtextxy(232,220,"8");break;
case 9:setfillstyle(SOLID_FILL,YELLOW);floodfill(211,260,RED);
setcolor(GREEN);settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
outtextxy(212,260,"9");break;
}
}
}
void buttonoff_control()
{
int i,record;
for(i=1;i<=9;i++)
{
if(request.callin[i]==0)record=i;
setcolor(GREEN);
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
switch(record)
{
case 1:setfillstyle(SOLID_FILL,BLACK);floodfill(211,100,RED);
outtextxy(212,100,"1");break;
case 2:setfillstyle(SOLID_FILL,BLACK);floodfill(231,100,RED);
outtextxy(232,100,"2");break;
case 3:setfillstyle(SOLID_FILL,BLACK);floodfill(211,140,RED);
outtextxy(212,140,"3");break;
case 4:setfillstyle(SOLID_FILL,BLACK);floodfill(231,140,RED);
outtextxy(232,140,"4");break;
case 5:setfillstyle(SOLID_FILL,BLACK);floodfill(211,180,RED);
outtextxy(212,180,"5");break;
case 6:setfillstyle(SOLID_FILL,BLACK);floodfill(231,180,RED);
outtextxy(232,180,"6");break;
case 7:setfillstyle(SOLID_FILL,BLACK);floodfill(211,220,RED);
outtextxy(212,220,"7");break;
case 8:setfillstyle(SOLID_FILL,BLACK);floodfill(231,220,RED);
outtextxy(232,220,"8");break;
case 9:setfillstyle(SOLID_FILL,BLACK);floodfill(211,260,RED);
outtextxy(212,260,"9");break;
}
}
}
void instructionlight_control()
{int i;
for(i=1;i<=8;i++)
{
if(request.callup[i]!=0)
{
setfillstyle(SOLID_FILL,YELLOW);
floodfill(arr_upcoordinate[i][0],arr_upcoordinate[i][1],RED);
}
if(request.callup[i]==0)
{
setfillstyle(SOLID_FILL,BLACK);
floodfill(arr_upcoordinate[i][0],arr_upcoordinate[i][1],RED);
}
}
for(i=2;i<=9;i++)
{
if(request.calldown[i]!=0)
{
setfillstyle(SOLID_FILL,YELLOW);
floodfill(arr_downcoordinate[i][0],arr_downcoordinate[i][1],RED);
}
if(request.calldown[i]==0)
{
setfillstyle(SOLID_FILL,BLACK);
floodfill(arr_downcoordinate[i][0],arr_downcoordinate[i][1],RED);
}
}
}
void movelift()
{
div_t x;
x=div(POSETION,10);
putimage(60,280-35*(x.quot-1)-7*(x.rem/2),buf,COPY_PUT);
if(POSETION/10>1)
{setfillstyle(SOLID_FILL,BLACK);
floodfill(70,300,RED);
}
}
void Output() /*图形输出*/
{
cleardevice();
drawfloor();
drawinlift();
drawarrow();
instructionlight_control();
directionlight_control();
buttonon_control();
buttonoff_control();
movelift();
}
Tactics() /*策略(顺便服务)*/
{
int a[3][9]={{0},{0},{0}},i,j1=0,j2=0,j3=0;
AIMFLOOR=10;
for(i=1;i<=10;i++) /*查找呼叫并记录*/
{
if(request.callin[i]==1) a[0][j1++]=i;
if(request.callup[i]==1) a[1][j2++]=i;
if(request.calldown[i]==1) a[2][j3++]=i;
}
if(DIRECTION==2) up(a); /*向上运行策略*/
if(DIRECTION==1) down(a); /*向下运行策略*/
if(DIRECTION==2) up(a); /*向上运行策略*/
if(AIMFLOOR==10) DIRECTION=2; /*无呼叫*/
}
up(int a[3][9]) /*向上运行策略*/
{
int i;
int currentfloor=POSETION/10; /*当前楼层*/
AIMFLOOR=10;
for(i=0;i<9;i++) /*在向上呼叫中确定目标楼层*/
{
if(a[0][i]>currentfloor&&a[0][i]<AIMFLOOR) AIMFLOOR=a[0][i];
if(a[1][i]>currentfloor&&a[1][i]<AIMFLOOR) AIMFLOOR=a[1][i];
}
if(AIMFLOOR==10) /*若未找到目标楼层,在向下呼叫中确定目标楼层*/
for(i=0;i<9;i++)
if(a[2][i]>currentfloor&&a[2][i]<AIMFLOOR) AIMFLOOR=a[2][i];
if(AIMFLOOR==10) DIRECTION=1; /*若未找到目标楼层,反向*/
}
down(int a[3][9]) /*向下运行策略*/
{
int i;
int currentfloor=POSETION/10+1;
AIMFLOOR=0;
for(i=0;i<9;i++)
{
if(a[0][i]<currentfloor && a[0][i]>AIMFLOOR) AIMFLOOR=a[0][i];
if(a[2][i]<currentfloor && a[2][i]>AIMFLOOR) AIMFLOOR=a[2][i];
}
if(AIMFLOOR==0)
for(i=0;i<9;i++)
if(a[1][i]<currentfloor &&a [1][i]>AIMFLOOR) { AIMFLOOR=a[1][i]; break;}
if(AIMFLOOR==0) DIRECTION=2;
}
Tactics_xl() /*策略(先来先服务)*/
{
int i;
if((AIMFLOOR==POSETION/10)&&(POSETION%10==0)) /*若到达目标楼层,删除请求记录,计数加一*/
{
for(i=1;i<10;i++)if(request.callin[i]==K2)request.callin[i]=0;
for(i=1;i<9;i++)if(request.callup[i]==K2)request.callup[i]=0;
for(i=2;i<10;i++)if(request.calldown[i]==K2)request.calldown[i]=0;
K2++;
}
AIMFLOOR=10;
for(i=1;i<10;i++)if(request.callin[i]==K2)AIMFLOOR=i; /*根据呼叫顺序找出目标楼层*/
for(i=1;i<9;i++)if(request.callup[i]==K2)AIMFLOOR=i;
for(i=2;i<10;i++)if(request.calldown[i]==K2)AIMFLOOR=i;
if((AIMFLOOR==POSETION/10)&&(POSETION%10==0))DIRECTION=0; /*如目标楼层为当前楼层,无方向*/
if(AIMFLOOR*10>POSETION)DIRECTION=2; /*根据目标楼层改变运行方向*/
if(AIMFLOOR*10<POSETION)DIRECTION=1;
}
void menu() /*选择菜单*/
{int gdriver=DETECT,gmode,errorcode;
int yes;
int oyes=1;
while(oyes)
{
initgraph(&gdriver,&gmode,"");
errorcode=graphresult();
if(errorcode!=grOk)
{
printf("Graphics error:%s\n",grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
setbkcolor(BLUE);
cleardevice();
yes=1;
setcolor(CYAN);
setfillstyle(SOLID_FILL,LIGHTGREEN);
bar(60,60,550,400);
setcolor(BLACK);
settextstyle(TRIPLEX_FONT,HORIZ_DIR,5);
outtextxy(80,80," Simulative Elevator");
settextstyle(TRIPLEX_FONT,HORIZ_DIR,4);
setcolor(WHITE);
outtextxy(160,160,"Incidental service");
setcolor(RED);
outtextxy(160,220,"First arrive first served");
setcolor(YELLOW);
outtextxy(160,280,"Quit");
setcolor(MAGENTA);
settextstyle(TRIPLEX_FONT,HORIZ_DIR,1);
outtextxy(180,360,"Copyright @ Dengyi Zhutienan Dengbin");
drawball(keyx,keyy,BROWN);
while(yes)
{key=bioskey(0);
if(key==UP)
{drawball(keyx,keyy,LIGHTGREEN);
if(keyy!=180)
keyy-=60;
else
keyy=300;
drawball(keyx,keyy,BROWN);
}
if(key==DOWN)
{
drawball(keyx,keyy,LIGHTGREEN);
if(keyy!=300)
keyy+=60;
else
keyy=180;
drawball(keyx,keyy,BROWN);
}
if(key==ENTER)
{switch(keyy)
{case 180:
case 240:yes=0;oyes=0;break;
case 300:yes=0;oyes=0;closegraph();
}
}
}
}
}
save()
{ FILE *fp;
time_t second;
int margin,min,sec;
second = time(NULL);
margin=(int)difftime(second,first);
min=margin/60;
sec=margin%60;
fp=fopen("e:\RS.txt","a");
if(fp==NULL) { printf("cannot open this file\n"); exit(0);}
fprintf(fp,"%2d:%2d %d\n",min,sec,POSETION/10);
fclose(fp);
}
main()
{
FILE *fp;
int i;
int a;
m:menu(); /*显示菜单*/
if(keyy==180)
{ fp=fopen("e:\RS.txt","a");
if(fp==NULL) { printf("cannot open this file\n"); exit(0);}
fprintf(fp,"\n\nIncidental service\n");
fprintf(fp,"stop time stopfloor\n");
fclose(fp);
}
if(keyy==240)
{ fp=fopen("e:\RS.txt","a");
if(fp==NULL) { printf("cannot open this file\n"); exit(0);}
fprintf(fp,"\n\nFirst think first\n");
fprintf(fp,"stop time stopfloor\n");
fclose(fp);
}
Initialize(); /*初始化*/
first=time(NULL);
while(keyy==180) /*若选择执行顺便服务策略*/
{Input(); /*输入*/
if(EXIT==1){EXIT=0;goto m;} /*若退出,跳回选择菜单*/
Lift_status(); /*改变电梯位置*/
Output(); /*输出*/
}
Initialize();
while(keyy==240) /*若选择执行先来先服务策略*/
{Input_xl();
if(EXIT==1){EXIT=0;goto m;} /*若退出,跳回选择菜单*/
Lift_status_xl();
Output();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -