#include<iostream>
#include<cstdlib>
#include<windows.h>
#include<time.h> 
#include<stdio.h>
#include<stdlib.h>
#include <iostream>
#include<ctime>
#include<bits/stdc++.h>
using namespace std;
string n,l,p;
int m,tmp=1;
int num;
int ran; 
bool bl=false;
string ui[20];
string s[21] = {
	"kedaoi",
	"GESP",
	"iostream",
	"return",
	"BUG",
	"desmos",
	"bits/stdc++.h",
	"using",
	"namespace",
	"std",
	"Hello keda!",
	"gugugu!",
	"uncomfortable",
	"M416",
	"chatGPT",
	"stong",
	"relax",
	"give somebody a call",
	"star",
	"movie theater",
	"squirel"
};
string oj[7] = {
	"I'm from the China.",
	"How old are you?",
	"What can I say?",
	"Do you have any friends?",
	"What's your favorite stalk?",
	"Oh my god!",
	"Don't go at the red light!"
};
string o[12] = {
	"你好",
	"兴安岭",
	"可达",
	"中华人民共和国",
	"小日子" ,
	"笔记本电脑",
	"台式电脑",
	"单板计算机",
	"绿色计算机",
	"智能芯片",
	"量子芯片",
	"珠穆朗玛峰" 
};
string k[12] = {
	"123",
	"456",
	"54198",
	"1145141919810",
	"000001",
	"1235678",
	"1001100100011",
	"987654321",
	"1789827364",
	"541876234",
	"9827348",
	"1a23465f" 
};
void kso(string s,int n){//逐字输出函数,s是逐字输出文段,n是输出间隔 
	for(int i = 0;i<s.size();i++){
		cout << s[i];
		Sleep(n);
	}
}
void ppp(int n,int m){
	for(int i = 1;i<=n;i++){
		cout << "\n";
	}
	for(int i = 1;i<=m;i++){
		cout << "\t"; 
	}
}
int main(){
	srand(time(0));
	system("title 打字练习机");
	system("color 1C");
	system("CLS");
	ppp(10,5);
	kso("是否查看教程A、是 B、否\n",20);
	ppp(1,5);
	cin >> n;
	if(n=="A" || n=="A"){
		system("CLS");
		ppp(10,5);
		kso("很简单,就是打字练习。开局输入选项按回车就行了.",20);
		ppp(1,5);
		kso("打字环节照着它上面给的示例来打字。如果连续5次打字失败,就会提醒你好好打。",20);
		Sleep(6000);
	}else if(n=="lhz042511lhz2111"){
		cin >> n;
		if(n=="1l1l11l"){
			system("CLS");
			ppp(10,5);
			kso("开发者,您好!",20);
			Sleep(1000);
			system("CLS");
			ppp(10,5);
			kso("您将享受特殊权利!",20);
			Sleep(1200);
			bl=true;			
		}else{
			system("CLS");
			ppp(10,5);
			kso("差点进入神秘模式呀!!",20);
			Sleep(1200);
		}
	}
	while(tmp==1){
		if(bl==false){
			system("CLS");
			ppp(10,5);
			kso("欢迎来到打字练习机1.5.5版",20);
			Sleep(1500);
			ppp(1,4);
			kso("请问您要做什么?a、打字练习 b、退出 c、查看更新日志",30);
			ppp(1,5);
			cin >> n;
			if(n=="A" || n=="a"){//开始打字
				tmp=0; 
				system("CLS");
				ppp(10,5); 
				kso("进行什么打字?a、英文 b、中文 c、数字",15);
				ppp(1,5);
				cin >> n;
				if(n=="a" || n=="A"){
					system("CLS");
					ppp(10,5);
					kso("进行什么样式打字?a、词汇 b、句子",15);
					ppp(1,5);
					cin >>n;
					if(n=="a" || n=="A"){//英文单词打字 
						srand(time(0));
						int popp=rand()%21+5;
						for(int i=1;i<=popp;i++){
							ui[i-1]=s[rand()%20];
						}
						double start=clock();
						for(int i = 0;i<popp;i++){
							system("CLS"); 
							ppp(10,7);
							kso(ui[i],10);
							ppp(1,7);
							getline(cin,l);
							if(l==ui[i]){
								num=0;
								continue;
							}
							else{
								if(num==5){
									system("CLS");
									ppp(10,7);
									kso("好好打,不打就退出",15);
									Sleep(2000);
									i--;
									num=0;
									system("CLS");
									continue;
								}else{
									i--;
									num++;
									continue;	
								}					
							}
						}
						double end=clock()/1000;
						system("CLS");
						ppp(10,5);
						kso("您一共耗时了",20);
						cout << end;
						kso("秒",20);
						Sleep(2000);
						ppp(1,5);
						kso("平均每个单词耗时",20);
						printf("%.1lf",end*1.0/popp);
						kso("秒",20);
						Sleep(4000);
						system("CLS");
						ppp(10,5);
						if(end*1.0/popp<=4) kso("大佬,不愧是大佬!",20);
						else if(end*1.0/popp>=4 & end*1.0/12<=popp) kso("还有进步空间哦",20);
						else kso("记得多练练哦",20); 	
						Sleep(2000);
					}else if(n=="B" || n=="b"){//英文句子打字 
						srand(time(0));
						int popp=rand()%7+3;
						for(int i=1;i<=popp;i++){
							ui[i-1]=oj[rand()%6];
						}
						double start=clock();
						for(int i = 0;i<=popp;i++){
							system("CLS"); 
							ppp(10,7);
							kso(ui[i],10);
							ppp(1,7);
							getline(cin,l);
							if(l==ui[i]){
								num=0;
								continue;
							}
							else{
								if(num==5){
									system("CLS");
									ppp(10,7);
									kso("好好打,不打就退出",15);
									Sleep(2000);
									i--;
									num=0;
									system("CLS");
									continue;
								}else{
									i--;
									num++;
									continue;	
								}					
							}
						}
						double end=clock()/1000;
						system("CLS");
						ppp(10,5);
						kso("您一共耗时了",20);
						cout << end;
						kso("秒",20);
						Sleep(2000);
						ppp(1,5);
						kso("平均每个句子耗时",20);
						printf("%.1lf",end*1.0/popp);
						kso("秒",20);
						Sleep(4000); 
						system("CLS");
						ppp(10,5);
						if(end*1.0/popp<=8) kso("大佬,不愧是大佬!",20);
						else if(end*1.0/popp>=8 & end*1.0/popp<=15) kso("还有进步空间哦",20);
						else kso("记得多练练哦",20); 	
						Sleep(2000);	
					} 
				}else if(n=="b" || n=="B"){//词汇打字 
					srand(time(0));
					int popp=rand()%12+5;
					for(int i=1;i<=popp;i++){
						ui[i-1]=o[rand()%11];
					}
					double start=clock();
					for(int i = 0;i<=popp;i++){
						system("CLS"); 
						ppp(10,7);
						kso(ui[i],10);
						ppp(1,7);
						getline(cin,l);
						if(l==ui[i]){
							num=0;
							continue;
						}
						else{
							if(num==5){
								system("CLS");
								ppp(10,7);
								kso("好好打,不打就退出",15);
								Sleep(2000);
								i--;
								num=0;
								system("CLS");
								continue;
							}else{
								i--;
								num++;
								continue;	
							}
						}
					}
					double end=clock()/1000;
					system("CLS");
					ppp(10,5);
					kso("您一共耗时了",20);
					cout << end;
					kso("秒",20);
					Sleep(2000);
					ppp(1,5);
					kso("平均每个词汇耗时",20);
					printf("%.1lf",end*1.0/popp);
					kso("秒",20);
					Sleep(4000); 
					system("CLS");
					ppp(10,5);
					if(end*1.0/popp<=4) kso("大佬,不愧是大佬!",20);
					else if(end*1.0/popp>=4 & end*1.0/popp<=10) kso("还有进步空间哦",20);
					else kso("记得多练练哦",20); 	
					Sleep(2000);	
				}else if(n=="c" || n=="C"){//数字打字 
					double start=clock();
					for(int i = 0;i<=11;i++){
						system("CLS"); 
						ppp(10,7);
						kso(k[i],10);
						ppp(1,7);
						getline(cin,l);
						if(l==k[i]){
							num=0;
							continue;
						}
						else{
							if(num==5){
								system("CLS");
								ppp(10,7);
								kso("好好打,不打就退出",15);
								Sleep(2000);
								i--;
								num=0;
								system("CLS");
								continue;
							}else{
								i--;
								num++;
								continue;	
							}
						}
					}
					double end=clock()/1000;
					system("CLS");
					ppp(10,5);
					kso("您一共耗时了",20);
					cout << end;
					kso("秒",20);
					Sleep(2000);
					ppp(1,5);
					kso("平均每组数耗时",20);
					printf("%.1lf",end*1.0/12);
					kso("秒",20);
					Sleep(4000); 	
					system("CLS");
					ppp(10,5);
					if(end*1.0/12<=2.5) kso("大佬,不愧是大佬!",20);
					else if(end*1.0/12>=2.5 & end*1.0/12<=5) kso("还有进步空间哦",20);
					else kso("记得多练练哦",20);
					Sleep(2000); 		
				}
				system("CLS");
				ppp(10,5);//彩蛋环节 
				system("color 3D");
				kso("是否查看彩蛋?A、是 B、否",20);
				ppp(1,5);
				cin >> n;
				if(n=="A" || n=="a"){
				system("CLS");
				ppp(10,5);
				kso("参与本作品制作的有:lhz2111(hydro账号)",20);
				Sleep(4000);
				system("CLS");
				ppp(10,5);
				kso("本人keda账号:李昊泽1",20);
				Sleep(4000);
				system("CLS");
				ppp(10,5);
				kso("作品制作不易,整整556行",20);
				Sleep(4000);
				system("CLS");
				ppp(10,5);
				kso("求大佬一个支持呗",20);
				Sleep(3000);
				system("CLS");	
				ppp(10,5);
				kso("圆周率前100位:3.141592653589793238462643383279502384197169399375105",20);
				ppp(1,5);
				kso("820974944592307816406286208998628034875342117068",20);
				Sleep(5000);
				system("CLS");	
				ppp(10,7);
				kso("感谢游玩!",20); 
				Sleep(2000);
				}else{
					system("CLS");
					ppp(10,5);
					kso("欢迎下次光临",20);
					Sleep(4000);
				}
			}else if(n=="b" || n=="B"){//开局B选项 
				tmp=1;
				system("CLS");
				ppp(10,5);
				kso("你居然退缩了!你需要再次按下b键",20);
				while(true){
					cin >> n; 
					if(n=="b"){
						system("CLS");
						ppp(10,5);
						kso("你中套了",50);
						continue;	
					}else{
						system("CLS");
						ppp(10,6);
						kso("好吧,再再再再再再再再再再再   见见见见见见见见见 ",0.5);
						ppp(1,6);
						kso("           再        见       见 ",0.5);
						ppp(1,6);
						kso("       再再再再再再再再再    见       见 ",0.5);
						ppp(1,6);
						kso("       再   再   再    见   见   见 ",0.5);
						ppp(1,6);
						kso("       再   再   再    见   见   见 ",0.5);
						ppp(1,6);
						kso("       再再再再再再再再再    见   见   见 ",0.5);
						ppp(1,6);
						kso("       再   再   再    见   见   见 ",0.5);
						ppp(1,6);
						kso("       再   再   再        见		   ",0.5);
						ppp(1,6);
						kso("      再再再再再再再再再再再      见 见   见",0.5);
						ppp(1,6);
						kso("       再       再     见见  见   见",0.5);
						ppp(1,6);
						kso("       再     再再再   见见    见见见见见",0.5);
						Sleep(4000);
						return 0;
					}
				}
			}else if(n=="c" || n=="C"){//开局C选项
				tmp=1;
				system("color 5A");
				system("CLS");
				ppp(10,5);
				kso("2024年1月22日首个版本发布103行(1.0版)",20);
				Sleep(1300);
				system("cls");
				ppp(10,5);
				kso("2024年1月23日更新中文打字(1.1版)",20); 
				Sleep(1300);
				system("cls");
				ppp(10,5);				
				kso("2024年1月23日更新打字时间和打字速度180行(1.2版)",20); 
				Sleep(1300);
				system("cls");
				ppp(10,5);
				kso("2024年1月23日更新数字打字248行(1.3版)",20); 
				Sleep(1300);
				system("cls");
				ppp(10,5);
				kso("2024年1月24日更新教程,改进了彩蛋 271行(1.3.5版)",20); 
				Sleep(1300);
				system("cls");
				ppp(10,5);
				kso("2024年1月24日更新英文句子打字 334行(1.3.7版)",20); 
				Sleep(1300);
				system("cls");
				ppp(10,5);
				kso("2024年1月25日更新打字评测 360行(1.3.9版)",20); 
				Sleep(1300);
				system("cls");
				ppp(10,4);
				kso("2024年1月25日更新数字打字和中文打字的打字样例 379行(1.4版)",20); 
				Sleep(1500);
				system("cls");
				ppp(10,3);
				kso("2024年9月11日改进了退出界面,微调了一下彩蛋,解决了更新日志需要重进的难题 411行(1.4.3版)",20); 
				Sleep(2000);
				system("cls");
				ppp(10,5);
				kso("2024年9月11日美化了更新日志退出的界面 423行(1.4.4版)",20); 
				Sleep(1400);
				system("cls");
				ppp(10,5);
				kso("2024年10月19日神秘模式添加!!!(爆改!) 496行(1.5版)",20); 
				Sleep(1400);
				system("cls");
				ppp(10,5);
				kso("2024年10月19日英文词汇、英文句子随机打字更新 514行(1.5.1版)",20); 
				Sleep(1500);
				system("cls");
				ppp(10,2);
				kso("2024年10月20日更新中文词汇的打字样例和中文词汇随机打字更新,更新日志退出秒数变随机 525行(1.5.2版)",20); 
				Sleep(2800);
				system("cls");
				ppp(10,2);
				kso("2024年10月20日美化了一下更新日志,删除了部分没用的代码540行(1.5.3版)",20); 
				Sleep(1500);
				system("cls");
				ppp(10,2);
				kso("2024年10月20日更新英文词汇打字样例553行,整改某些BUG(1.5.4版)",20); 
				Sleep(1500);
				system("cls");
				ppp(10,2);
				kso("2024年10月20日改进了神秘模式556行,1.5.5版)",20); 
				Sleep(1500);
				system("cls");
				srand(time(0));
				int pp=rand()%10+3;
				while(pp){
					ppp(10,5);
					cout << pp << "秒后返回";
					Sleep(1000);
					pp--;
					system("cls");
				}
			}			
		}else{//开fa者模式 
			int ran=rand()%100+1;
			system("cls");
			ppp(1,5);
			kso("请输入数字(1~2)",20);
			int rt;
			cin >> rt;
			for(int i=1;i<=9;i++){
				ppp(10,5);
				kso("加载中",0);
				int qqw=i%4;
				for(int j=1;j<=qqw;j++) cout << ".";
				Sleep(350);
				system("cls");
			}
			Sleep(1000);
			system("cls");
			if(rt==1){
				ppp(1,5);
				kso("1、输出代码",20);
				Sleep(300);
				ppp(1,6);
				kso("system('cls');",20);
				ppp(1,6);
				kso("ppp(x,y);",20);
				ppp(1,6);
				kso("kso('文字',z);",20);
				Sleep(1000);
				ppp(1,5);
				kso("注意:''只是为了不让程序报错写的,应为“”的英文格式 ",20);
				Sleep(1000);
				ppp(1,5);
				kso("注意:'kso'和'ppp'为自编函数,在代码里翻",20);			
			}else{
				ppp(1,5);
				kso("暂未更新",20);
				Sleep(1000);		
			}
			ppp(3,5);
			kso("再见",20);
			Sleep(1000);	
			return 0;
		}
	}
	return 0;
}

复制到DEV-C++上玩