#include<bits/stdc++.h>
using namespace std;
#include<conio.h>
int m=100000;
int jd=1e5,zd=1e5,kn=1e5,cn=1e5;
char select;
string s;
string choiceChar(string s,int len){
srand(time(NULL));
string ans="";
int l=s.size();
for(int i=1;i<=len;i++){
int r=rand()%l;
ans+=s[r];
}return ans;
}
const string lower="asdfghjklqwertyuiopzxcvbnm",
short_digit="12345",digit="0123456789";
const string c="QWERTYUIOPASDFGHJKLZXCVBNMasdfghjklqwertyuiopzxcvbnm0123456789";
string a[4]={short_digit,digit,lower,c};
struct pas{
string s;
int m;
int cnt;
};
vector<pas>p;
void open(string s){
string pass=choiceChar(s,8),input="";
int cnt=0;
while(true){
system("cls");
if(cnt>=1){
cout<<"历史记录:";
for(int i=0;i<p.size();i++) cout<<"第"<<p[i].cnt
<<"次 输入"<<p[i].s<<" 有"<<p[i].m<<"个字符和密码不一样\n";
}
cout<<"请猜测密码:";
cin>>input;
if(input.size()!=8){
cout<<"请注意密码长度为8\n";
system("pause");
continue;
}bool flag=false;
int difcnt=0;
for(int i=0;i<8;i++){
if(s.find(input[i])==-1){
cout<<input[i]<<"不是此模式下的字符。\n";
flag=true;
cout<<"本难度的字符有:"<<s<<endl;
system("pause");
break;
}
if(input[i]!=pass[i])difcnt++;
}
if(flag)continue;
cnt++;
if(difcnt==0){
cout<<"恭喜你,猜对啦!!!\n共猜了"<<cnt<<"次。\n";
switch(select) {
case '1':
jd=min(jd,cnt);
break;
case '2':
zd=min(zd,cnt);
break;
case '3':
kn=min(kn,cnt);
break;
case '4':
cn=min(cn,cnt);
//
}
break;
}else {
cout<<"您猜测的密码"<<input<<"有"<<difcnt<<"个字符不一样。\n";
system("pause");
p.push_back({input,difcnt,cnt});
}
}
}
void f(int n){
if(n==m)cout<<"未开始";
else cout<<n<<"次猜对";
cout<<endl;
}
void sets(){
cout<<"设定难度:\n1.简单 2.中等 3.困难 4.超难\n";
cout<<"\n简单:" <<a[0]<<"\n中等:"<<a[1]
<<"\n困难:"<<a[2]<<"\n超难:"<<a[3]<<endl;
cout<<"请选择:";
cin>>select;
while(select!='1'&&select!='2'&&select!='3'&&select!='4'){
cout<<"请重新输入:";
cin>>select;
}s=a[select-49];
cout<<"请注意密码长度为8\n";
}
void look(){
cout<<"简单模式:";f(jd);
cout<<"中等模式:";f(zd);
cout<<"困难模式:";f(kn);
cout<<"超难模式:";f(cn);
}
void start(string s){
cout<<"1.开始游戏\n2.调整难度\n3.查看记录\n4.游戏规则\n5.退出游戏\n";
string x="0",pp="12345";
while(pp.find(x)==-1) x=_getch();
int n=x[0]-48;
system("cls");
switch(n){
case 1:
open(s);
break;
case 2:
sets();
break;
case 3:
look();
break;
case 4:
cout<<"本游戏名字叫密码猜猜猜,输入密码后会告诉你有几个字符错了,你按照这样猜对密码就算获胜\n";
break;
case 5:
return ;
}
system("pause");
system("cls");
start(s);
}
int main(){
cout<<"本游戏名字叫密码猜猜猜,输入密码后会告诉你有几个字符错了,你按照这样猜对密码就算获胜\n";
cout<<"设定初始难度:\n1.简单 2.中等 3.困难 4.超难\n";
cout<<"\n简单:" <<a[0]<<"\n中等:"<<a[1]<<"\n困难:"<<a[2]<<"\n超难:"<<a[3]<<endl;
cout<<"请选择:";
cin>>select;
while(select!='1'&&select!='2'&&select!='3'&&select!='4'){
cout<<"请重新输入:";
cin>>select;
}s=a[select-49];
cout<<"请注意密码长度为8\n";
system("pause");
system("cls");
start(s);
look();
return 0;
}