#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
#include <time.h>
#define N 3//定義一個常數N,用來當做題目的初始設定
void Game(int &i);//遊戲程式
void Menu(char &op);//選單畫面
void Clock(void);//倒數計時器
void Result(int total);//顯示結果
void main(void)
{
    char op;//功能選項
	int i=0,total=0;//計數器i,每過一關加一;total成績
	while(1)//程式永遠執行
	{
		Menu(op);//選單畫面
		switch(op)
		{
			case 'Y': //輸入Y 進行遊戲
				Game(i);//進入遊戲程式
				total=N+i;//計算成績
				Result(total);//結果分析
				system("pause");//暫停畫面
				system("cls");//清除畫面
				break;
			case 'N': //輸入N 離開
				printf("*********************\n");
				printf("*   感謝您的使用^^  *\n");
				printf("*     bye~ bye~     *\n");
				printf("*********************\n");
				system("pause");
				exit(1);//離開
				break;
			default://錯誤訊息
				printf("*********************\n");
				printf("*輸入錯誤 請重新輸入*\n");
				printf("*********************\n");
				break;
		}//switch
	}//while(1)
}//end main
void Menu(char &op){		
	printf("******************************\n");
	printf("** 歡迎使用本記憶力測驗程式 **\n");
	printf("******************************\n");
	printf("本程式會先顯示一串隨機組合的英文字串10秒\n");
	printf("然後要求你輸入該字串輸入正確,會加長英文\n");
	printf("字串長度,並繼續測驗輸入錯誤,則結束程式\n");
	printf("是否進行測驗(Y/N)?");
	printf("請輸入選項\n");
	scanf(" %c",&op);//玩家輸入選項
}//Menu
void Game(int &i){//遊戲程式
	char Quiz[12]={};//題目
	char Ans[12]={};//玩家輸入答案
	int j;//計數器j
	srand(time(NULL));//打亂亂數
	for(j=0;j<N+i;j++){//設定題目
		Quiz[j]=(65+rand()%26);
	}
	printf("*** %s ***\n",Quiz);//列印題目
	Clock();//倒數計時
	system("cls");//清除畫面
	printf("Time up!\n");
	printf("請輸入解答");
	scanf("%s",Ans);//玩家輸入答案
	if(strncmp(Quiz,Ans,N+i)==0)//驗證答案
	{
		if(N+i<11)//終止條件
		{
			i++;
			Game(i);//答對->繼續下一關
		}else{
			printf("測驗結束!");
		}		
	}else{
		printf("測驗結束!\n");
	}//if-else	
}//Game
void Clock(void){//倒數計時器
	int k;
	for(k=10;k>0;k--)
   {
    printf("剩下 %d 秒\n",k);//顯示剩餘的秒數
    Sleep(1000);//暫停一秒
   }
}//Clock
void Result(int total){//結果分析
	printf("你的記憶力指數是%d",total);
	if(total<5){
		printf("你的記憶力不太好喔！\n");
	}else{
		if(total<8){
		printf("你的記憶力不錯喔！\n");
		}else{
		printf("你的記憶力太棒了！\n");
		}
	}
}//Result