作者在 2012-01-06 13:25:01 发布以下内容
#include<time.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
#define PASSWORD "000"
#define PRICE 5.0
#define END 24
#define SPEED_CAR 150
#define SELCET 300
#define EXIST 1 //EXISTŽú±íµ±Ç°³µÎ»Óгµ
#define NO 0 //NO Žúµ±Ç°³µÎ»±íû³µ
/*
ŽŽœšÒ»žö¶þάÊý×飬ģÄâ³µ¿âµÄÆœÃæÊŸÒâÍŒ
ŽŽœšÁœžö¶ÓÁУ¬Ä£Äâœø¿âºÍ³ö¿âµÄ¶ÓÁÐ
³µÁŸµÄ¶ÓÁÐÓë³ö¿âÖ®ŒäÍš¹ý×ø±êœøÐÐÁªÏµ
³µÎ»Óпգ¬µ«ÓÐŒÈÓгµ¿âÓÖÓгµ³ö¿âʱ£¬
×ñÕÕÏȳöºóœøµÄÔÔò£¬
ŒŽ£¬³ö¿âµÄÓÅÏÈŒ¶žßÓÚÈë¿âµÄÓÅÏÈŒ¶*
*/
struct Coordinate
{
int x;
int y;
};
struct Car
{
int number; //³µÅƺÅ
int time_inner; //ÔÚ³µ¿âÀïµÄÍ£³µÊ±Œä
int probability; //ŽæŽ¢³µÁŸÀëÈ¥µÄžÅÂÊ,1,2,3,4Œ¶ÊýÒ»ŽÎÔöŽó
double cost; //žÃŽÎÍ£³µÓŠž¶·ÑÓÃ
char time_insert; //œø¿âʱŒä
char time_left; //³ö¿âʱŒä, ³ö¿âµÄʱŒäµÈÓÚœø¿âʱŒäŒÓ³ö¿âʱµÄprobability
Coordinate local; //µ±Ç°³µÁŸËùÔÚ/Òª³öµÄ¿â±àºÅ
Car *next; //ÓÉÓÚ³µÁŸÊý²¢²»È·¶š£¬ÒòŽËÓÃÁŽÊœŽæŽ¢
};
int Time=0;
double Sum_Money=0.0;
bool Garage[2][10]; //ÓÃ10*2µÄ·œžñÄ£Äâ³µ¿âµÄÆœÃæÊŸÒâÍŒ
Car *Head_Out=(Car *)malloc(sizeof(Car)); //ÔÚ³µ¿âÀ׌±ž³öÀŽµÄ³µ¶Ó
Car *Head_In=(Car *)malloc(sizeof(Car)); //ÔÚÍâÃæÅŶӣ¬×Œ±žœø¿âµÄ³µ¶Ó
/* ³µ¿âµÄÆœÃæÊŸÒâ¡¢³µ¶ÓµÄÍ·ÖžÕë¡¢ÊÕÒæÉèΪȫŸÖ±äÁ¿£¬ÕâÑù·œ±ãž÷º¯ÊýµÄµ÷ÓÃ*/
void gotoxy(int x, int y)
{
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
int Insert_Password(int flag)
{
char key[20],c;
int count=0;
if(flag)
{
system("cls");
puts("\nÎÂÜ°ÌáÊŸ£¬ÄãµÄÊäÈëÃÜÂëÓÐÎó\n\n");
}
printf("\nÇëÊäÈëÃÜÂë £º ");
while(c=getch(),c!='\r')
{
if(c==8)
{
system("cls");
if(flag)
printf("\nÎÂÜ°ÌáÊŸ£¬ÄãµÄÊäÈëÃÜÂëÓÐÎó\n\n");
printf("\nÇëÊäÈëÃÜÂë £º ");
if(count>0)
{
key[--count]='\0';
for(int i=0;i<count;i++)
printf("¡ñ");
}
}
else if(count>=0)
{
printf("¡ñ");
key[count++]=c,key[count]='\0';
}
}
if(strcmp(key,PASSWORD)==0)
{
system("cls");
gotoxy(35,5);
puts("ÃÜÂëÕýÈ·");
Sleep(2000);
return 1;
}
else return Insert_Password(1);
}
void Enter()
{
for(int i=0;i<15;i++)
{
gotoxy(35,5);
puts("ÕýÔÚµÇÂŒ\n");
Sleep(200);
for(int j=0;j<i;j++)
{
if(!j)
printf("\t\t\t¡ö");
else printf("¡ö");
}
}
system("cls");
}
void Get_Time() //»ñÈ¡œø³ö³µ¿âµÄʱŒä
{
time_t rawtime;
struct tm *timeinfo;
time (&rawtime);
timeinfo = localtime (&rawtime);
gotoxy(61,1);
printf("%d",timeinfo->tm_hour);
gotoxy(66,1);
printf("%d",timeinfo->tm_min);
gotoxy(71,1);
printf("%d",timeinfo->tm_sec);
gotoxy(0,END);
}
void Print_Left_Form()
{
gotoxy(8,0);
printf("©Š");
gotoxy(0,1);
printf("¡ª¡ª¡ª¡ª©Œ");
gotoxy(3,4);
printf("ÅŶӳµÁŸ");
gotoxy(0,5);
printf("©°¡ª¡ª¡ª¡ª¡ª¡ª©Ž");
for(int i=6;i<23;i+=2)
{
gotoxy(0,i),printf("©ŠÅƺŠ©Š");
gotoxy(0,i+1),printf("©À¡ª¡ª¡ª¡ª¡ª¡ª©È");
}
gotoxy(0,22);
printf("©ŠÅƺŠ©Š");
gotoxy(0,23);
printf("©ž¡ª¡ª¡ª¡ª¡ª¡ª©Œ");
}
void Print_Right_Form()
{
gotoxy(51,1);
printf("µ±Ç°Ê±Œä: ʱ ·Ö Ãë");
//gotoxy(51,4);
gotoxy(50,6);
printf("©°¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©Ž");
gotoxy(50,7);
printf("©Š œø¿â³µÁŸÊý£º\t ©Š");
gotoxy(50,8);
printf("©À¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©È");
gotoxy(50,9);
printf("©Š ³ö¿â³µÁŸÊý£º\t ©Š");
gotoxy(50,10);
printf("©ž¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©Œ");
gotoxy(50,13);
printf("©°¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©Ž");
for(int y=14;y<23;y++)
{
gotoxy(50,y);
printf("©Š");
gotoxy(74,y);
printf("©Š");;
gotoxy(50,++y);
printf("©Š");
gotoxy(74,y);
printf("©Š");
}
gotoxy(50,23);
printf("©ž¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©Œ");
}
void Fun()
{
gotoxy(53,14);
printf("³µÅƺţº\t\t");
gotoxy(50,15);
printf("©À¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©È");
gotoxy(53,16);
printf("³ö¿â×ø±ê£º\t\t");
gotoxy(50,17);
printf("©À¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©È");
gotoxy(53,18);
printf("ÓŠœÉ·ÑÓãº\t\t");
gotoxy(50,19);
printf("©À¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©È");
gotoxy(53,20);
printf("Í£ÁôʱŒä£º\t\t");
gotoxy(50,21);
printf("©À¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©È");
gotoxy(53,22);
printf("Í£Áôʱ¶Î£º\t\t ");
}
void Print_Garage()
{
system("cls");
gotoxy(0,0);
puts("\n\t\t ©°¡ª¡ª¡ª¡ª©Ð¡ª¡ª©Ð¡ª¡ª¡ª¡ª©Ž");
for(int i=0;i<10;i++)
{
if(Garage[0][i]) printf("\t\t ©Š ¡ö¡ö¡ö ");
else printf("\t\t ©Š \t");
if(Garage[1][i]) puts("\t ¡ö¡ö¡ö ©Š");
else puts("\t \t ©Š");
if(i==9)
puts("\t\t ©ž¡ª¡ª¡ª¡ª©È¡ý¡ü©À¡ª¡ª¡ª¡ª©Œ");
else if(i==0||i==3||i==6)
puts("\t\t ©À¡ª¡ª¡ª¡ª©È¡ý¡ü©À¡ª¡ª¡ª¡ª©È");
else
puts("\t\t ©À¡ª¡ª¡ª¡ª©È\t ©À¡ª¡ª¡ª¡ª©È");
}
puts("\t\t\t ©Š ©Š");
printf("\t\t\t ©Š¡ý¡ü©Š");
/*Êä³ö³µ¿âµÄÆœÃæÊŸÒâÍŒ*/
gotoxy(15,0);
printf("©°¡ª¡ú x");
gotoxy(15,1);
printf("©Š");
gotoxy(15,2);
printf("¡ý");
gotoxy(15,3);
printf("y");
gotoxy(14,0);
printf("0");
/*¶Ô×ø±êÊä³öÉèÖÃ*/
}
void Declare()
{
Sleep(1000);
int speed=200;
int i;
gotoxy(38,6);
char s[][3]={"Ö£","ÖØ","Éê","Ã÷",
"±Ÿ","³Ì","Ðò","Ϊ","ÕÅ","ì÷","×Ô","Ö÷","ŽŽ","ÐÂ","¿ª","·¢",
"Ÿø","ÎÞ","µÁ","°æ","»ò","Õß","Øâ","ÇÔ","Ëû","ÈË","Ö®","ÏÓ","#"};
for(i=0;strcmp(s[i],"#");i++)
{
printf("%s",s[i]);
Sleep(speed);
if(i==3)
gotoxy(30,8);
if(i==15)
gotoxy(30,10);
}
Sleep(1000);
system("cls");
Print_Left_Form();
char s_1[][3]={"µ±","Ç°","œø","³ö","³µ","¿â","Ïû","Ï¢","#"};
gotoxy(10,2);
puts("šI");
Sleep(speed);
gotoxy(13,3);
for(i=0;strcmp(s_1[i],"#");i++)
{
printf("%s",s_1[i]);
Sleep(speed);
}
Sleep(1000);
system("cls");
Print_Left_Form();
gotoxy(18,14),printf("¡û ");
char s_2[][3]={"µ±","Ç°","ÅÅ","¶Ó","³µ","ÁŸ","Œ°","Æä","³µ","ÅÆ","ºÅ","#"};
for(i=0;strcmp(s_2[i],"#");i++)
{
printf("%s",s_2[i]);
Sleep(speed);
}
Sleep(1000);
system("cls");
Print_Right_Form();
Fun();
gotoxy(32,4);
char s_3[][3]={"ÏÔ","ÊŸ","µ±","Ç°","±Ÿ","µØ","ʱ","Œä","#"};
for(i=0;strcmp(s_3[i],"#");i++)
{
printf("%s",s_3[i]);
Sleep(speed);
}
gotoxy(49,3);
puts("šJ");
Sleep(speed);
Sleep(1000);
system("cls");
Print_Right_Form();
Fun();
gotoxy(24,8);
char s_4[][3]={"Ò»","С","ʱ","ÄÚ","œø","¡¢","³ö","µÄ","³µ","ÁŸ","Êý","#"};
for(i=0;strcmp(s_4[i],"#");i++)
{
printf("%s",s_4[i]);
Sleep(speed);
}
gotoxy(47,7);
puts("šJ");
gotoxy(47,9);
puts("šK");
Sleep(1000);
system("cls");
Print_Right_Form();
Fun();
char s_5[][3]={"œø","¡¢","³ö","¿â","³µ","ÁŸ","ÐÅ","Ï¢","#"};
gotoxy(28,18);
for(i=0;strcmp(s_5[i],"#");i++)
{
printf("%s",s_5[i]);
Sleep(speed);
}
puts(" ¡ú");
Sleep(1000);
system("cls");
Print_Garage();
char s_6[][3]={"³µ","¿â","×ø","±ê","#"};
gotoxy(0,2);
for(i=0;strcmp(s_6[i],"#");i++)
{
printf("%s",s_6[i]);
Sleep(speed);
}
gotoxy(9,1);
printf("šJ");
Sleep(1000);
system("cls");
Print_Garage();
char s_7[][3]={"³µ","¿â","¶þ","ά","Æœ","Ãæ","ÊŸ","Òâ","ÍŒ","#"};
gotoxy(47,11);
printf("¡û ");
for(i=0;strcmp(s_7[i],"#");i++)
{
printf("%s",s_7[i]);
Sleep(speed);
}
Sleep(1000);
system("cls");
}
void Print_Right_Info()
{
int i=0;
char menu[][4]={"¿Õ","Žú","±í","žÃ","³µ","λ","¿É","ÒÔ","Í£","³µ",
"¡ö","Žú","±í","žÃ","³µ","λ","ÒÑ","ÓÐ","³µ","Í£",
"·Å","Çë","°Ž","¡ü ","¡ý ","¡û ","¡ú ","œø","ÐÐ","Ñ¡",
"Ôñ","Òª","œø","Èë","µÄ","³µ","λ","##"};
gotoxy(59,12);
printf("³µÁŸÐÅÏ¢");
gotoxy(53,15);
while(strcmp(menu[i],"##"))
{
if(i==10)
gotoxy(53,17);
if(i==20)
gotoxy(53,19);
if(i==28)
gotoxy(53,21);
if(i==40)
gotoxy(53,23);
printf("%s",menu[i++]);
Sleep(200);
}
Sleep(1000);
}
void Repair_Road_Sign()
{
gotoxy(29,3);
printf("¡ý¡ü");
gotoxy(29,9);
printf("¡ý¡ü");
gotoxy(29,15);
printf("¡ý¡ü");
gotoxy(29,END-1);
printf("¡ý¡ü");
}
void Print_Number(int n)
{
Sleep(500);
int a[5];
memset(a,0,sizeof(a));
int i;
i='A',i+=n%10; //œ«³µÅƺŵÄ×îºóһλת»¯³ÉŽóÐŽ×ÖÄž£¬ÒÔ±ãÃÀ¹Û
printf("%c ",i);
i=4;
while(n)
{
a[i--]=n%10;
n/=10;
}
for(i=0;i<5;i++)
{
printf("%d",a[i]);
Sleep(300);
}
}
bool Check_Space()
{
for(int i=0;i<10;i++)
if(Garage[0][i]==0||Garage[1][i]==0)
return 1;
return 0;
/* 0Žú±í²»ŽæÔÚ¿Õ³µÎ»£¬1Žú±íŽæÔÚ¿Õ³µÎ»*/
}
bool Check_Car()
{
Car *p=Head_Out->next;
while(p)
{
if(p->probability)
{
return 1;
}
p=p->next;
}
return 0;
/* 0Žú±í³µ¿âÀï²»ŽæÔÚÔÚ³µ£¬1Žú±í³µ¿âÀïŽæÔÚ³µ,ŽæÔÚ³µ²»ÊÇŒòµ¥µÄŽæÔÚ£¬ÒªŒì²éŽæÔÚÊÇ·ñÄÜ¿ª×ߵijµ*/
/*ÓÉÓÚÉ挰µœ¶ÔžÅÂʵČìË÷£¬¹ÊÖ±œÓ¶Ô³ö¿âÁŽ±íŒìË÷*/
}
void Select_Continue()
{
gotoxy(31,4);
printf("Ò»žöСʱ¹ýºó¡£¡£¡£¡£¡£¡£");
gotoxy(26,6);
printf(" ¡ú ŒÌÐø¹ÜÀí ²é¿ŽÊÕÈë");
char c;
int flag=0;
while(c=getch(),c!='\r')
{
switch(c)
{
case 75:
case 77:
if(flag%2)
{
gotoxy(42,6);
printf(" ");
gotoxy(27,6);
printf("¡ú");
flag=0;
}
else
{
gotoxy(27,6);
printf(" ");
gotoxy(42,6);
printf("¡ú");
flag=1;
}
break;
default:break;
}
gotoxy(0,0);
}
if(flag)//²é¿ŽÊÕÈë
{
system("cls");
gotoxy(32,5);
printf("Ä¿Ç°×ÜÊÕÈëΪ£º%.2lf\n\n",Sum_Money);
gotoxy(26,8);
printf(" ¡ú ŒÌÐøÔËÐÐ Í˳ö³ÌÐò");
gotoxy(0,0);
flag=0;
while(c=getch(),c!='\r')
{
switch(c)
{
case 75:
case 77:
if(flag%2)
{
gotoxy(42,8);
printf(" ");
gotoxy(27,8);
printf("¡ú");
flag=0;
}
else
{
gotoxy(27,8);
printf(" ");
gotoxy(42,8);
printf("¡ú");
flag=1;
}
break;
default:break;
}
gotoxy(0,0);
}
if(flag)
{
gotoxy(28,10);
printf("©°¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©Ž");
gotoxy(28,11);
printf("©Š лл¹ÛÉÍ£¬ÔÙŒû£¡£¡£¡ ©Š");
gotoxy(28,12);
printf("©ž¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©Œ");
exit(0);
}
}
}
void Insert_Out_Car(int x,int y) //ËùÓÐÔÚ³µ¿âÀï³µÁŸµÄ¶ÓÁÐ,x,yÊÇÕÒµœ¿ÕλµÄ×ø±ê
{
Car *p=Head_Out;
while(p->next)
p=p->next; // ÕÒµœËùÓÐÔÚ³µ¿âÀï³µµÄ¶Óβ
p->next=(Car *)malloc(sizeof(Car)); /*œøÐÐÁ¬œÓ*/
if(p->next==NULL)
{
system("cls");
gotoxy(38,6);
puts("³ÌÐò±ÀÀ£");
exit(0);
}
p=p->next,p->next=NULL;
p->local.x=x;
p->local.y=y; //³µ¿âÀï×îºóÒ»ÁŸ³µµÄ×ø±ê
Car *q=Head_In->next;
/* ÓÉÓÚÅŶӵijµÊÇÒ»žö¶ÓÁУ¬ÒòŽËÅÅÔÚ×îÇ°µÄµ±È»ÏÈœø*/
p->number=q->number;
p->time_insert=q->time_insert;
p->probability=q->probability;
p->cost=0.0;
p->time_insert=Time;
Head_In->next=q->next; //ÉŸ³ýÅŶӶÓÁеĵÚÒ»žöœáµã
free(q);
}
void Print_Car_Info(int x,int y,bool flag)
{
gotoxy(53,14);printf("³µÅƺţº\t\t");
gotoxy(50,15);printf("©À¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©È");
if(!flag)
{
gotoxy(53,16);
printf("³ö¿â×ø±ê£º\t\t");
}
else
{
gotoxy(53,16);
printf("Èë¿â×ø±ê£º\t\t");
}
gotoxy(50,17);
printf("©À¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©È");
gotoxy(53,18);
printf("ÓŠœÉ·ÑÓãº\t\t");
gotoxy(50,19);
printf("©À¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©È");
gotoxy(53,20);
printf("Í£ÁôʱŒä£º\t\t");
gotoxy(50,21);
printf("©À¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©È");
gotoxy(53,22);
printf("Í£Áôʱ¶Î£º\t\t ");
Car *p=Head_Out->next;
while(p)
{
if(p->local.x==x&&p->local.y==y)
break;
p=p->next;
Get_Time();
}/*ÕÒµœ×îºóÒ»žöœáµã*/
gotoxy(65,14);
Print_Number(p->number); //Êä³ö³µÅƺÅ
Sleep(400);
gotoxy(65,16);
printf("(%d,%d)",x,y); //Êä³ö×ø±ê
Get_Time();
Sleep(400);
gotoxy(65,18);
printf("%.2lf",p->cost); //Êä³ö·ÑÓÃ
Sleep(400);
gotoxy(65,20);
printf("%d Сʱ",p->probability); //Êä³öÍ£ÁôʱŒä£¬ÊµŒÊÉÏŸÍÊÇžÅÂÊ
Sleep(400);
Get_Time();
gotoxy(65,22);
printf("%02d ¡ú %02d",(p->time_insert)%24,(p->time_insert+p->probability)%24);//Êä³öÍ£ÁôʱŒä¶Î
Sum_Money+=p->cost; //×ÜÊÕÈëÄÜÔÙÓгµÁŸ³ö¿âʱŒÆËãÒ»ŽÎ
}
Coordinate Find_Garage() //²éÕÒ¿ÉÒÔÍ£³µµÄ³µÎ»
{
Coordinate p; //p¿ØÖƳµ¿âµÄ×ø±ê
int x=30,y=2; //x,y·Ö±ð¿ØÖƹâ±êµÄ×ø±ê
gotoxy(x-1,y);
printf("¡û"); //³õÊŒ¹â±ê
for(p.y=0;p.y<10;p.y++,y+=2)
{
p.x=0;
while(p.x<2)
{
gotoxy(x,y);
if(p.x) printf(" ¡ú");
else
{
gotoxy(x-1,y);
printf("¡û");
}
if(Garage[p.x][p.y])
Get_Time();
else
{
Sleep(SELCET);
Sleep(500);
return p;
}
gotoxy(0,END-1);
Sleep(SELCET);
p.x++;
gotoxy(x,y);
printf(" ");
Repair_Road_Sign();
}
}
return p;
}
void Enter_Into(Coordinate p) //Ê»È뺯Êý
{
int x=p.x;
int y=p.y;
int i;
for(i=1;i<END-2*p.y-1;i++)
{
if(i>3)
{
gotoxy(31,END-i+3);
printf(" ");
}
gotoxy(31,END-i);
printf("¡ö");
Get_Time();
if(END-i==12||END-i==20||END-i==18||END-i==6)
{
gotoxy(31,END-i+3);
printf("¡ü");
}
Sleep(SPEED_CAR);
Get_Time();
}
if(p.x) //œøµœÓÒ±ß
{
gotoxy(33,2*p.y+2);
printf("¡ö");
gotoxy(31,2*p.y+4);
printf(" ");
Sleep(SPEED_CAR);
Get_Time();
gotoxy(35,2*p.y+2);
printf("¡ö");
Get_Time();
gotoxy(31,2*p.y+3);
printf(" ");
Sleep(SPEED_CAR);
Repair_Road_Sign();
gotoxy(32,2*p.y+2);
printf(" ¡ö¡ö¡ö");
gotoxy(34,2*p.y+2);
printf(" ¡ö¡ö¡ö");
Sleep(SPEED_CAR);
}
else //œøµœ×ó±ß
{
gotoxy(29,2*p.y+2);
printf("¡ö");
gotoxy(32,2*p.y+4);
printf(" ");
Sleep(SPEED_CAR);
gotoxy(27,2*p.y+2);
printf("¡ö");
Get_Time();
gotoxy(31,2*p.y+3);
printf(" ");
Sleep(SPEED_CAR);
Repair_Road_Sign();
gotoxy(24,2*p.y+2);
printf("¡ö¡ö¡ö ");
Sleep(SPEED_CAR);Get_Time();
gotoxy(20,2*p.y+2);
printf("¡ö¡ö¡ö ");
Sleep(SPEED_CAR);
}
}
bool Must_Drive_Out() //Í£³µŽïµœ4Сʱ£¬±ØÐëÒªÀ뿪µÄ³µ
{
Car *p=Head_Out->next;
while(p)
{
if(p->probability==4)
return 1;
p=p->next;
}
return 0;
}
Coordinate Select_Garage() //Ñ¡Ôñ³ö¿âµÄλÖÃ
{
Car *q=NULL;
int flag;
bool mark=0; //0±íÊö²»ŽæÔÚÕâÀà³µ
int number[20];
memset(number,0,sizeof(number));
while(mark==0)
{
if(Must_Drive_Out()) flag=4;
else
{
flag=rand()%10;
/*
³ö³µ¿âʱžÅÂÊŒÆËã³öÄÄÒ»Àà,Ëæ»úÊýÓŠÔÚ[0,9]Ö®Œä
[0,1)±íÊŸÍ£Áô1Сʱ³µÀ뿪µÄžÅÂÊ
[1,2]±íÊŸÍ£Áô2Сʱ³µÀ뿪µÄžÅÂÊ
[3,5]±íÊŸÍ£Áô3Сʱ³µÀ뿪µÄžÅÂÊ
[6,9]±íÊŸÍ£Áô4СʱÀ뿪µÄžÅÂÊ
*/
if(flag==0)
flag=1;
else if(flag<=2)
flag=2;
else if(flag<=5)
flag=3;
else if(flag<=9)
flag=4;
}
/*ÏÂÃæÊǶÔÕâÀà³µÊÇ·ñŽæÔÚ×öŒìË÷£¬ÔÚ³ö³µ¶ÓÁÐÀïŒìË÷*/
q=Head_Out->next;
while(q)
{
if(q->probability==flag)
{
mark=1; //ŽæÔÚÕâÀà³µ
break;
}
q=q->next;
}
}
/* ÒÔÉÏÊǶԳö³µžÅÂʵČÆËã*/
/*×îºóÈ·¶šÒª³öµÄ³µÁŸÊÇÄÄÒ»Àà*/
q=Head_Out->next;
int k=0;
while(q)
{
if(q->probability==flag)
number[k++]=q->number;
q=q->next;
}
k=rand()%k; //Ëæ»úÑ¡³öÒ»ÀàµÄÆäÖÐÒ»žö
flag=number[k]; //ºÅÂë
q=Head_Out->next;
int a,b;
while(q)
{
if(q->number==flag) //ÕÒµœºÅÂëÏàͬµÄ³µÁŸ
{
a=q->local.x;
b=q->local.y;
break;
}
q=q->next;
}//ÓÃa,b»ñÈ¡µ±Ç°³ö¿â³µÁŸ×ø±ê
Sleep(SELCET);
Get_Time();
int x=30,y=2; //x,y·Ö±ð¿ØÖƹâ±êµÄ×ø±ê
Print_Car_Info(a,b,0); /*Êä³öËù³ö³µÁŸÐÅÏ¢*/
Coordinate p; //p¿ØÖƳµ¿âµÄ×ø±ê
for(p.y=0;p.y<b+a;p.y++,y+=2)
{
p.x=0;
while(p.x<2)
{
gotoxy(x,y);
if(p.x) printf(" ¡ú");
else printf("¡û");
Sleep(SELCET);
Get_Time();
p.x++;
gotoxy(x,y);
printf(" ");
Repair_Road_Sign();
Get_Time();
}
}
if(!a)
{
gotoxy(x,y);
printf("¡û");
}
p.x=a,p.y=b;
Sleep(1000);
return p;
}
void Drive_Out(Coordinate p)
{
int x=p.x;
int y=p.y;
if(p.x) //ÓÒ¿ª³ö
{
gotoxy(34,2*p.y+2);
printf("¡ö¡ö¡ö ");
Sleep(SPEED_CAR);
gotoxy(31,2*p.y+2);
printf("¡ö¡ö¡ö ");
Sleep(SPEED_CAR);
Get_Time();
gotoxy(29,2*p.y+2);
printf("¡ö¡ö¡ö ");
Sleep(SPEED_CAR);
gotoxy(31,2*p.y+2);
printf("¡ö ");
Get_Time();
gotoxy(29,2*p.y+3);
printf("¡ö");
Sleep(SPEED_CAR);
gotoxy(29,2*p.y+4);
printf("¡ö");
gotoxy(31,2*p.y+2);
printf(" ");
Sleep(SPEED_CAR);
Get_Time();
}
else //×󿪳ö
{
gotoxy(21,2*p.y+2);
printf(" ¡ö¡ö¡ö");
Sleep(SPEED_CAR);
Get_Time();
gotoxy(23,2*p.y+2);
printf(" ¡ö¡ö¡ö");
Sleep(SPEED_CAR);
gotoxy(24,2*p.y+2);
printf(" ¡ö¡ö¡ö");
Sleep(SPEED_CAR);
Get_Time();
gotoxy(29,2*p.y+3);
printf("¡ö");
Get_Time();
gotoxy(26,2*p.y+2);
printf(" ");
gotoxy(28,2*p.y+2);
printf(" ");Sleep(SPEED_CAR);
Get_Time();
gotoxy(29,2*p.y+4);
printf("¡ö");
}
Repair_Road_Sign();// ÐÞžŽÂ·±ê
for(int i=5;2*p.y+i<END;i++)
{
gotoxy(29,2*p.y+i);
printf("¡ö");
gotoxy(29,2*p.y+i-3);
printf(" ");
Sleep(SPEED_CAR);
Get_Time();
if(2*p.y+i==12||2*p.y+i==18||2*p.y+i==6)
{
gotoxy(29,2*p.y+i-3);
printf("¡ý");
}
}
gotoxy(29,END-2);
printf("¡ö");
gotoxy(29,END-3);
printf("¡ý");Sleep(SPEED_CAR);
gotoxy(29,END-2);
printf(" ");
gotoxy(29,END-1);
printf("¡ý");
Sleep(SPEED_CAR);
}
void Delete_Car(int x,int y)
{
Car *p,*before_p;
if(Head_Out->next==NULL) return ;
p=Head_Out->next;
before_p=Head_Out;
while(p)
{
if(p->local.x==x&&p->local.y==y)
{
before_p->next=p->next;
free(p);
return ;
}
p=p->next;
before_p=before_p->next;
}
}
void Update_Info()
{
Car *p=Head_Out->next;
while(p)
{
p->probability++;
p->cost+=PRICE;
p=p->next;
}
}
void Printf_Queue_Number()
{
Car *p=Head_In->next;
int x=0;
while(p)
{
if(x<9)
{
gotoxy(7,6+x*2);
printf("%c %05d",p->number%10+'A',p->number);
}
x++;
p=p->next;
}
gotoxy(7,6+x*2);
puts(" ");//²Á³öÏÂÒ»ÌõŒÇÂŒ
gotoxy(0,0);
}
void Insert_Intit_Car(int n) //ËùÓÐÅŶӳµÁŸµÄ¶ÓÁÐ
{
Car *p=Head_In; //Í·œáµã
while(p->next)
p=p->next;
for(int i=0;i<n;i++)
{
p->next=(Car *)malloc(sizeof(Car));
if(p->next==NULL)
{
system("cls");
gotoxy(38,6);
puts("³ÌÐò±ÀÀ£");
exit(0);
}
p=p->next,p->next=NULL;
&nb
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
#define PASSWORD "000"
#define PRICE 5.0
#define END 24
#define SPEED_CAR 150
#define SELCET 300
#define EXIST 1 //EXISTŽú±íµ±Ç°³µÎ»Óгµ
#define NO 0 //NO Žúµ±Ç°³µÎ»±íû³µ
/*
ŽŽœšÒ»žö¶þάÊý×飬ģÄâ³µ¿âµÄÆœÃæÊŸÒâÍŒ
ŽŽœšÁœžö¶ÓÁУ¬Ä£Äâœø¿âºÍ³ö¿âµÄ¶ÓÁÐ
³µÁŸµÄ¶ÓÁÐÓë³ö¿âÖ®ŒäÍš¹ý×ø±êœøÐÐÁªÏµ
³µÎ»Óпգ¬µ«ÓÐŒÈÓгµ¿âÓÖÓгµ³ö¿âʱ£¬
×ñÕÕÏȳöºóœøµÄÔÔò£¬
ŒŽ£¬³ö¿âµÄÓÅÏÈŒ¶žßÓÚÈë¿âµÄÓÅÏÈŒ¶*
*/
struct Coordinate
{
int x;
int y;
};
struct Car
{
int number; //³µÅƺÅ
int time_inner; //ÔÚ³µ¿âÀïµÄÍ£³µÊ±Œä
int probability; //ŽæŽ¢³µÁŸÀëÈ¥µÄžÅÂÊ,1,2,3,4Œ¶ÊýÒ»ŽÎÔöŽó
double cost; //žÃŽÎÍ£³µÓŠž¶·ÑÓÃ
char time_insert; //œø¿âʱŒä
char time_left; //³ö¿âʱŒä, ³ö¿âµÄʱŒäµÈÓÚœø¿âʱŒäŒÓ³ö¿âʱµÄprobability
Coordinate local; //µ±Ç°³µÁŸËùÔÚ/Òª³öµÄ¿â±àºÅ
Car *next; //ÓÉÓÚ³µÁŸÊý²¢²»È·¶š£¬ÒòŽËÓÃÁŽÊœŽæŽ¢
};
int Time=0;
double Sum_Money=0.0;
bool Garage[2][10]; //ÓÃ10*2µÄ·œžñÄ£Äâ³µ¿âµÄÆœÃæÊŸÒâÍŒ
Car *Head_Out=(Car *)malloc(sizeof(Car)); //ÔÚ³µ¿âÀ׌±ž³öÀŽµÄ³µ¶Ó
Car *Head_In=(Car *)malloc(sizeof(Car)); //ÔÚÍâÃæÅŶӣ¬×Œ±žœø¿âµÄ³µ¶Ó
/* ³µ¿âµÄÆœÃæÊŸÒâ¡¢³µ¶ÓµÄÍ·ÖžÕë¡¢ÊÕÒæÉèΪȫŸÖ±äÁ¿£¬ÕâÑù·œ±ãž÷º¯ÊýµÄµ÷ÓÃ*/
void gotoxy(int x, int y)
{
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
int Insert_Password(int flag)
{
char key[20],c;
int count=0;
if(flag)
{
system("cls");
puts("\nÎÂÜ°ÌáÊŸ£¬ÄãµÄÊäÈëÃÜÂëÓÐÎó\n\n");
}
printf("\nÇëÊäÈëÃÜÂë £º ");
while(c=getch(),c!='\r')
{
if(c==8)
{
system("cls");
if(flag)
printf("\nÎÂÜ°ÌáÊŸ£¬ÄãµÄÊäÈëÃÜÂëÓÐÎó\n\n");
printf("\nÇëÊäÈëÃÜÂë £º ");
if(count>0)
{
key[--count]='\0';
for(int i=0;i<count;i++)
printf("¡ñ");
}
}
else if(count>=0)
{
printf("¡ñ");
key[count++]=c,key[count]='\0';
}
}
if(strcmp(key,PASSWORD)==0)
{
system("cls");
gotoxy(35,5);
puts("ÃÜÂëÕýÈ·");
Sleep(2000);
return 1;
}
else return Insert_Password(1);
}
void Enter()
{
for(int i=0;i<15;i++)
{
gotoxy(35,5);
puts("ÕýÔÚµÇÂŒ\n");
Sleep(200);
for(int j=0;j<i;j++)
{
if(!j)
printf("\t\t\t¡ö");
else printf("¡ö");
}
}
system("cls");
}
void Get_Time() //»ñÈ¡œø³ö³µ¿âµÄʱŒä
{
time_t rawtime;
struct tm *timeinfo;
time (&rawtime);
timeinfo = localtime (&rawtime);
gotoxy(61,1);
printf("%d",timeinfo->tm_hour);
gotoxy(66,1);
printf("%d",timeinfo->tm_min);
gotoxy(71,1);
printf("%d",timeinfo->tm_sec);
gotoxy(0,END);
}
void Print_Left_Form()
{
gotoxy(8,0);
printf("©Š");
gotoxy(0,1);
printf("¡ª¡ª¡ª¡ª©Œ");
gotoxy(3,4);
printf("ÅŶӳµÁŸ");
gotoxy(0,5);
printf("©°¡ª¡ª¡ª¡ª¡ª¡ª©Ž");
for(int i=6;i<23;i+=2)
{
gotoxy(0,i),printf("©ŠÅƺŠ©Š");
gotoxy(0,i+1),printf("©À¡ª¡ª¡ª¡ª¡ª¡ª©È");
}
gotoxy(0,22);
printf("©ŠÅƺŠ©Š");
gotoxy(0,23);
printf("©ž¡ª¡ª¡ª¡ª¡ª¡ª©Œ");
}
void Print_Right_Form()
{
gotoxy(51,1);
printf("µ±Ç°Ê±Œä: ʱ ·Ö Ãë");
//gotoxy(51,4);
gotoxy(50,6);
printf("©°¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©Ž");
gotoxy(50,7);
printf("©Š œø¿â³µÁŸÊý£º\t ©Š");
gotoxy(50,8);
printf("©À¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©È");
gotoxy(50,9);
printf("©Š ³ö¿â³µÁŸÊý£º\t ©Š");
gotoxy(50,10);
printf("©ž¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©Œ");
gotoxy(50,13);
printf("©°¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©Ž");
for(int y=14;y<23;y++)
{
gotoxy(50,y);
printf("©Š");
gotoxy(74,y);
printf("©Š");;
gotoxy(50,++y);
printf("©Š");
gotoxy(74,y);
printf("©Š");
}
gotoxy(50,23);
printf("©ž¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©Œ");
}
void Fun()
{
gotoxy(53,14);
printf("³µÅƺţº\t\t");
gotoxy(50,15);
printf("©À¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©È");
gotoxy(53,16);
printf("³ö¿â×ø±ê£º\t\t");
gotoxy(50,17);
printf("©À¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©È");
gotoxy(53,18);
printf("ÓŠœÉ·ÑÓãº\t\t");
gotoxy(50,19);
printf("©À¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©È");
gotoxy(53,20);
printf("Í£ÁôʱŒä£º\t\t");
gotoxy(50,21);
printf("©À¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©È");
gotoxy(53,22);
printf("Í£Áôʱ¶Î£º\t\t ");
}
void Print_Garage()
{
system("cls");
gotoxy(0,0);
puts("\n\t\t ©°¡ª¡ª¡ª¡ª©Ð¡ª¡ª©Ð¡ª¡ª¡ª¡ª©Ž");
for(int i=0;i<10;i++)
{
if(Garage[0][i]) printf("\t\t ©Š ¡ö¡ö¡ö ");
else printf("\t\t ©Š \t");
if(Garage[1][i]) puts("\t ¡ö¡ö¡ö ©Š");
else puts("\t \t ©Š");
if(i==9)
puts("\t\t ©ž¡ª¡ª¡ª¡ª©È¡ý¡ü©À¡ª¡ª¡ª¡ª©Œ");
else if(i==0||i==3||i==6)
puts("\t\t ©À¡ª¡ª¡ª¡ª©È¡ý¡ü©À¡ª¡ª¡ª¡ª©È");
else
puts("\t\t ©À¡ª¡ª¡ª¡ª©È\t ©À¡ª¡ª¡ª¡ª©È");
}
puts("\t\t\t ©Š ©Š");
printf("\t\t\t ©Š¡ý¡ü©Š");
/*Êä³ö³µ¿âµÄÆœÃæÊŸÒâÍŒ*/
gotoxy(15,0);
printf("©°¡ª¡ú x");
gotoxy(15,1);
printf("©Š");
gotoxy(15,2);
printf("¡ý");
gotoxy(15,3);
printf("y");
gotoxy(14,0);
printf("0");
/*¶Ô×ø±êÊä³öÉèÖÃ*/
}
void Declare()
{
Sleep(1000);
int speed=200;
int i;
gotoxy(38,6);
char s[][3]={"Ö£","ÖØ","Éê","Ã÷",
"±Ÿ","³Ì","Ðò","Ϊ","ÕÅ","ì÷","×Ô","Ö÷","ŽŽ","ÐÂ","¿ª","·¢",
"Ÿø","ÎÞ","µÁ","°æ","»ò","Õß","Øâ","ÇÔ","Ëû","ÈË","Ö®","ÏÓ","#"};
for(i=0;strcmp(s[i],"#");i++)
{
printf("%s",s[i]);
Sleep(speed);
if(i==3)
gotoxy(30,8);
if(i==15)
gotoxy(30,10);
}
Sleep(1000);
system("cls");
Print_Left_Form();
char s_1[][3]={"µ±","Ç°","œø","³ö","³µ","¿â","Ïû","Ï¢","#"};
gotoxy(10,2);
puts("šI");
Sleep(speed);
gotoxy(13,3);
for(i=0;strcmp(s_1[i],"#");i++)
{
printf("%s",s_1[i]);
Sleep(speed);
}
Sleep(1000);
system("cls");
Print_Left_Form();
gotoxy(18,14),printf("¡û ");
char s_2[][3]={"µ±","Ç°","ÅÅ","¶Ó","³µ","ÁŸ","Œ°","Æä","³µ","ÅÆ","ºÅ","#"};
for(i=0;strcmp(s_2[i],"#");i++)
{
printf("%s",s_2[i]);
Sleep(speed);
}
Sleep(1000);
system("cls");
Print_Right_Form();
Fun();
gotoxy(32,4);
char s_3[][3]={"ÏÔ","ÊŸ","µ±","Ç°","±Ÿ","µØ","ʱ","Œä","#"};
for(i=0;strcmp(s_3[i],"#");i++)
{
printf("%s",s_3[i]);
Sleep(speed);
}
gotoxy(49,3);
puts("šJ");
Sleep(speed);
Sleep(1000);
system("cls");
Print_Right_Form();
Fun();
gotoxy(24,8);
char s_4[][3]={"Ò»","С","ʱ","ÄÚ","œø","¡¢","³ö","µÄ","³µ","ÁŸ","Êý","#"};
for(i=0;strcmp(s_4[i],"#");i++)
{
printf("%s",s_4[i]);
Sleep(speed);
}
gotoxy(47,7);
puts("šJ");
gotoxy(47,9);
puts("šK");
Sleep(1000);
system("cls");
Print_Right_Form();
Fun();
char s_5[][3]={"œø","¡¢","³ö","¿â","³µ","ÁŸ","ÐÅ","Ï¢","#"};
gotoxy(28,18);
for(i=0;strcmp(s_5[i],"#");i++)
{
printf("%s",s_5[i]);
Sleep(speed);
}
puts(" ¡ú");
Sleep(1000);
system("cls");
Print_Garage();
char s_6[][3]={"³µ","¿â","×ø","±ê","#"};
gotoxy(0,2);
for(i=0;strcmp(s_6[i],"#");i++)
{
printf("%s",s_6[i]);
Sleep(speed);
}
gotoxy(9,1);
printf("šJ");
Sleep(1000);
system("cls");
Print_Garage();
char s_7[][3]={"³µ","¿â","¶þ","ά","Æœ","Ãæ","ÊŸ","Òâ","ÍŒ","#"};
gotoxy(47,11);
printf("¡û ");
for(i=0;strcmp(s_7[i],"#");i++)
{
printf("%s",s_7[i]);
Sleep(speed);
}
Sleep(1000);
system("cls");
}
void Print_Right_Info()
{
int i=0;
char menu[][4]={"¿Õ","Žú","±í","žÃ","³µ","λ","¿É","ÒÔ","Í£","³µ",
"¡ö","Žú","±í","žÃ","³µ","λ","ÒÑ","ÓÐ","³µ","Í£",
"·Å","Çë","°Ž","¡ü ","¡ý ","¡û ","¡ú ","œø","ÐÐ","Ñ¡",
"Ôñ","Òª","œø","Èë","µÄ","³µ","λ","##"};
gotoxy(59,12);
printf("³µÁŸÐÅÏ¢");
gotoxy(53,15);
while(strcmp(menu[i],"##"))
{
if(i==10)
gotoxy(53,17);
if(i==20)
gotoxy(53,19);
if(i==28)
gotoxy(53,21);
if(i==40)
gotoxy(53,23);
printf("%s",menu[i++]);
Sleep(200);
}
Sleep(1000);
}
void Repair_Road_Sign()
{
gotoxy(29,3);
printf("¡ý¡ü");
gotoxy(29,9);
printf("¡ý¡ü");
gotoxy(29,15);
printf("¡ý¡ü");
gotoxy(29,END-1);
printf("¡ý¡ü");
}
void Print_Number(int n)
{
Sleep(500);
int a[5];
memset(a,0,sizeof(a));
int i;
i='A',i+=n%10; //œ«³µÅƺŵÄ×îºóһλת»¯³ÉŽóÐŽ×ÖÄž£¬ÒÔ±ãÃÀ¹Û
printf("%c ",i);
i=4;
while(n)
{
a[i--]=n%10;
n/=10;
}
for(i=0;i<5;i++)
{
printf("%d",a[i]);
Sleep(300);
}
}
bool Check_Space()
{
for(int i=0;i<10;i++)
if(Garage[0][i]==0||Garage[1][i]==0)
return 1;
return 0;
/* 0Žú±í²»ŽæÔÚ¿Õ³µÎ»£¬1Žú±íŽæÔÚ¿Õ³µÎ»*/
}
bool Check_Car()
{
Car *p=Head_Out->next;
while(p)
{
if(p->probability)
{
return 1;
}
p=p->next;
}
return 0;
/* 0Žú±í³µ¿âÀï²»ŽæÔÚÔÚ³µ£¬1Žú±í³µ¿âÀïŽæÔÚ³µ,ŽæÔÚ³µ²»ÊÇŒòµ¥µÄŽæÔÚ£¬ÒªŒì²éŽæÔÚÊÇ·ñÄÜ¿ª×ߵijµ*/
/*ÓÉÓÚÉ挰µœ¶ÔžÅÂʵČìË÷£¬¹ÊÖ±œÓ¶Ô³ö¿âÁŽ±íŒìË÷*/
}
void Select_Continue()
{
gotoxy(31,4);
printf("Ò»žöСʱ¹ýºó¡£¡£¡£¡£¡£¡£");
gotoxy(26,6);
printf(" ¡ú ŒÌÐø¹ÜÀí ²é¿ŽÊÕÈë");
char c;
int flag=0;
while(c=getch(),c!='\r')
{
switch(c)
{
case 75:
case 77:
if(flag%2)
{
gotoxy(42,6);
printf(" ");
gotoxy(27,6);
printf("¡ú");
flag=0;
}
else
{
gotoxy(27,6);
printf(" ");
gotoxy(42,6);
printf("¡ú");
flag=1;
}
break;
default:break;
}
gotoxy(0,0);
}
if(flag)//²é¿ŽÊÕÈë
{
system("cls");
gotoxy(32,5);
printf("Ä¿Ç°×ÜÊÕÈëΪ£º%.2lf\n\n",Sum_Money);
gotoxy(26,8);
printf(" ¡ú ŒÌÐøÔËÐÐ Í˳ö³ÌÐò");
gotoxy(0,0);
flag=0;
while(c=getch(),c!='\r')
{
switch(c)
{
case 75:
case 77:
if(flag%2)
{
gotoxy(42,8);
printf(" ");
gotoxy(27,8);
printf("¡ú");
flag=0;
}
else
{
gotoxy(27,8);
printf(" ");
gotoxy(42,8);
printf("¡ú");
flag=1;
}
break;
default:break;
}
gotoxy(0,0);
}
if(flag)
{
gotoxy(28,10);
printf("©°¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©Ž");
gotoxy(28,11);
printf("©Š лл¹ÛÉÍ£¬ÔÙŒû£¡£¡£¡ ©Š");
gotoxy(28,12);
printf("©ž¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©Œ");
exit(0);
}
}
}
void Insert_Out_Car(int x,int y) //ËùÓÐÔÚ³µ¿âÀï³µÁŸµÄ¶ÓÁÐ,x,yÊÇÕÒµœ¿ÕλµÄ×ø±ê
{
Car *p=Head_Out;
while(p->next)
p=p->next; // ÕÒµœËùÓÐÔÚ³µ¿âÀï³µµÄ¶Óβ
p->next=(Car *)malloc(sizeof(Car)); /*œøÐÐÁ¬œÓ*/
if(p->next==NULL)
{
system("cls");
gotoxy(38,6);
puts("³ÌÐò±ÀÀ£");
exit(0);
}
p=p->next,p->next=NULL;
p->local.x=x;
p->local.y=y; //³µ¿âÀï×îºóÒ»ÁŸ³µµÄ×ø±ê
Car *q=Head_In->next;
/* ÓÉÓÚÅŶӵijµÊÇÒ»žö¶ÓÁУ¬ÒòŽËÅÅÔÚ×îÇ°µÄµ±È»ÏÈœø*/
p->number=q->number;
p->time_insert=q->time_insert;
p->probability=q->probability;
p->cost=0.0;
p->time_insert=Time;
Head_In->next=q->next; //ÉŸ³ýÅŶӶÓÁеĵÚÒ»žöœáµã
free(q);
}
void Print_Car_Info(int x,int y,bool flag)
{
gotoxy(53,14);printf("³µÅƺţº\t\t");
gotoxy(50,15);printf("©À¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©È");
if(!flag)
{
gotoxy(53,16);
printf("³ö¿â×ø±ê£º\t\t");
}
else
{
gotoxy(53,16);
printf("Èë¿â×ø±ê£º\t\t");
}
gotoxy(50,17);
printf("©À¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©È");
gotoxy(53,18);
printf("ÓŠœÉ·ÑÓãº\t\t");
gotoxy(50,19);
printf("©À¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©È");
gotoxy(53,20);
printf("Í£ÁôʱŒä£º\t\t");
gotoxy(50,21);
printf("©À¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª©È");
gotoxy(53,22);
printf("Í£Áôʱ¶Î£º\t\t ");
Car *p=Head_Out->next;
while(p)
{
if(p->local.x==x&&p->local.y==y)
break;
p=p->next;
Get_Time();
}/*ÕÒµœ×îºóÒ»žöœáµã*/
gotoxy(65,14);
Print_Number(p->number); //Êä³ö³µÅƺÅ
Sleep(400);
gotoxy(65,16);
printf("(%d,%d)",x,y); //Êä³ö×ø±ê
Get_Time();
Sleep(400);
gotoxy(65,18);
printf("%.2lf",p->cost); //Êä³ö·ÑÓÃ
Sleep(400);
gotoxy(65,20);
printf("%d Сʱ",p->probability); //Êä³öÍ£ÁôʱŒä£¬ÊµŒÊÉÏŸÍÊÇžÅÂÊ
Sleep(400);
Get_Time();
gotoxy(65,22);
printf("%02d ¡ú %02d",(p->time_insert)%24,(p->time_insert+p->probability)%24);//Êä³öÍ£ÁôʱŒä¶Î
Sum_Money+=p->cost; //×ÜÊÕÈëÄÜÔÙÓгµÁŸ³ö¿âʱŒÆËãÒ»ŽÎ
}
Coordinate Find_Garage() //²éÕÒ¿ÉÒÔÍ£³µµÄ³µÎ»
{
Coordinate p; //p¿ØÖƳµ¿âµÄ×ø±ê
int x=30,y=2; //x,y·Ö±ð¿ØÖƹâ±êµÄ×ø±ê
gotoxy(x-1,y);
printf("¡û"); //³õÊŒ¹â±ê
for(p.y=0;p.y<10;p.y++,y+=2)
{
p.x=0;
while(p.x<2)
{
gotoxy(x,y);
if(p.x) printf(" ¡ú");
else
{
gotoxy(x-1,y);
printf("¡û");
}
if(Garage[p.x][p.y])
Get_Time();
else
{
Sleep(SELCET);
Sleep(500);
return p;
}
gotoxy(0,END-1);
Sleep(SELCET);
p.x++;
gotoxy(x,y);
printf(" ");
Repair_Road_Sign();
}
}
return p;
}
void Enter_Into(Coordinate p) //Ê»È뺯Êý
{
int x=p.x;
int y=p.y;
int i;
for(i=1;i<END-2*p.y-1;i++)
{
if(i>3)
{
gotoxy(31,END-i+3);
printf(" ");
}
gotoxy(31,END-i);
printf("¡ö");
Get_Time();
if(END-i==12||END-i==20||END-i==18||END-i==6)
{
gotoxy(31,END-i+3);
printf("¡ü");
}
Sleep(SPEED_CAR);
Get_Time();
}
if(p.x) //œøµœÓÒ±ß
{
gotoxy(33,2*p.y+2);
printf("¡ö");
gotoxy(31,2*p.y+4);
printf(" ");
Sleep(SPEED_CAR);
Get_Time();
gotoxy(35,2*p.y+2);
printf("¡ö");
Get_Time();
gotoxy(31,2*p.y+3);
printf(" ");
Sleep(SPEED_CAR);
Repair_Road_Sign();
gotoxy(32,2*p.y+2);
printf(" ¡ö¡ö¡ö");
gotoxy(34,2*p.y+2);
printf(" ¡ö¡ö¡ö");
Sleep(SPEED_CAR);
}
else //œøµœ×ó±ß
{
gotoxy(29,2*p.y+2);
printf("¡ö");
gotoxy(32,2*p.y+4);
printf(" ");
Sleep(SPEED_CAR);
gotoxy(27,2*p.y+2);
printf("¡ö");
Get_Time();
gotoxy(31,2*p.y+3);
printf(" ");
Sleep(SPEED_CAR);
Repair_Road_Sign();
gotoxy(24,2*p.y+2);
printf("¡ö¡ö¡ö ");
Sleep(SPEED_CAR);Get_Time();
gotoxy(20,2*p.y+2);
printf("¡ö¡ö¡ö ");
Sleep(SPEED_CAR);
}
}
bool Must_Drive_Out() //Í£³µŽïµœ4Сʱ£¬±ØÐëÒªÀ뿪µÄ³µ
{
Car *p=Head_Out->next;
while(p)
{
if(p->probability==4)
return 1;
p=p->next;
}
return 0;
}
Coordinate Select_Garage() //Ñ¡Ôñ³ö¿âµÄλÖÃ
{
Car *q=NULL;
int flag;
bool mark=0; //0±íÊö²»ŽæÔÚÕâÀà³µ
int number[20];
memset(number,0,sizeof(number));
while(mark==0)
{
if(Must_Drive_Out()) flag=4;
else
{
flag=rand()%10;
/*
³ö³µ¿âʱžÅÂÊŒÆËã³öÄÄÒ»Àà,Ëæ»úÊýÓŠÔÚ[0,9]Ö®Œä
[0,1)±íÊŸÍ£Áô1Сʱ³µÀ뿪µÄžÅÂÊ
[1,2]±íÊŸÍ£Áô2Сʱ³µÀ뿪µÄžÅÂÊ
[3,5]±íÊŸÍ£Áô3Сʱ³µÀ뿪µÄžÅÂÊ
[6,9]±íÊŸÍ£Áô4СʱÀ뿪µÄžÅÂÊ
*/
if(flag==0)
flag=1;
else if(flag<=2)
flag=2;
else if(flag<=5)
flag=3;
else if(flag<=9)
flag=4;
}
/*ÏÂÃæÊǶÔÕâÀà³µÊÇ·ñŽæÔÚ×öŒìË÷£¬ÔÚ³ö³µ¶ÓÁÐÀïŒìË÷*/
q=Head_Out->next;
while(q)
{
if(q->probability==flag)
{
mark=1; //ŽæÔÚÕâÀà³µ
break;
}
q=q->next;
}
}
/* ÒÔÉÏÊǶԳö³µžÅÂʵČÆËã*/
/*×îºóÈ·¶šÒª³öµÄ³µÁŸÊÇÄÄÒ»Àà*/
q=Head_Out->next;
int k=0;
while(q)
{
if(q->probability==flag)
number[k++]=q->number;
q=q->next;
}
k=rand()%k; //Ëæ»úÑ¡³öÒ»ÀàµÄÆäÖÐÒ»žö
flag=number[k]; //ºÅÂë
q=Head_Out->next;
int a,b;
while(q)
{
if(q->number==flag) //ÕÒµœºÅÂëÏàͬµÄ³µÁŸ
{
a=q->local.x;
b=q->local.y;
break;
}
q=q->next;
}//ÓÃa,b»ñÈ¡µ±Ç°³ö¿â³µÁŸ×ø±ê
Sleep(SELCET);
Get_Time();
int x=30,y=2; //x,y·Ö±ð¿ØÖƹâ±êµÄ×ø±ê
Print_Car_Info(a,b,0); /*Êä³öËù³ö³µÁŸÐÅÏ¢*/
Coordinate p; //p¿ØÖƳµ¿âµÄ×ø±ê
for(p.y=0;p.y<b+a;p.y++,y+=2)
{
p.x=0;
while(p.x<2)
{
gotoxy(x,y);
if(p.x) printf(" ¡ú");
else printf("¡û");
Sleep(SELCET);
Get_Time();
p.x++;
gotoxy(x,y);
printf(" ");
Repair_Road_Sign();
Get_Time();
}
}
if(!a)
{
gotoxy(x,y);
printf("¡û");
}
p.x=a,p.y=b;
Sleep(1000);
return p;
}
void Drive_Out(Coordinate p)
{
int x=p.x;
int y=p.y;
if(p.x) //ÓÒ¿ª³ö
{
gotoxy(34,2*p.y+2);
printf("¡ö¡ö¡ö ");
Sleep(SPEED_CAR);
gotoxy(31,2*p.y+2);
printf("¡ö¡ö¡ö ");
Sleep(SPEED_CAR);
Get_Time();
gotoxy(29,2*p.y+2);
printf("¡ö¡ö¡ö ");
Sleep(SPEED_CAR);
gotoxy(31,2*p.y+2);
printf("¡ö ");
Get_Time();
gotoxy(29,2*p.y+3);
printf("¡ö");
Sleep(SPEED_CAR);
gotoxy(29,2*p.y+4);
printf("¡ö");
gotoxy(31,2*p.y+2);
printf(" ");
Sleep(SPEED_CAR);
Get_Time();
}
else //×󿪳ö
{
gotoxy(21,2*p.y+2);
printf(" ¡ö¡ö¡ö");
Sleep(SPEED_CAR);
Get_Time();
gotoxy(23,2*p.y+2);
printf(" ¡ö¡ö¡ö");
Sleep(SPEED_CAR);
gotoxy(24,2*p.y+2);
printf(" ¡ö¡ö¡ö");
Sleep(SPEED_CAR);
Get_Time();
gotoxy(29,2*p.y+3);
printf("¡ö");
Get_Time();
gotoxy(26,2*p.y+2);
printf(" ");
gotoxy(28,2*p.y+2);
printf(" ");Sleep(SPEED_CAR);
Get_Time();
gotoxy(29,2*p.y+4);
printf("¡ö");
}
Repair_Road_Sign();// ÐÞžŽÂ·±ê
for(int i=5;2*p.y+i<END;i++)
{
gotoxy(29,2*p.y+i);
printf("¡ö");
gotoxy(29,2*p.y+i-3);
printf(" ");
Sleep(SPEED_CAR);
Get_Time();
if(2*p.y+i==12||2*p.y+i==18||2*p.y+i==6)
{
gotoxy(29,2*p.y+i-3);
printf("¡ý");
}
}
gotoxy(29,END-2);
printf("¡ö");
gotoxy(29,END-3);
printf("¡ý");Sleep(SPEED_CAR);
gotoxy(29,END-2);
printf(" ");
gotoxy(29,END-1);
printf("¡ý");
Sleep(SPEED_CAR);
}
void Delete_Car(int x,int y)
{
Car *p,*before_p;
if(Head_Out->next==NULL) return ;
p=Head_Out->next;
before_p=Head_Out;
while(p)
{
if(p->local.x==x&&p->local.y==y)
{
before_p->next=p->next;
free(p);
return ;
}
p=p->next;
before_p=before_p->next;
}
}
void Update_Info()
{
Car *p=Head_Out->next;
while(p)
{
p->probability++;
p->cost+=PRICE;
p=p->next;
}
}
void Printf_Queue_Number()
{
Car *p=Head_In->next;
int x=0;
while(p)
{
if(x<9)
{
gotoxy(7,6+x*2);
printf("%c %05d",p->number%10+'A',p->number);
}
x++;
p=p->next;
}
gotoxy(7,6+x*2);
puts(" ");//²Á³öÏÂÒ»ÌõŒÇÂŒ
gotoxy(0,0);
}
void Insert_Intit_Car(int n) //ËùÓÐÅŶӳµÁŸµÄ¶ÓÁÐ
{
Car *p=Head_In; //Í·œáµã
while(p->next)
p=p->next;
for(int i=0;i<n;i++)
{
p->next=(Car *)malloc(sizeof(Car));
if(p->next==NULL)
{
system("cls");
gotoxy(38,6);
puts("³ÌÐò±ÀÀ£");
exit(0);
}
p=p->next,p->next=NULL;
&nb