You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
686 lines
16 KiB
686 lines
16 KiB
|
|
/* function for adjust window color, size and position */ |
|
void print__setup() |
|
{ |
|
system("TITLE EEE101 Assessment 3 BY Yimian LIU"); |
|
system("mode con cols=88 lines=30"); |
|
system("color 0F"); |
|
} |
|
|
|
void print__space(int nSpace) |
|
{ |
|
int i; |
|
for(i=0;i<nSpace;i++) |
|
printf(" "); |
|
} |
|
|
|
void print__wait(int nTm) |
|
{ |
|
int i; |
|
for(i=0;i<nTm;i++) |
|
{ |
|
system("cls"); |
|
printf("Please Wait... -\n"); |
|
Sleep(150); |
|
|
|
system("cls"); |
|
printf("Please Wait... \\\n"); |
|
Sleep(150); |
|
|
|
system("cls"); |
|
printf("Please Wait... |\n"); |
|
Sleep(150); |
|
|
|
system("cls"); |
|
printf("Please Wait... /\n"); |
|
Sleep(150); |
|
|
|
} |
|
fflush(stdin); |
|
} |
|
|
|
/* display a header */ |
|
void print__header() |
|
{ |
|
time_t cur = time(NULL); |
|
|
|
struct tm *curtm = localtime(&cur); |
|
printf("%d-%d-%d %d:%d:%02d",curtm->tm_year+1900, curtm->tm_mon+1,curtm->tm_mday, curtm->tm_hour,curtm->tm_min, curtm->tm_sec); |
|
|
|
print__space(19); |
|
|
|
if(g_pUsr) |
|
printf("User: %6s",g_pUsr ); |
|
|
|
if(g_nTimes!=-1) |
|
printf(" win: %d Total times: %d ",g_nWins,g_nTimes); |
|
else if(g_fWin!=-1||g_fWin!=0) |
|
printf(" Win Rate: %.2f%%",g_fWin-0.01+0.001); |
|
|
|
printf("\n----------------------------------------------------------------------------------------"); |
|
} |
|
|
|
void print_item(char chItem[20],int nMrk,int nSpc) |
|
{ |
|
|
|
printf("\n\n"); |
|
|
|
print__space(nSpc); |
|
|
|
printf("%11s",chItem ); |
|
|
|
if(nMrk==1) |
|
{ |
|
print__space(3); |
|
printf("<<--"); |
|
} |
|
} |
|
|
|
void print__menu(int nPnt) |
|
{ |
|
|
|
|
|
/* clear screen */ |
|
system("cls"); |
|
|
|
print__header(); |
|
|
|
printf("Please use Arrows on Keyboard to Choose:\n"); |
|
char chItem1[]="New Game "; |
|
print_item(chItem1,(nPnt==1)?1:0,38); |
|
|
|
char chItem2[]="Rank "; |
|
print_item(chItem2,(nPnt==2)?1:0,38); |
|
|
|
char chItem3[]="My History"; |
|
print_item(chItem3,(nPnt==3)?1:0,38); |
|
|
|
char chItem4[]="Setting "; |
|
print_item(chItem4,(nPnt==4)?1:0,38); |
|
|
|
char chItem5[]="Switch User"; |
|
print_item(chItem5,(nPnt==5)?1:0,38); |
|
|
|
char chItem6[]="Exit Game"; |
|
print_item(chItem6,(nPnt==6)?1:0,38); |
|
|
|
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n"); |
|
printf("Press ESC to Exit!"); |
|
|
|
|
|
} |
|
|
|
void print__user(int nPnt) |
|
{ |
|
|
|
/* clear screen */ |
|
system("cls"); |
|
|
|
printf("Please choose your User Name:\n"); |
|
char **pUsr=data__get_usr(); |
|
int i,nRows=data__get_usr_num(pUsr); |
|
char chItem[]="Creat a new one!"; |
|
|
|
for(i=0;i<nRows;i++) |
|
print_item(pUsr[i],(nPnt==i+1)?1:0,30); |
|
|
|
print_item(chItem,(nPnt==i+1)?1:0,30); |
|
|
|
|
|
|
|
} |
|
|
|
void print__play_times(int nPnt) |
|
{ |
|
|
|
|
|
/* clear screen */ |
|
system("cls"); |
|
|
|
print__header(); |
|
printf("Choose Game Mode: \n"); |
|
char chItem1[]=" one out of one sets match"; |
|
print_item(chItem1,(nPnt==1)?1:0,25); |
|
|
|
char chItem2[]=" two out of three sets match"; |
|
print_item(chItem2,(nPnt==2)?1:0,25); |
|
|
|
char chItem3[]=" three out of five sets match"; |
|
print_item(chItem3,(nPnt==3)?1:0,25); |
|
|
|
char chItem4[]=" four out of seven sets match"; |
|
print_item(chItem4,(nPnt==4)?1:0,25); |
|
|
|
char chItem5[]=" five out of nine sets match"; |
|
print_item(chItem5,(nPnt==5)?1:0,25); |
|
|
|
char chItem6[]=" back to menu"; |
|
print_item(chItem6,(nPnt==6)?1:0,25); |
|
|
|
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); |
|
printf("Press ESC to Exit!"); |
|
} |
|
|
|
void print__play_choose(int nPnt) |
|
{ |
|
|
|
|
|
/* clear screen */ |
|
system("cls"); |
|
|
|
print__header(); |
|
|
|
printf("Please select your choice:\n\n"); |
|
|
|
char chItem1[]="scissors"; |
|
print_item(chItem1,(nPnt==1)?1:0,38); |
|
|
|
char chItem2[]="rock "; |
|
print_item(chItem2,(nPnt==2)?1:0,38); |
|
|
|
char chItem3[]="paper "; |
|
print_item(chItem3,(nPnt==3)?1:0,38); |
|
|
|
|
|
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); |
|
printf("Press ESC to Exit!"); |
|
} |
|
|
|
void print_1_1() |
|
{ |
|
int nSpc=14; |
|
|
|
print__space(nSpc); |
|
printf(" ** ** ** ** ** ** \n"); print__space(nSpc); |
|
printf("** ** ** ** ** ** \n"); print__space(nSpc); |
|
printf(" ** ** ** ** \n"); print__space(nSpc); |
|
printf(" ** * * ** \n"); print__space(nSpc); |
|
printf(" ** ** ** ** \n"); print__space(nSpc); |
|
printf("** ** ** ** ** ** \n"); print__space(nSpc); |
|
printf(" ** ** ** ** ** ** \n"); |
|
} |
|
|
|
void print_1_2() |
|
{ |
|
int nSpc=14; |
|
print__space(nSpc); |
|
printf(" ** ** ** *********** \n"); print__space(nSpc); |
|
printf("** ** ** ************* \n"); print__space(nSpc); |
|
printf(" ** ** *************** \n"); print__space(nSpc); |
|
printf(" ** * *****************\n"); print__space(nSpc); |
|
printf(" ** ** *************** \n"); print__space(nSpc); |
|
printf("** ** ** ************* \n"); print__space(nSpc); |
|
printf(" ** ** ** *********** \n"); |
|
|
|
printf("\n\n"); |
|
print__space(nSpc+25); |
|
printf("Unit Lost!"); |
|
|
|
|
|
|
|
} |
|
|
|
void print_1_3() |
|
{ |
|
int nSpc=14; |
|
print__space(nSpc); |
|
printf(" ** ** ** ++++++++++++++++\n"); print__space(nSpc); |
|
printf("** ** ** ++++++++++++++++\n"); print__space(nSpc); |
|
printf(" ** ** ++++++++++++++++\n"); print__space(nSpc); |
|
printf(" ** * ++++++++++++++++\n"); print__space(nSpc); |
|
printf(" ** ** ++++++++++++++++\n"); print__space(nSpc); |
|
printf("** ** ** ++++++++++++++++\n"); print__space(nSpc); |
|
printf(" ** ** ** ++++++++++++++++\n"); |
|
|
|
|
|
printf("\n\n"); |
|
print__space(nSpc+28); |
|
printf("Win!"); |
|
|
|
} |
|
|
|
void print_2_2() |
|
{ |
|
int nSpc=14; |
|
print__space(nSpc); |
|
printf(" *********** *********** \n"); print__space(nSpc); |
|
printf(" ************* ************* \n"); print__space(nSpc); |
|
printf(" *************** *************** \n"); print__space(nSpc); |
|
printf("***************** *****************\n"); print__space(nSpc); |
|
printf(" *************** *************** \n"); print__space(nSpc); |
|
printf(" ************* ************* \n"); print__space(nSpc); |
|
printf(" *********** *********** \n"); |
|
} |
|
|
|
void print_2_1() |
|
{ |
|
int nSpc=14; |
|
print__space(nSpc); |
|
printf(" *********** ** ** ** \n"); print__space(nSpc); |
|
printf(" ************* ** ** ** \n"); print__space(nSpc); |
|
printf(" *************** ** ** \n"); print__space(nSpc); |
|
printf("***************** * ** \n"); print__space(nSpc); |
|
printf(" *************** ** ** \n"); print__space(nSpc); |
|
printf(" ************* ** ** ** \n"); print__space(nSpc); |
|
printf(" *********** ** ** ** \n"); |
|
|
|
printf("\n\n"); |
|
print__space(nSpc+28); |
|
printf("Win!"); |
|
|
|
} |
|
|
|
void print_2_3() |
|
{ |
|
int nSpc=14; |
|
print__space(nSpc); |
|
printf(" *********** ++++++++++++++++\n"); print__space(nSpc); |
|
printf(" ************* ++++++++++++++++\n"); print__space(nSpc); |
|
printf(" *************** ++++++++++++++++\n"); print__space(nSpc); |
|
printf("***************** ++++++++++++++++\n"); print__space(nSpc); |
|
printf(" *************** ++++++++++++++++\n"); print__space(nSpc); |
|
printf(" ************* ++++++++++++++++\n"); print__space(nSpc); |
|
printf(" *********** ++++++++++++++++\n"); |
|
|
|
|
|
printf("\n\n"); |
|
print__space(nSpc+25); |
|
printf("Unit Lost!"); |
|
} |
|
|
|
void print_3_3() |
|
{ |
|
int nSpc=14; |
|
print__space(nSpc); |
|
printf("++++++++++++++++ ++++++++++++++++\n"); print__space(nSpc); |
|
printf("++++++++++++++++ ++++++++++++++++\n"); print__space(nSpc); |
|
printf("++++++++++++++++ ++++++++++++++++\n"); print__space(nSpc); |
|
printf("++++++++++++++++ ++++++++++++++++\n"); print__space(nSpc); |
|
printf("++++++++++++++++ ++++++++++++++++\n"); print__space(nSpc); |
|
printf("++++++++++++++++ ++++++++++++++++\n"); print__space(nSpc); |
|
printf("++++++++++++++++ ++++++++++++++++\n"); |
|
} |
|
|
|
void print_3_1() |
|
{ |
|
int nSpc=14; |
|
print__space(nSpc); |
|
printf("++++++++++++++++ ** ** ** \n"); print__space(nSpc); |
|
printf("++++++++++++++++ ** ** ** \n"); print__space(nSpc); |
|
printf("++++++++++++++++ ** ** \n"); print__space(nSpc); |
|
printf("++++++++++++++++ * ** \n"); print__space(nSpc); |
|
printf("++++++++++++++++ ** ** \n"); print__space(nSpc); |
|
printf("++++++++++++++++ ** ** ** \n"); print__space(nSpc); |
|
printf("++++++++++++++++ ** ** ** \n"); |
|
|
|
|
|
printf("\n\n"); |
|
print__space(nSpc+25); |
|
printf("Unit Lost!"); |
|
} |
|
void print_3_2() |
|
{ |
|
int nSpc=14; |
|
print__space(nSpc); |
|
printf("++++++++++++++++ *********** \n"); print__space(nSpc); |
|
printf("++++++++++++++++ ************* \n"); print__space(nSpc); |
|
printf("++++++++++++++++ *************** \n"); print__space(nSpc); |
|
printf("++++++++++++++++ ***************** \n"); print__space(nSpc); |
|
printf("++++++++++++++++ *************** \n"); print__space(nSpc); |
|
printf("++++++++++++++++ ************* \n"); print__space(nSpc); |
|
printf("++++++++++++++++ *********** \n"); |
|
|
|
printf("\n\n"); |
|
print__space(nSpc+28); |
|
printf("Win!"); |
|
|
|
} |
|
|
|
|
|
void print__result(int nChc,int nCmp) |
|
{ |
|
|
|
int nPnt=nChc; |
|
/* clear screen */ |
|
system("cls"); |
|
|
|
print__header(); |
|
printf("Please select your choice:\n\n"); |
|
|
|
char chItem1[]="scissors"; |
|
print_item(chItem1,(nPnt==1)?1:0,38); |
|
|
|
char chItem2[]="rock "; |
|
print_item(chItem2,(nPnt==2)?1:0,38); |
|
|
|
char chItem3[]="paper "; |
|
print_item(chItem3,(nPnt==3)?1:0,38); |
|
printf("\n\n\n"); |
|
|
|
if(nChc==1&&nCmp==1) print_1_1(); |
|
if(nChc==1&&nCmp==2) print_1_2(); |
|
if(nChc==1&&nCmp==3) print_1_3(); |
|
if(nChc==2&&nCmp==1) print_2_1(); |
|
if(nChc==2&&nCmp==2) print_2_2(); |
|
if(nChc==2&&nCmp==3) print_2_3(); |
|
if(nChc==3&&nCmp==1) print_3_1(); |
|
if(nChc==3&&nCmp==2) print_3_2(); |
|
if(nChc==3&&nCmp==3) print_3_3(); |
|
|
|
printf("\n\n\n\n\n"); |
|
printf("Press ESC to Exit!"); |
|
|
|
} |
|
|
|
void print__history(int **pData) |
|
{ |
|
/* clear screen */ |
|
system("cls"); |
|
|
|
print__header(); |
|
|
|
printf("\n\n"); |
|
|
|
int nSpc=33; |
|
|
|
print__space(4); |
|
printf("Me"); |
|
print__space(nSpc); |
|
printf("Computer"); |
|
print__space(nSpc); |
|
printf("Result"); |
|
|
|
printf("\n"); |
|
|
|
int i; |
|
|
|
|
|
for(i=0;i<lSize/3;i++) |
|
{ |
|
printf("\n"); |
|
|
|
if(pData[i][0]==8) |
|
{ |
|
printf(" ------------------------------------------------------------------------------------ "); |
|
} |
|
else |
|
{ |
|
print__space(2); |
|
|
|
if(pData[i][0]==1) printf("scissor"); |
|
if(pData[i][0]==2) printf(" rock "); |
|
if(pData[i][0]==3) printf(" paper "); |
|
|
|
print__space(nSpc); |
|
|
|
if(pData[i][1]==1) printf("scissor"); |
|
if(pData[i][1]==2) printf(" rock "); |
|
if(pData[i][1]==3) printf(" paper "); |
|
|
|
print__space(nSpc); |
|
|
|
if(pData[i][2]==0) |
|
{ |
|
if(pData[i][0]==pData[i][1]) printf("Draw"); |
|
else printf("Lose"); |
|
} |
|
if(pData[i][2]==1) printf("Win"); |
|
} |
|
|
|
} |
|
|
|
printf("\n\n"); |
|
printf("Press ESC to Exit!"); |
|
|
|
} |
|
|
|
|
|
|
|
void print__abstract_history(int **pData) |
|
{ |
|
/* clear screen */ |
|
system("cls"); |
|
|
|
print__header(); |
|
|
|
printf("\n\n"); |
|
|
|
int nSpc=33; |
|
|
|
print__space(4); |
|
printf("Me"); |
|
print__space(nSpc); |
|
printf("Computer"); |
|
print__space(nSpc); |
|
printf("Result"); |
|
|
|
printf("\n"); |
|
|
|
int i,roundTimes=0; |
|
|
|
|
|
for(i=0;i<lSize/3;) |
|
{ |
|
printf("\n"); |
|
|
|
while(pData[i++][0]==8&&i<lSize/3) |
|
{ |
|
int j=i; |
|
while(pData[j][0]!=8&&j++<(lSize/3-2)); |
|
|
|
printf("\n No. %d",++roundTimes ); |
|
|
|
printf(" Play rounds: %d",j-i ); |
|
|
|
int win=0; |
|
|
|
for(int m=i;m<j;m++) |
|
win+=pData[m][2]; |
|
|
|
printf(" Overal Win %d",win ); |
|
|
|
int draw=0; |
|
|
|
for(int m=i;m<j;m++) |
|
if(pData[m][0]==pData[m][1]) |
|
draw++; |
|
|
|
printf(" Draw: %d",draw ); |
|
|
|
|
|
printf(" Lose: %d", j-i-win-draw); |
|
|
|
if(win>j-i-win-draw) printf(" Winner: The Player\n"); |
|
else if(win<j-i-win-draw) printf(" Winner: The Computer\n"); |
|
else printf(" Winner: No Winner\n"); |
|
|
|
printf(" ------------------------------------------------------------------------------------ "); |
|
} |
|
|
|
i--; |
|
print__space(2); |
|
|
|
if(pData[i][0]==1) printf("scissor"); |
|
if(pData[i][0]==2) printf(" rock "); |
|
if(pData[i][0]==3) printf(" paper "); |
|
|
|
print__space(nSpc); |
|
|
|
if(pData[i][1]==1) printf("scissor"); |
|
if(pData[i][1]==2) printf(" rock "); |
|
if(pData[i][1]==3) printf(" paper "); |
|
|
|
print__space(nSpc); |
|
|
|
if(pData[i][2]==0) |
|
{ |
|
if(pData[i][0]==pData[i][1]) printf("Draw"); |
|
else printf("Lose"); |
|
} |
|
if(pData[i][2]==1) printf("Win"); |
|
|
|
i++; |
|
} |
|
|
|
printf("\n\n"); |
|
printf("Press ESC to Exit!\n\n"); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
void print__rank() |
|
{ |
|
/* clear screen */ |
|
system("cls"); |
|
|
|
print__header(); |
|
|
|
printf("\n\n"); |
|
|
|
int nSpc=33; |
|
|
|
print__space(4); |
|
printf("No."); |
|
print__space(nSpc); |
|
printf(" User "); |
|
print__space(nSpc-3); |
|
printf("Win Rates"); |
|
|
|
printf("\n"); |
|
|
|
|
|
|
|
|
|
char **pUsr=data__get_usr(); |
|
int i,j,nRows=data__get_usr_num(pUsr); |
|
float fRank[nRows][4]; |
|
|
|
|
|
for(i=0;i<nRows;i++) |
|
{ |
|
int **pData=data__get_data(pUsr[i]); |
|
|
|
fRank[i][1]= data__win_rate(pData); |
|
fRank[i][2]= data__win_rate(pData); |
|
|
|
fRank[i][0]= i; |
|
|
|
} |
|
|
|
int max=0,maxItm=0; |
|
|
|
for(j=0;j<nRows;j++) |
|
{ |
|
|
|
for(i=0;i<nRows;i++) |
|
{ |
|
if(fRank[i][2]>=max) |
|
{ |
|
max=fRank[i][2]; |
|
|
|
maxItm=i; |
|
|
|
} |
|
} |
|
|
|
fRank[maxItm][3]=j; |
|
|
|
if(max) |
|
{ |
|
|
|
printf("\n"); |
|
|
|
print__space(4); |
|
|
|
printf("%2d", j+1); |
|
|
|
print__space(nSpc-3); |
|
|
|
printf("%10s",pUsr[maxItm] ); |
|
|
|
print__space(nSpc-1); |
|
|
|
if(fRank[maxItm][1]==0) printf(" 0.00%%"); |
|
else |
|
printf("%3.2f%%", fRank[maxItm][1]-0.0099); |
|
fRank[maxItm][2]=0; |
|
max=0; |
|
} |
|
} |
|
|
|
|
|
printf("\n\n"); |
|
printf("Press ESC to Exit!"); |
|
|
|
} |
|
|
|
|
|
void print__settings(int nPnt) |
|
{ |
|
|
|
|
|
/* clear screen */ |
|
system("cls"); |
|
|
|
print__header(); |
|
|
|
char chItem1[]=" Go Back to main menu"; |
|
print_item(chItem1,(nPnt==1)?1:0,25); |
|
|
|
if(snd==1) |
|
{ |
|
char chItem2[]=" Mute the sound"; |
|
print_item(chItem2,(nPnt==2)?1:0,25); |
|
} |
|
else |
|
{ |
|
char chItem3[]=" Open the sound"; |
|
print_item(chItem3,(nPnt==2)?1:0,25); |
|
} |
|
char chItem4[]=" Reinstall the Game"; |
|
print_item(chItem4,(nPnt==3)?1:0,25); |
|
|
|
char chItem5[]=" Uninstall the Game"; |
|
print_item(chItem5,(nPnt==4)?1:0,25); |
|
|
|
char chItem6[]=" Change My Password"; |
|
print_item(chItem6,(nPnt==5)?1:0,25); |
|
|
|
char chItem7[]=" Clean My History "; |
|
print_item(chItem7,(nPnt==6)?1:0,25); |
|
|
|
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n"); |
|
printf("Press ESC to Exit!"); |
|
} |
|
|
|
|
|
void print__get_password(int type, int words) |
|
{ |
|
system("cls"); |
|
|
|
if(type) printf("Your password is WRONG! Please try again~\n\n"); |
|
|
|
printf("Please input your password: \n\nYour password = "); |
|
|
|
for(int i=0;i<words;i++) printf("*"); |
|
|
|
|
|
} |
|
|
|
|
|
void print__get_newpassword(int type, int words) |
|
{ |
|
system("cls"); |
|
|
|
if(type%4==0) printf("Please set your password: \n\nYour password = "); |
|
|
|
if(type%4==1) printf("Please input your password again: \n\nYour password = "); |
|
|
|
if(type%4==2) printf("The passwords you input are not the same!\n\nPlease set your password again: \n\nYour password = "); |
|
|
|
if(type%4==3) printf("Please input your password again: \n\nYour password = "); |
|
|
|
for(int i=0;i<words;i++) printf("*"); |
|
} |