1 line
23 KiB
JSON
1 line
23 KiB
JSON
{"repo": "ball-aabb/gobang", "files": {"beta-260515/bgame.h": {"44524cc5a457c58c4ba1cd0e1c107cedf7cca87d": {"t": 1785746373.4594507, "n": 9951, "h": "5f64e45438c90eb8", "c": "#ifndef BGAME_H\n#define BGAME_H\n\n//所需头文件\n#include<iostream>\n#include<fstream>\n#include<string>\n#include<graphics.h>\n#include<conio.h>\n#include<ctime>\n#include<cmath>\n#include<vector>\n#include<windows.h>\n#include<sstream>\n#include<thread>\n#include<future>\n#include<chrono>\n#include<atomic>\n\n//缩写\n#define cleard() cleardevice()\n#define rgbc COLORREF\n#define L_MOUSE KEY_DOWN(VK_LBUTTON)\n#define R_MOUSE KEY_DOWN(VK_RBUTTON)\n//将窗口移动到屏幕正中央\n#define move_window() MoveWindow(GetHWnd(),(GetSystemMetrics(SM_CXFULLSCREEN)-getwidth())/2,(GetSystemMetrics(SM_CYFULLSCREEN)-getheight())/2,getwidth(),getheight(),1)\n//按键检测必备\n#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME)&0x8000)?1:0)&&(GetForegroundWindow()==GetHWnd()) \n\n//获取针对当前窗口的鼠标指针\nvoid getmouse(LPPOINT lpPoint){\n GetCursorPos(lpPoint);\n ScreenToClient(GetHWnd(),lpPoint);\n}\n\n//改背景颜色(因为改完要清屏,这里把两个函数加到了一起)\nvoid _setbkcolor(rgbc color){\n setbkcolor(color);\n cleard();\n}\n\n/*针对winodws 11新版命令提示符会自动弹出的问题(其它系统都不会),\n特地编写以下2个函数以在程序运行时关闭命令提示符窗口*/\nstd::string st = \"\\\\main\";\nbool windowHidden = false;\nBOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) {\n const std::string* targetString = reinterpret_cast<const std::string*>(lParam);\n char windowTitle[256];\n GetWindowTextA(hwnd, windowTitle, sizeof(windowTitle));\n std::string title(windowTitle);\n if (title.find(*targetString) != std::string::npos && !title.empty()) {\n if (ShowWindow(hwnd, SW_HIDE)) {\n windowHidden = true;\n }\n }\n return TRUE;\n}\n\nbool HideWindowByPartialTitle(const std::string& partialTitle = \"\\\\main\") {\n windowHidden=false;\n st=partialTitle;\n EnumWindows(EnumWindowsProc, reinterpret_cast<LPARAM>(&st));\n return windowHidden;\n}\n\n//deepseek api密钥检测函数(原理为查询该密钥的余额)(deepseek辅助生成)\nstd::string check_key(const std::string& apikey){\n if(apikey.length()<4||apikey.substr(0,3)!=\"sk-\"){\n return\"f\";\n }\n std::string command=\"curl -s -X GET \\\"https://api.deepseek.com/user/balance\\\" -H \\\"Accept: application/json\\\" -H \\\"Authorization: Bearer \"+apikey+\"\\\" -w \\\"%{http_code}\\\" --silent --max-time 10\";\n FILE* pipe=popen(command.c_str(),\"r\");\n if(!pipe){\n return\"无法执行curl命令\";\n }\n char buffer[128];\n std::string result;\n while(fgets(buffer,sizeof(buffer),pipe)!=NULL){\n result+=buffer;\n }\n int status=pclose(pipe);\n if(status==0){\n std::string http_code;\n for(char c:result){\n if(std::isdigit(static_cast<unsigned char>(c))){\n http_code+=c;\n }\n }\n if(http_code.length()>=3&&http_code.substr(http_code.length()-3)==\"200\"){\n return\"t\";\n }else{\n return\"f\";\n }\n }else{\n std::string error_msg;\n if(status==6){\n error_msg=\"无法解析主机\";\n }else if(status==7){\n error_msg=\"连接主机失败\";\n }else if(status==23){\n error_msg=\"写入文件失败\";\n }else if(status==28){\n error_msg=\"连接超时\";\n }else if(status==35){\n error_msg=\"SSL/TLS握手失败\";\n }else if(status==60){\n error_msg=\"SSL证书问题\";\n }else{\n error_msg=\"curl错误代码:\"+std::to_string(status);\n }\n return error_msg;\n }\n}\n\n/*由于EasyX库仅支持GB-2312编码,而向deepseek api发送请求需要UTF-8编码,\n所以本项目在main.cpp中采用GB-2312编码,在bgame.h中采用UTF-8编码,\n某些函数调用时要先经以下2个函数进行编码转换*/\n\n//GB2312转UTF-8编码转换函数(deepseek辅助生成)\nstd::string gb2312_to_utf8(const std::string& gb2312_str){\n if(gb2312_str.empty()) return \"\";\n int len=MultiByteToWideChar(CP_ACP,0,gb2312_str.c_str(),-1,NULL,0);\n if(len==0) return \"\";\n wchar_t* wstr=new wchar_t[len];\n MultiByteToWideChar(CP_ACP,0,gb2312_str.c_str(),-1,wstr,len);\n len=WideCharToMultiByte(CP_UTF8,0,wstr,-1,NULL,0,NULL,NULL);\n if(len==0){\n delete[] wstr;\n return \"\";\n }\n char* utf8_str=new char[len];\n WideCharToMultiByte(CP_UTF8,0,wstr,-1,utf8_str,len,NULL,NULL);\n std::string result(utf8_str);\n delete[] wstr;\n delete[] utf8_str;\n return result;\n}\n\n//UTF-8转GB2312编码转换函数(deepseek辅助生成)\nstd::string utf8_to_gb2312(const std::string& utf8_str){\n if(utf8_str.empty()) return \"\";\n int len=MultiByteToWideChar(CP_UTF8,0,utf8_str.c_str(),-1,NULL,0);\n if(len==0) return \"\";\n wchar_t* wstr=new wchar_t[len];\n MultiByteToWideChar(CP_UTF8,0,utf8_str.c_str(),-1,wstr,len);\n len=WideCharToMultiByte(CP_ACP,0,wstr,-1,NULL,0,NULL,NULL);\n if(len==0){\n delete[] wstr;\n return \"\";\n }\n char* gb2312_str=new char[len];\n WideCharToMultiByte(CP_ACP,0,wstr,-1,gb2312_str,len,NULL,NULL);\n std::string result(gb2312_str);\n delete[] wstr;\n delete[] gb2312_str;\n return result;\n}\n\n//JSON转义函数(deepseek辅助生成)\nstd::string json_escape(const std::string& str){\n std::string result;\n result.reserve(str.length()*2);\n for(size_t i=0;i<str.length();++i){\n unsigned char c=str[i];\n if(c=='\"'){\n result+=\"\\\\\\\"\";\n }else if(c=='\\\\'){\n result+=\"\\\\\\\\\";\n }else if(c=='\\n'){\n result+=\"\\\\n\";\n }else if(c=='\\r'){\n result+=\"\\\\r\";\n }else if(c=='\\t'){\n result+=\"\\\\t\";\n }else if(c<0x20){\n char buf[7];\n snprintf(buf,sizeof(buf),\"\\\\u%04x\",c);\n result+=buf;\n }else{\n result+=c;\n }\n }\n return result;\n}\n\n//deepseek api调用函数(deepseek辅助生成)\nstd::string call_ai(std::string key,std::string content){\n //1.编码转换:GB2312->UTF-8\n std::string utf8_content=gb2312_to_utf8(content);\n if(utf8_content.empty()&&!content.empty()){\n return \"E01编码转换失败\";\n }\n //2.JSON转义\n std::string escaped_content=json_escape(utf8_content);\n //3.构建JSON请求\n std::string json_data=\"{\\\"model\\\":\\\"deepseek-v4-flash\\\",\\\"messages\\\":[{\\\"role\\\":\\\"user\\\",\\\"content\\\":\\\"\"+escaped_content+\"\\\"}],\\\"stream\\\":false,\\\"max_tokens\\\":2048}\";\n //4.保存到临时文件\n std::string temp_file=\"request.json\";\n std::ofstream file(temp_file,std::ios::binary);\n if(!file){\n return \"E02无法创建临时文件\";\n }\n file.write(json_data.c_str(),json_data.length());\n file.close();\n //5.执行curl命令\n std::string command=\"curl -s -X POST https://api.deepseek.com/v1/chat/completions -H \\\"Content-Type: application/json\\\" -H \\\"Authorization: Bearer \"+key+\"\\\" --data-binary @\"+temp_file;\n std::string result;\n char buffer[4096];\n FILE* pipe=_popen(command.c_str(),\"r\");\n if(!pipe){\n remove(temp_file.c_str());\n return \"E03无法执行curl命令\";\n }\n while(fgets(buffer,sizeof(buffer),pipe)!=nullptr){\n result+=buffer;\n }\n int pipe_status=_pclose(pipe);\n remove(temp_file.c_str());\n //检查curl执行状态\n if(pipe_status!=0){\n return \"E04curl命令执行失败(状态码:\"+std::to_string(pipe_status)+\")\";\n }\n //6.处理响应\n if(result.empty()){\n return \"E05API返回空响应\";\n }\n //7.解析响应-先检查API错误\n if(result.find(\"\\\"error\\\":\")!=std::string::npos){\n size_t msg_start=result.find(\"\\\"message\\\":\\\"\");\n if(msg_start!=std::string::npos){\n msg_start+=11;\n size_t msg_end=result.find(\"\\\"\",msg_start);\n if(msg_end!=std::string::npos){\n return \"E06API错误:\"+result.substr(msg_start,msg_end-msg_start);\n }\n }\n return \"E07API返回未知错误\";\n }\n //8.检查网络错误\n if(result.find(\"curl:\")!=std::string::npos||result.find(\"Could not resolve host\")!=std::string::npos){\n return \"E08网络连接失败\";\n }\n if(result.find(\"SSL certificate problem\")!=std::string::npos){\n return \"E09SSL证书验证失败\";\n }\n if(result.find(\"401\")!=std::string::npos||result.find(\"unauthorized\")!=std::string::npos){\n return \"E10API密钥无效或已过期\";\n }\n if(result.find(\"429\")!=std::string::npos){\n return \"E11请求频率超限\";\n }\n if(result.find(\"500\")!=std::string::npos||result.find(\"502\")!=std::string::npos||result.find(\"503\")!=std::string::npos||result.find(\"504\")!=std::string::npos){\n return \"E12服务器内部错误\";\n }\n //9.提取正常响应内容\n size_t content_start=result.find(\"\\\"content\\\":\\\"\");\n if(content_start==std::string::npos){\n size_t error_start=result.find(\"\\\"message\\\":\\\"\");\n if(error_start!=std::string::npos){\n error_start+=11;\n size_t error_end=result.find(\"\\\"\",error_start);\n if(error_end!=std::string::npos){\n return \"E13API错误:\"+result.substr(error_start,error_end-error_start);\n }\n }\n return \"E14API响应格式错误\";\n }\n content_start+=11;\n size_t content_end=content_start;\n bool escaped=false;\n while(content_end<result.length()){\n if(escaped){\n escaped=false;\n }else if(result[content_end]=='\\\\'){\n escaped=true;\n }else if(result[content_end]=='\"'){\n break;\n }\n content_end++;\n }\n if(content_end>=result.length()||content_end<=content_start){\n return \"E15无法提取响应内容\";\n }\n std::string ai_content=result.substr(content_start,content_end-content_start);\n //10.解码转义字符\n std::string decoded;\n for(size_t i=0;i<ai_content.length();++i){\n if(ai_content[i]=='\\\\'&&i+1<ai_content.length()){\n switch(ai_content[i+1]){\n case 'n':decoded+='\\n';i++;break;\n case 'r':decoded+='\\r';i++;break;\n case 't':decoded+='\\t';i++;break;\n case '\\\\':decoded+='\\\\';i++;break;\n case '\"':decoded+='\"';i++;break;\n case '/':decoded+='/';i++;break;\n case 'u':\n if(i+5<ai_content.length()){\n decoded+='?';\n i+=5;\n }else{\n decoded+=ai_content[i];\n }\n break;\n default:\n decoded+=ai_content[i];\n break;\n }\n }else{\n decoded+=ai_content[i];\n }\n }\n //11.直接返回解码后的UTF-8字符串\n return decoded;\n}\n\n//完结撒花\n#endif"}, "50dfc288cfcc0af6c7eefd1e3c5a53a070d9e51f": {"t": 1785763025.6839337, "n": 9951, "h": "5f64e45438c90eb8", "c": "#ifndef BGAME_H\n#define BGAME_H\n\n//所需头文件\n#include<iostream>\n#include<fstream>\n#include<string>\n#include<graphics.h>\n#include<conio.h>\n#include<ctime>\n#include<cmath>\n#include<vector>\n#include<windows.h>\n#include<sstream>\n#include<thread>\n#include<future>\n#include<chrono>\n#include<atomic>\n\n//缩写\n#define cleard() cleardevice()\n#define rgbc COLORREF\n#define L_MOUSE KEY_DOWN(VK_LBUTTON)\n#define R_MOUSE KEY_DOWN(VK_RBUTTON)\n//将窗口移动到屏幕正中央\n#define move_window() MoveWindow(GetHWnd(),(GetSystemMetrics(SM_CXFULLSCREEN)-getwidth())/2,(GetSystemMetrics(SM_CYFULLSCREEN)-getheight())/2,getwidth(),getheight(),1)\n//按键检测必备\n#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME)&0x8000)?1:0)&&(GetForegroundWindow()==GetHWnd()) \n\n//获取针对当前窗口的鼠标指针\nvoid getmouse(LPPOINT lpPoint){\n GetCursorPos(lpPoint);\n ScreenToClient(GetHWnd(),lpPoint);\n}\n\n//改背景颜色(因为改完要清屏,这里把两个函数加到了一起)\nvoid _setbkcolor(rgbc color){\n setbkcolor(color);\n cleard();\n}\n\n/*针对winodws 11新版命令提示符会自动弹出的问题(其它系统都不会),\n特地编写以下2个函数以在程序运行时关闭命令提示符窗口*/\nstd::string st = \"\\\\main\";\nbool windowHidden = false;\nBOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) {\n const std::string* targetString = reinterpret_cast<const std::string*>(lParam);\n char windowTitle[256];\n GetWindowTextA(hwnd, windowTitle, sizeof(windowTitle));\n std::string title(windowTitle);\n if (title.find(*targetString) != std::string::npos && !title.empty()) {\n if (ShowWindow(hwnd, SW_HIDE)) {\n windowHidden = true;\n }\n }\n return TRUE;\n}\n\nbool HideWindowByPartialTitle(const std::string& partialTitle = \"\\\\main\") {\n windowHidden=false;\n st=partialTitle;\n EnumWindows(EnumWindowsProc, reinterpret_cast<LPARAM>(&st));\n return windowHidden;\n}\n\n//deepseek api密钥检测函数(原理为查询该密钥的余额)(deepseek辅助生成)\nstd::string check_key(const std::string& apikey){\n if(apikey.length()<4||apikey.substr(0,3)!=\"sk-\"){\n return\"f\";\n }\n std::string command=\"curl -s -X GET \\\"https://api.deepseek.com/user/balance\\\" -H \\\"Accept: application/json\\\" -H \\\"Authorization: Bearer \"+apikey+\"\\\" -w \\\"%{http_code}\\\" --silent --max-time 10\";\n FILE* pipe=popen(command.c_str(),\"r\");\n if(!pipe){\n return\"无法执行curl命令\";\n }\n char buffer[128];\n std::string result;\n while(fgets(buffer,sizeof(buffer),pipe)!=NULL){\n result+=buffer;\n }\n int status=pclose(pipe);\n if(status==0){\n std::string http_code;\n for(char c:result){\n if(std::isdigit(static_cast<unsigned char>(c))){\n http_code+=c;\n }\n }\n if(http_code.length()>=3&&http_code.substr(http_code.length()-3)==\"200\"){\n return\"t\";\n }else{\n return\"f\";\n }\n }else{\n std::string error_msg;\n if(status==6){\n error_msg=\"无法解析主机\";\n }else if(status==7){\n error_msg=\"连接主机失败\";\n }else if(status==23){\n error_msg=\"写入文件失败\";\n }else if(status==28){\n error_msg=\"连接超时\";\n }else if(status==35){\n error_msg=\"SSL/TLS握手失败\";\n }else if(status==60){\n error_msg=\"SSL证书问题\";\n }else{\n error_msg=\"curl错误代码:\"+std::to_string(status);\n }\n return error_msg;\n }\n}\n\n/*由于EasyX库仅支持GB-2312编码,而向deepseek api发送请求需要UTF-8编码,\n所以本项目在main.cpp中采用GB-2312编码,在bgame.h中采用UTF-8编码,\n某些函数调用时要先经以下2个函数进行编码转换*/\n\n//GB2312转UTF-8编码转换函数(deepseek辅助生成)\nstd::string gb2312_to_utf8(const std::string& gb2312_str){\n if(gb2312_str.empty()) return \"\";\n int len=MultiByteToWideChar(CP_ACP,0,gb2312_str.c_str(),-1,NULL,0);\n if(len==0) return \"\";\n wchar_t* wstr=new wchar_t[len];\n MultiByteToWideChar(CP_ACP,0,gb2312_str.c_str(),-1,wstr,len);\n len=WideCharToMultiByte(CP_UTF8,0,wstr,-1,NULL,0,NULL,NULL);\n if(len==0){\n delete[] wstr;\n return \"\";\n }\n char* utf8_str=new char[len];\n WideCharToMultiByte(CP_UTF8,0,wstr,-1,utf8_str,len,NULL,NULL);\n std::string result(utf8_str);\n delete[] wstr;\n delete[] utf8_str;\n return result;\n}\n\n//UTF-8转GB2312编码转换函数(deepseek辅助生成)\nstd::string utf8_to_gb2312(const std::string& utf8_str){\n if(utf8_str.empty()) return \"\";\n int len=MultiByteToWideChar(CP_UTF8,0,utf8_str.c_str(),-1,NULL,0);\n if(len==0) return \"\";\n wchar_t* wstr=new wchar_t[len];\n MultiByteToWideChar(CP_UTF8,0,utf8_str.c_str(),-1,wstr,len);\n len=WideCharToMultiByte(CP_ACP,0,wstr,-1,NULL,0,NULL,NULL);\n if(len==0){\n delete[] wstr;\n return \"\";\n }\n char* gb2312_str=new char[len];\n WideCharToMultiByte(CP_ACP,0,wstr,-1,gb2312_str,len,NULL,NULL);\n std::string result(gb2312_str);\n delete[] wstr;\n delete[] gb2312_str;\n return result;\n}\n\n//JSON转义函数(deepseek辅助生成)\nstd::string json_escape(const std::string& str){\n std::string result;\n result.reserve(str.length()*2);\n for(size_t i=0;i<str.length();++i){\n unsigned char c=str[i];\n if(c=='\"'){\n result+=\"\\\\\\\"\";\n }else if(c=='\\\\'){\n result+=\"\\\\\\\\\";\n }else if(c=='\\n'){\n result+=\"\\\\n\";\n }else if(c=='\\r'){\n result+=\"\\\\r\";\n }else if(c=='\\t'){\n result+=\"\\\\t\";\n }else if(c<0x20){\n char buf[7];\n snprintf(buf,sizeof(buf),\"\\\\u%04x\",c);\n result+=buf;\n }else{\n result+=c;\n }\n }\n return result;\n}\n\n//deepseek api调用函数(deepseek辅助生成)\nstd::string call_ai(std::string key,std::string content){\n //1.编码转换:GB2312->UTF-8\n std::string utf8_content=gb2312_to_utf8(content);\n if(utf8_content.empty()&&!content.empty()){\n return \"E01编码转换失败\";\n }\n //2.JSON转义\n std::string escaped_content=json_escape(utf8_content);\n //3.构建JSON请求\n std::string json_data=\"{\\\"model\\\":\\\"deepseek-v4-flash\\\",\\\"messages\\\":[{\\\"role\\\":\\\"user\\\",\\\"content\\\":\\\"\"+escaped_content+\"\\\"}],\\\"stream\\\":false,\\\"max_tokens\\\":2048}\";\n //4.保存到临时文件\n std::string temp_file=\"request.json\";\n std::ofstream file(temp_file,std::ios::binary);\n if(!file){\n return \"E02无法创建临时文件\";\n }\n file.write(json_data.c_str(),json_data.length());\n file.close();\n //5.执行curl命令\n std::string command=\"curl -s -X POST https://api.deepseek.com/v1/chat/completions -H \\\"Content-Type: application/json\\\" -H \\\"Authorization: Bearer \"+key+\"\\\" --data-binary @\"+temp_file;\n std::string result;\n char buffer[4096];\n FILE* pipe=_popen(command.c_str(),\"r\");\n if(!pipe){\n remove(temp_file.c_str());\n return \"E03无法执行curl命令\";\n }\n while(fgets(buffer,sizeof(buffer),pipe)!=nullptr){\n result+=buffer;\n }\n int pipe_status=_pclose(pipe);\n remove(temp_file.c_str());\n //检查curl执行状态\n if(pipe_status!=0){\n return \"E04curl命令执行失败(状态码:\"+std::to_string(pipe_status)+\")\";\n }\n //6.处理响应\n if(result.empty()){\n return \"E05API返回空响应\";\n }\n //7.解析响应-先检查API错误\n if(result.find(\"\\\"error\\\":\")!=std::string::npos){\n size_t msg_start=result.find(\"\\\"message\\\":\\\"\");\n if(msg_start!=std::string::npos){\n msg_start+=11;\n size_t msg_end=result.find(\"\\\"\",msg_start);\n if(msg_end!=std::string::npos){\n return \"E06API错误:\"+result.substr(msg_start,msg_end-msg_start);\n }\n }\n return \"E07API返回未知错误\";\n }\n //8.检查网络错误\n if(result.find(\"curl:\")!=std::string::npos||result.find(\"Could not resolve host\")!=std::string::npos){\n return \"E08网络连接失败\";\n }\n if(result.find(\"SSL certificate problem\")!=std::string::npos){\n return \"E09SSL证书验证失败\";\n }\n if(result.find(\"401\")!=std::string::npos||result.find(\"unauthorized\")!=std::string::npos){\n return \"E10API密钥无效或已过期\";\n }\n if(result.find(\"429\")!=std::string::npos){\n return \"E11请求频率超限\";\n }\n if(result.find(\"500\")!=std::string::npos||result.find(\"502\")!=std::string::npos||result.find(\"503\")!=std::string::npos||result.find(\"504\")!=std::string::npos){\n return \"E12服务器内部错误\";\n }\n //9.提取正常响应内容\n size_t content_start=result.find(\"\\\"content\\\":\\\"\");\n if(content_start==std::string::npos){\n size_t error_start=result.find(\"\\\"message\\\":\\\"\");\n if(error_start!=std::string::npos){\n error_start+=11;\n size_t error_end=result.find(\"\\\"\",error_start);\n if(error_end!=std::string::npos){\n return \"E13API错误:\"+result.substr(error_start,error_end-error_start);\n }\n }\n return \"E14API响应格式错误\";\n }\n content_start+=11;\n size_t content_end=content_start;\n bool escaped=false;\n while(content_end<result.length()){\n if(escaped){\n escaped=false;\n }else if(result[content_end]=='\\\\'){\n escaped=true;\n }else if(result[content_end]=='\"'){\n break;\n }\n content_end++;\n }\n if(content_end>=result.length()||content_end<=content_start){\n return \"E15无法提取响应内容\";\n }\n std::string ai_content=result.substr(content_start,content_end-content_start);\n //10.解码转义字符\n std::string decoded;\n for(size_t i=0;i<ai_content.length();++i){\n if(ai_content[i]=='\\\\'&&i+1<ai_content.length()){\n switch(ai_content[i+1]){\n case 'n':decoded+='\\n';i++;break;\n case 'r':decoded+='\\r';i++;break;\n case 't':decoded+='\\t';i++;break;\n case '\\\\':decoded+='\\\\';i++;break;\n case '\"':decoded+='\"';i++;break;\n case '/':decoded+='/';i++;break;\n case 'u':\n if(i+5<ai_content.length()){\n decoded+='?';\n i+=5;\n }else{\n decoded+=ai_content[i];\n }\n break;\n default:\n decoded+=ai_content[i];\n break;\n }\n }else{\n decoded+=ai_content[i];\n }\n }\n //11.直接返回解码后的UTF-8字符串\n return decoded;\n}\n\n//完结撒花\n#endif"}}}} |