这是一个帖子评价器,汲取了很多资料拼凑来的,望能得到改进意见!
// HKJC 3.7.0 帖子质量评价生成器
// 仅适用 Windows 用户,确保版本在 C++11 及以上
//作者:ZWMXC2/Dream_Country
//如有雷同,纯属巧合!
#include<iostream>
#include<string>
#include<windows.h>
#define END system("cls"),cout<<"未定义行为,已退出程序。",system(">nul 2>nul pause"),exit(0)
using namespace std;
const string version=" 3.5.1 ";
const string title=R"(#######################
# H H K K J CCC #
# HHHH KK J C #
# H H K K JJ CCC #
#######################
)";
int op,vop;
double all;
string v,ret,opp[10]{""," JC 或疑似 JC ","无意义","恶意哗众取宠","违规"},g[10]{""," $\\color{#CFB53B}{S}$"," $\\color{#FF0000}{A}$"," $\\color{#e47833}{B}$"," $\\color{#bc1717}{C}$"};
void get(){cout<<">>>";cin>>op;}
void getstring(){
cout<<">>>";
char c;
while((c=getchar())==' '||c=='\n') ;
getline(cin,v);
v.insert(v.begin(),c);
while(v.back()==' '||v.back()=='\n') v.pop_back();
}
void Copy(string TempBin) {
HGLOBAL hMemBin=NULL;
PCHAR LockBin=NULL;
OpenClipboard(NULL);
EmptyClipboard();
hMemBin=GlobalAlloc(GMEM_MOVEABLE,TempBin.size()+1);
LockBin=(PCHAR)GlobalLock(hMemBin);
RtlMoveMemory(LockBin,TempBin.c_str(),TempBin.size()+1);
GlobalUnlock(hMemBin);
LockBin=NULL;
SetClipboardData(CF_TEXT,hMemBin);
CloseClipboard();
}
int grfr(string a){
if(a=="S") return 1;
if(a=="A") return 2;
if(a=="B") return 3;
if(a=="C") return 4;
END;
}
int main(){
SetConsoleTitle("Mr.Hacker集成开发系统项目(HKJC) 3.7.0 帖子质量评价生成器 作者:ZWMXC2");
SetWindowLongPtrA(GetConsoleWindow(),GWL_STYLE,GetWindowLongPtrA(GetConsoleWindow(),GWL_STYLE)&~WS_SIZEBOX&~WS_MAXIMIZEBOX&~WS_MINIMIZEBOX);
cout<<title;
Sleep(2000);
MessageBox(NULL,(LPCTSTR)TEXT("欢迎使用HKJC产品! 作者:ZWMXC2 请问您是否使用?"), (LPCTSTR)TEXT("HKJC"), MB_YESNO);
system("cls");
cout<<"该帖类型是?(回复数字)\n【1】JC 或疑似 JC\n【2】无意义\n【3】恶意哗众取宠\n【4】其他情况的违规\n【5】自定义\n\n";
get();
vop=op;
system("cls");
if(op<=4&&op>=1)
ret="本帖是"+opp[op]+"帖\n\n";
else if(op==5){
cout<<"自定义帖子类型。\n\n";
getstring();
string sa="",sb="";
if((v.front()<='Z'&&v.front()>='A')||(v.front()<='z'&&v.front()>='a')||(v.front()<='9'&&v.front()>='1')) sa=" ";
if((v.back()<='Z'&&v.back()>='A')||(v.back()<='z'&&v.back()>='a')||(v.front()<='9'&&v.front()>='1')) sb=" ";
ret="本帖是"+sa+v+sb+"\n\n";
system("cls");
}
else END;
cout<<"是否取消引导?请确保你熟悉 HKJC 评价标准。(回复数字)\n【1】好\n【2】算了\n\n";
get();
if(op==1){
system("cls");
int po[10]{0,7,4,2,1};
cout<<"该帖内容丰富度评价为?(回复等级,如 A,最高 S,最低 C)\n\n";
getstring();
ret+="该帖内容丰富度评价为"+g[grfr(v)]+"\n\n",all+=po[grfr(v)];
system("cls");
cout<<"该帖内容潮流度评价为?(回复等级,如 A,最高 S,最低 C)\n\n";
getstring();
ret+="该帖内容潮流度评价为"+g[grfr(v)]+"\n\n",all+=po[grfr(v)];
system("cls");
cout<<"该帖内容像xxs评价为?(回复等级,如 A,最高 S,最低 C)\n\n";
getstring();
ret+="该帖内容像xxs评价为"+g[grfr(v)]+"\n\n",all+=po[grfr(v)];
system("cls");
cout<<"该帖文本表达评价为?(回复等级,如 A,最高 S,最低 C)\n\n";
getstring();
ret+="该帖文本表达评价为"+g[grfr(v)]+"\n\n",all+=po[grfr(v)];
system("cls");
cout<<"该帖情感真实度评价为?(回复等级,如 A,最高 S,最低 C)\n\n";
getstring();
ret+="该帖情感真实度评价为"+g[grfr(v)]+"\n\n",all+=po[grfr(v)];
system("cls");
cout<<"该帖创新性评价为?(回复等级,如 A)\n\n";
getstring();
ret+="该帖创新性评价为"+g[grfr(v)]+"\n\n",all+=po[grfr(v)];
system("cls");
all/=6;
ret+="**综合评价";
if(all>=6) ret+=g[1];
else if(all>=3) ret+=g[2];
else if(all>=1.5) ret+=g[3];
else ret+=g[4];
ret+="**\n\n";
}
else if(op==2){
system("cls");
cout<<"该帖前后文有矛盾吗?(回复数字)\n【1】有\n【2】无\n\n";
get();
if(op<=2&&op>=1){
ret+="该帖内容丰富度评价为";
if(op==1) ret+=g[4],all+=1;
else{
system("cls");
cout<<"该帖有观点、理由、证据三个要素中的几个?(回复数字)\n【1】1 个\n【2】2 个\n【3】3 个\n【4】0 个\n\n";
get();
if(op<=4&&op>=1){
if(op==4) ret+=g[4],all+=1;
if(op==1) ret+=g[3],all+=2;
if(op==2) ret+=g[2],all+=4;
if(op==3) ret+=g[1],all+=7;
}
else END;
}
}
else END;
ret+="\n\n";
system("cls");
cout<<"该帖前后文连贯吗?(回复数字)\n【1】很连贯,过渡自然\n【2】有但又不太连贯\n【3】什么玩意,牛头不对马嘴\n\n";
get();
if(op<=3&&op>=1){
ret+="该帖文本表达评价为";
if(op==3) ret+=g[4],all+=1;
else if(op==2) ret+=g[3],all+=2;
else{
system("cls");
cout<<"该帖艺术手法效果明显吗?(回复数字)\n【1】效果明显\n【2】有点效果\n【3】用了艺术手法但和没用一样\n【4】艺术手法都没有\n\n";
get();
if(op<=4&&op>=1){
if(op==4) ret+=g[4],all+=1;
if(op==1) ret+=g[1],all+=7;
if(op==2) ret+=g[2],all+=4;
if(op==3) ret+=g[3],all+=2;
}
else END;
}
}
else END;
ret+="\n\n";
system("cls");
cout<<"该帖有真实情感吗?(回复数字)\n【1】有\n【2】无\n\n";
get();
if(op<=2&&op>=1){
ret+="该帖情感真实度评价为";
if(op==2) ret+=g[4],all+=1;
else{
system("cls");
cout<<"该帖真实感情明显吗?(回复数字)\n【1】很明显\n【2】表达不够好,但仍可以感觉到\n【3】有情感但十分模糊、不清晰\n\n";
get();
if(op<=3&&op>=1){
if(op==1) ret+=g[1],all+=7;
if(op==2) ret+=g[2],all+=4;
if(op==3) ret+=g[3],all+=2;
}
else END;
}
}
else END;
ret+="\n\n";
system("cls");
cout<<"该帖的写法你有印象吗?(回复数字)\n【1】有\n【2】无\n\n";
get();
if(op<=2&&op>=1){
ret+="该帖创新性评价为";
system("cls");
if(op==1){
cout<<"和你印象中的差别大不大?(回复数字)\n【1】有些差别\n【2】简直一模一样\n\n";
get();
if(op<=2&&op>=1){
if(op==1) ret+=g[3],all+=2;
if(op==2) ret+=g[4],all+=1;
}
else END;
}
else{
cout<<"该帖的新型写法对你来说新奇、震惊吗?(回复数字)\n【1】嗯\n【2】没有\n\n";
get();
if(op<=2&&op>=1){
if(op==1) ret+=g[1],all+=7;
if(op==2) ret+=g[2],all+=4;
}
else END;
}
}
else END;
ret+="\n\n";
system("cls");
all/=4;
ret+="**综合评价";
if(all>=6) ret+=g[1];
else if(all>=3) ret+=g[2];
else if(all>=1.5) ret+=g[3];
else ret+=g[4];
ret+="**\n\n";
}
else END;
if(vop==5){
string id;
if(all>=6) id=" S";
else if(all>=3) id=" A";
else if(all>=1.5) id=" B";
else id=" C";
cout<<"总分为 "<<all<<",等级为"+id+",自定义结尾句。\n\n";
getstring();
ret+=v+"\n";
}
else{
cout<<"要自定义结尾句吗?(回复数字)\n【1】要\n【2】不要\n\n";
get();
system("cls");
if(op==1){
string id;
if(all>=6) id=" S";
else if(all>=3) id=" A";
else if(all>=1.5) id=" B";
else id=" C";
cout<<"总分为 "<<all<<",等级为"+id+",自定义结尾句。\n\n";
getstring();
ret+=v+"\n";
}
else if(op==2){
if(all>=3){
if(vop==1) ret+="## 楼主 JC 实力可以,期待下次的表演。(手动狗头)\n";
if(vop==2) ret+="## 再怎么说,都是无意义。\n";
if(vop==3) ret+="## 楼主 NB,再来几个!\n";
if(vop==4) ret+="## 好,但是违规了,建议删除帖子。\n";
}
else{
if(vop==1) ret+="## 楼主 JC 实力一般,希望下次能带给我们更好观感。\n";
if(vop==2) ret+="## 楼主帖子质量低迷且无意义,希望提升质量。\n";
if(vop==3) ret+="## 楼主 NB,但你这实力不行啊,回炉重造一下吧。\n";
if(vop==4) ret+="## 帖子质量低,还请不要再违规了。xxs警告!\n";
}
}
else END;
}
ret+="\n_BY [HKJC 质量评价生成器 "+version+"](https://www.luogu.com.cn/blog/Mr-hacker/hkjc-plscj-zong)_\n";
system("cls");
cout<<"接下来是预览!\n\n--------------------\n\n";
cout<<ret<<"\n";
cout<<"--------------------\n\n按任意键复制";
system(">nul 2>nul pause");
Copy(ret);
system("cls");
cout<<"已复制,感谢使用!";
system(">nul 2>nul pause");
return 0;
}