专栏文章
保存点7——“游戏”
休闲·娱乐参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @minddgm2
- 此快照首次捕获于
- 2025/12/02 00:34 3 个月前
- 此快照最后确认于
- 2025/12/02 00:34 3 个月前
(注:此网站可供外人查阅)
弹窗模拟器
发布这篇文章的就是模拟器制作者啦~持续更新中~
最新更新请见原作者文章~
CPP//弹窗模拟器 v3.1.2
#define maxneirong 10000000
#define maxbiaoti 10000000
#include<bits/stdc++.h>
#define banben "v3.1.2"
#include<windows.h>
#include<conio.h>
using namespace std;
int anniu1,anniu2,anniushuliang,tubiao,morenanniu,moshi,duiqi,youwangzuo;
char neirong[maxneirong],biaoti[maxbiaoti];
char x;
void MINIMIZEWindow(int x);
void home();
void game();
void copy();
void help();
void day();
int main()
{
system("title 弹窗模拟器 "banben);
printf("正在加载中,请耐心等待...");
MINIMIZEWindow(0);
MessageBox(NULL,"欢迎来到 弹窗模拟器 "banben,"程序员",4160);
MINIMIZEWindow(1);
while(1)
{
home();
if(x=='1')
game();
else if(x=='2')
copy();
else if(x=='3')
help();
else if(x=='4')
day();
}
}
void MINIMIZEWindow(int x)
{
HWND hwnd=GetConsoleWindow();
if(x==0)
ShowWindow(hwnd, SW_MINIMIZE);
if(x==1)
ShowWindow(hwnd, SW_RESTORE);
return;
}
void game()
{
system("cls");
printf("不准瞎输入!\n");
Sleep(2000);
anniu1goto:;
system("cls");
printf("\
请输入消息框的按钮样式:\n\
0.确定\n\
1.确定、取消\n\
2.中止、重试、忽略(关闭键失效)\n\
3.是、否、取消\n\
4.是、否(关闭键失效)\n\
5.重试、取消\n\
6.取消、重试、继续\n\
");
scanf("%d",&anniu1);
getchar();
system("cls");
if(!(anniu1==0||anniu1==1||anniu1==2||anniu1==3||anniu1==4||anniu1==5||anniu1==6))
{
MessageBox(NULL,"输入数据错误,请重新输入!","程序员",4112);
printf("输入数据错误,请重新输入!\n");
Sleep(2000);
system("cls");
goto anniu1goto;
}
if(anniu1==0)
anniushuliang=1;
else if(anniu1==1||anniu1==4||anniu1==5)
anniushuliang=2;
else if(anniu1==2||anniu1==3||anniu1==6)
anniushuliang=3;
anniu2goto:;
printf("\
是否添加“帮助”按钮:\n\
0.不添加\n\
16384.添加\n\
");
scanf("%d",&anniu2);
getchar();
system("cls");
if(!(anniu2==0||anniu2==16384))
{
MessageBox(NULL,"输入数据错误,请重新输入!","程序员",4112);
printf("输入数据错误,请重新输入!\n");
Sleep(2000);
system("cls");
goto anniu2goto;
}
if(anniu2==16384)
anniushuliang++;
tubiaogoto:;
system("cls");
printf("\
请输入消息框的图标样式:\n\
0.无\n\
16.红叉\n\
32.问号\n\
48.警告\n\
64.提示\n\
");
scanf("%d",&tubiao);
getchar();
system("cls");
if(!(tubiao==0||tubiao==16||tubiao==32||tubiao==48||tubiao==64))
{
MessageBox(NULL,"输入数据错误,请重新输入!","程序员",4112);
printf("输入数据错误,请重新输入!\n");
Sleep(2000);
system("cls");
goto tubiaogoto;
}
morenanniugoto:;
system("cls");
if(anniushuliang==1)
{
printf("\
请输入消息框的默认按钮:\n\
0.第一个按钮\n\
");
scanf("%d",&morenanniu);
getchar();
system("cls");
if(!(morenanniu==0))
{
MessageBox(NULL,"输入数据错误,请重新输入!","程序员",4112);
printf("输入数据错误,请重新输入!\n");
Sleep(2000);
system("cls");
goto morenanniugoto;
}
}
if(anniushuliang==2)
{
printf("\
请输入消息框的默认按钮:\n\
0.第一个按钮\n\
256.第二个按钮\n\
");
scanf("%d",&morenanniu);
getchar();
system("cls");
if(!(morenanniu==0||morenanniu==256))
{
MessageBox(NULL,"输入数据错误,请重新输入!","程序员",4112);
printf("输入数据错误,请重新输入!\n");
Sleep(2000);
system("cls");
goto morenanniugoto;
}
}
if(anniushuliang==3)
{
printf("\
请输入消息框的默认按钮:\n\
0.第一个按钮\n\
256.第二个按钮\n\
512.第三个按钮\n\
");
scanf("%d",&morenanniu);
getchar();
system("cls");
if(!(morenanniu==0||morenanniu==256||morenanniu==512))
{
MessageBox(NULL,"输入数据错误,请重新输入!","程序员",4112);
printf("输入数据错误,请重新输入!\n");
Sleep(2000);
system("cls");
goto morenanniugoto;
}
}
if(anniushuliang==4)
{
printf("\
请输入消息框的默认按钮:\n\
0.第一个按钮\n\
256.第二个按钮\n\
512.第三个按钮\n\
768.第四个按钮\n\
");
scanf("%d",&morenanniu);
getchar();
system("cls");
if(!(morenanniu==0||morenanniu==256||morenanniu==512||morenanniu==768))
{
MessageBox(NULL,"输入数据错误,请重新输入!","程序员",4112);
printf("输入数据错误,请重新输入!\n");
Sleep(2000);
system("cls");
goto morenanniugoto;
}
}
moshigoto:;
system("cls");
printf("\
请输入消息框模式:\n\
0.应用程序模式;用户在继续在当前应用程序中工作前必须响应消息框。\n\
4096.系统模式;在用户响应消息框前,所有应用程序都挂起。\n\
65536.将消息框窗口指定为前景窗口。\n\
");
scanf("%d",&moshi);
getchar();
system("cls");
if(!(moshi==0||moshi==4096||moshi==65536))
{
MessageBox(NULL,"输入数据错误,请重新输入!","程序员",4112);
printf("输入数据错误,请重新输入!\n");
Sleep(2000);
system("cls");
goto moshigoto;
}
duiqigoto:;
system("cls");
printf("\
是否文本右对齐:\n\
0.文本左对齐。\n\
524288.文本右对齐。\n\
");
scanf("%d",&duiqi);
getchar();
system("cls");
if(!(duiqi==0||duiqi==524288))
{
MessageBox(NULL,"输入数据错误,请重新输入!","程序员",4112);
printf("输入数据错误,请重新输入!\n");
Sleep(2000);
system("cls");
goto duiqigoto;
}
youwangzuogoto:;
system("cls");
printf("\
是否让窗口从右到左显示:\n\
0.窗口从左到右显示。\n\
1048576.窗口从右到左显示。\n\
");
scanf("%d",&youwangzuo);
getchar();
system("cls");
if(!(youwangzuo==0||youwangzuo==1048576))
{
MessageBox(NULL,"输入数据错误,请重新输入!","程序员",4112);
printf("输入数据错误,请重新输入!\n");
Sleep(2000);
system("cls");
goto youwangzuogoto;
}
system("cls");
printf("请输入消息框的标题((Enter)为结束):\n");
for(int i=0;i<maxbiaoti;i++)
{
scanf("%c",&x);
if(x=='\n')
{
biaoti[i]='\0';
break;
}
biaoti[i]=x;
}
system("cls");
printf("请输入消息框的内容((Enter),(Ctrl+Z),(Enter)为结束(依次按下)):\n");
for(int i=0;i<=maxneirong;i++)
{
char l=x;
if(scanf("%c",&x)==EOF)
{
neirong[i-1]='\0';
break;
}
if(i-1>=0)
neirong[i-1]=l;
}
system("cls");
MINIMIZEWindow(0);
MessageBox(NULL,neirong,biaoti,anniu1|anniu2|tubiao|morenanniu|moshi|duiqi|youwangzuo);
MINIMIZEWindow(1);
system("cls");
return;
}
void copy()
{
system("cls");
printf("欢迎进入程序模式!\n");
Sleep(2000);
system("cls");
printf("\
请输入消息框的按钮样式:\n\
0.确定\n\
1.确定、取消\n\
2.中止、重试、忽略(关闭键失效)\n\
3.是、否、取消\n\
4.是、否(关闭键失效)\n\
5.重试、取消\n\
6.取消、重试、继续\n\
");
scanf("%d",&anniu1);
getchar();
system("cls");
printf("\
是否添加“帮助”按钮:\n\
0.不添加\n\
16384.添加\n\
");
scanf("%d",&anniu2);
getchar();
system("cls");
printf("\
请输入消息框的图标样式:\n\
0.无\n\
16.红叉\n\
32.问号\n\
48.警告\n\
64.提示\n\
");
scanf("%d",&tubiao);
getchar();
system("cls");
printf("\
请输入消息框的默认按钮:\n\
0.第一个按钮\n\
256.第二个按钮\n\
512.第三个按钮\n\
768.第四个按钮\n\
");
scanf("%d",&morenanniu);
getchar();
system("cls");
printf("\
请输入消息框模式:\n\
0.应用程序模式;用户在继续在当前应用程序中工作前必须响应消息框。\n\
4096.系统模式;在用户响应消息框前,所有应用程序都挂起。\n\
65536.将消息框窗口指定为前景窗口。\n\
");
scanf("%d",&moshi);
getchar();
system("cls");
printf("\
是否文本右对齐:\n\
0.文本左对齐。\n\
524288.文本右对齐。\n\
");
scanf("%d",&duiqi);
getchar();
system("cls");
printf("\
是否让窗口从右到左显示:\n\
0.窗口从左到右显示。\n\
1048576.窗口从右到左显示。\n\
");
scanf("%d",&youwangzuo);
getchar();
system("cls");
printf("请输入消息框的标题((Enter)为结束):\n");
for(int i=0;i<maxbiaoti;i++)
{
scanf("%c",&x);
if(x=='\n')
{
biaoti[i]='\0';
break;
}
biaoti[i]=x;
}
system("cls");
printf("请输入消息框的内容((Enter),(Ctrl+Z),(Enter)为结束(依次按下)):\n");
for(int i=0;i<=maxneirong;i++)
{
char l=x;
if(scanf("%c",&x)==EOF)
{
neirong[i-1]='\0';
break;
}
if(i-1>=0)
neirong[i-1]=l;
}
system("cls");
MINIMIZEWindow(0);
if(MessageBox(NULL,neirong,biaoti,anniu1|anniu2|tubiao|morenanniu|moshi|duiqi|youwangzuo)==0)
printf("此代码无法创建弹窗!\n");
MINIMIZEWindow(1);
printf("代码:\n MessageBox(NULL,\"");
for(int i=0;i<strlen(neirong);i++)
{
if(neirong[i]=='\n')
printf("\\n");
else if(neirong[i]=='\t')
printf("\\t");
else
printf("%c",neirong[i]);
}
printf("\",\"");
for(int i=0;i<strlen(biaoti);i++)
{
if(biaoti[i]=='\n')
printf("\\n");
else if(biaoti[i]=='\t')
printf("\\t");
else
printf("%c",biaoti[i]);
}
printf("\
\",%d);\n\
\n\
\n\
",anniu1|anniu2|tubiao|morenanniu|moshi|duiqi|youwangzuo);
printf("\
本次弹窗有以下几种返回值:\n\
\n\
");
if(anniu1==0||anniu1==1)
printf("“确定”键——返回值为1\n\n");
if(anniu1==1||anniu1==3||anniu1==5||anniu1==6)
printf("“取消”键——返回值为2\n\n");
if(anniu1==2)
printf("“终止”键——返回值为3\n\n");
if(anniu1==2||anniu1==5||anniu1==6)
printf("“重试”键——返回值为4\n\n");
if(anniu1==2)
printf("“忽略”键——返回值为5\n\n");
if(anniu1==3||anniu1==4)
printf("“是”键——返回值为6\n\n");
if(anniu1==3||anniu1==4)
printf("“否”键——返回值为7\n\n");
printf("“×”键——返回值为8\n\n\n");
printf("\
按任意键返回主界面\n\
\n\
\n\
");
getch();
system("cls");
return;
}
void help()
{
system("cls");
printf("\
标题可以带字母、数字、空格(' ')和特殊符号(不包括(Ctrl+Z)和(Enter))\n\
内容可以带字母、数字、空格(' ')和特殊符号(不包括(Ctrl+Z))\n\
\n\
特别强调!!!\n\
如果程序出错请按(Ctrl+C)或(Alt+F4)强制终止程序!!!\n\
如果电脑出事,后果自负!!!\n\
\n\
\n\
按任意键返回主界面\n\
\n\
\n\
");
getch();
system("cls");
return;
}
void day()
{
system("cls");
printf("\
sun_and_moon制作\n\
\n\
\n\
2025.03.04 v.1.0.0 完成基本的创建指定消息框\n\
\n\
2025.03.31 v.2.0.0 完成一次大更新\n\
\n\
2025.04.02 v.2.1.0 新增程序员模式\n\
\n\
2025.04.06 v.2.2.0 更新代码,修复已知BUG\n\
\n\
2025.04.07 v.3.0.0 新增消息框样式选项,重构代码\n\
\n\
2025.04.11 v.3.1.0 完成一次小更新,修复已知BUG\n\
\n\
2025.04.12 v.3.1.1 修复已知BUG\n\
\n\
2025.11.05 v.3.1.2 新增弹窗返回值提示\n\
\n\
\n\
按任意键返回主界面\n\
\n\
\n\
");
getch();
system("cls");
return;
}
void home()
{
system("cls");
printf("\
欢迎来到 弹窗模拟器 "banben"\n\
\n\
\n\
1.开始模拟 2.程序模式\n\
3.操作须知 4.更新日志\n\
\n\
");
x=getch();
system("cls");
return;
}
2048
最新更新请见原作者文章~
CPP//2048 v.2.0.0
#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
#include<fstream>
#include<string>
/*
成就:
1.初出茅庐: 完成第一次移动
2.如日中升: 合成数字512
3.终极目标: 合成数字2048
4.闪电战: 游戏在50回合内结束
5.幸运星: 连续生成3次数字4
6.持久战: 游戏持续300回合以上
7.超越极限: 合成数字4096
8.改代码的狗:更改代码数据
*/
using namespace std;
const int ab=4,m=8;
double s,s_;
bool flag_ach[m+1],ove,ma_flag=0,in_flag=0,game_f=1;
char in;
long long mp[ab+1][ab+1],last[ab+1][ab+1][25];
int last_f[25],f,num4=0,H,time_start,flag_au=0,time_au=3;
char in_i(){
if(in_flag==1){
bool flag_in;
string str;
char in_i;
ifstream inFile("输入插件.txt");
inFile>>in_flag>>str>>in_i>>flag_in;
if(str=="main"&&flag_in){
ofstream outfile("输入插件.txt");
outfile<<in_flag<<" "<<"main "<<in_i<<" 0";
outfile.close();
return in_i;
}
else
return ' ';
inFile.close();
}
else{
return getch();
}
}
void home(){
cout<<"欢迎来到2048 v.2.0.0\n\n\n";
cout<<"1.开始游戏 2.检索记录 3.使用需知\n\n";
cout<<"4.成就列表 5.插件管理 6.更新日志\n\n";
do in=in_i(); while(in==' ');
}
void de_1(){
ifstream inFile("移动插件.txt");
if(inFile.good()){
inFile>>ma_flag;
}
inFile.close();
}
void de_2(){
ifstream inFile("输入插件.txt");
if(inFile.good()){
inFile>>in_flag;
}
inFile.close();
}
void de(){
de_1();
de_2();
}
void ass(){
ifstream inFile("记录.txt");
if(!inFile.good()){
ofstream outfile("记录.txt");
outfile<<"0\n";
for(int i=1;i<=m;i++){
outfile<<"0 ";
}
outfile.close();
}
inFile.close();
for(int i=1;i<=ab;i++){
for(int j=1;j<=ab;j++){
mp[i][j]=0;
}
}
system("title 2048 v.2.0.0");
srand(time(0));
}
void ass_co1(){
ifstream inFile("移动插件.txt");
if(inFile.good()){
ofstream outfile("移动插件.txt");
outfile<<"0\n";
outfile.close();
}
inFile.close();
}
void ass_co2(){
ifstream inFile("输入插件.txt");
if(inFile.good()){
ofstream outfile("输入插件.txt");
outfile<<"0\n";
outfile.close();
}
inFile.close();
}
void ass_co(){
ass_co1();
ass_co2();
}
void ma(){
if(ma_flag){
ofstream outfile("地图.txt");
outfile<<ove<<"\n";
for(int i=1;i<=ab;i++){
for(int j=1;j<=ab;j++){
outfile<<mp[i][j]<<" ";
}
outfile<<"\n";
}
outfile.close();
}
}
void out(){
system("cls");
cout<<f<<"\t*"<<s_<<"\t第"<<H<<"回合\n\n";
if(time(0)<time_start+time_au){
if(flag_au==1) cout<<"解锁成就:初出茅庐";
if(flag_au==2) cout<<"解锁成就:如日中升";
if(flag_au==3) cout<<"解锁成就:终极目标";
if(flag_au==5) cout<<"解锁成就:幸运星";
if(flag_au==6) cout<<"解锁成就:持久战";
if(flag_au==7) cout<<"解锁成就:超越极限";
if(flag_au==8) cout<<"解锁成就:改代码的狗";
}
else{
time_start=0;
}
cout<<"\n\n";
for(int i=1;i<=8*(ab+1)+3;i++){
cout<<"_";
}
for(int i=1;i<=ab;i++){
cout<<"\n│\t";
for(int j=1;j<=ab;j++){
if(mp[i][j]==0){
cout<<" ";
}
else if(mp[i][j]<10000){
cout<<mp[i][j];
}
else if(mp[i][j]<1000000){
cout<<mp[i][j]/1000<<"K";
}
else{
cout<<mp[i][j]/1000000<<"B";
}
cout<<"\t ";
}
cout<<"│\n";
}
for(int i=1;i<=8*(ab+1)+3;i++){
cout<<"_";
}
cout<<"\n";
}
bool over(){
bool flag=0;
for(int i=1;i<=ab;i++){
for(int j=1;j<=ab;j++){
if(mp[i][j]==0){
flag=1;
break;
}
else if(i>1&&mp[i-1][j]==mp[i][j]){
flag=1;
break;
}
else if(j>1&&mp[i][j-1]==mp[i][j]){
flag=1;
break;
}
else if(i<ab&&mp[i+1][j]==mp[i][j]){
flag=1;
break;
}
else if(j<ab&&mp[i][j+1]==mp[i][j]){
flag=1;
break;
}
}
}
return flag;
}
void last_in(){
system("cls");
int n;
ifstream inFile("记录.txt");
if(!inFile.good()){
ofstream outfile("记录.txt");
outfile<<"0\n";
for(int i=1;i<=m;i++){
outfile<<"0 ";
}
outfile.close();
}
inFile>>n;
for(int i=1;i<=n;i++){
inFile>>last_f[i];
if(last_f[i]%3||(last_f[i]/3-2)%2){
cout<<"记录读取错误\n\n";
return ;
}
last_f[i]=(last_f[i]/3-2)/2;
for(int a=1;a<=ab;a++){
for(int b=1;b<=ab;b++){
inFile>>last[a][b][i];
if(last[a][b][i]%3||(last[a][b][i]/3-2)%2){
cout<<"记录读取错误\n\n";
return ;
}
last[a][b][i]=(last[a][b][i]/3-2)/2;
}
}
}
for(int i=1;i<=m;i++){
inFile>>flag_ach[i];
}
inFile.close();
}
void last_in_out(){
int n;
ifstream inFile("记录.txt");
inFile>>n;
inFile.close();
if(n==0){
cout<<"当前暂无记录,快开始游戏吧\n\n";
}
else{
cout<<"检索到"<<n<<"个记录\n\n\n";
}
for(int i=1;i<=n;i++){
if(i!=1){
cout<<"\n\n\n";
}
cout<<i<<".";
cout<<"共计"<<last_f[i]<<"分\n\n地图如下\n";
for(int a=1;a<=ab;a++){
for(int b=1;b<=ab;b++){
if(last[a][b][i]<10000){
cout<<last[a][b][i];
}
else if(last[a][b][i]<1000000){
cout<<last[a][b][i]/1000<<"K";
}
else{
cout<<last[a][b][i]/1000000<<"B";
}
cout<<"\t";
}
cout<<"\n";
}
}
cout<<"\n\n按任意键返回主界面\n\n";
while(in_i()==' ') continue;
}
void last_out(bool fla){
int n;
ifstream inFile("记录.txt");
if(!inFile.good()){
ofstream outfile("记录.txt");
outfile<<"0\n";
for(int i=1;i<=m;i++){
outfile<<"0 ";
}
outfile.close();
}
inFile>>n;
for(int i=1;i<=n;i++){
inFile>>last_f[i];
if(last_f[i]%3||(last_f[i]/3-2)%2){
cout<<"记录读取错误\n\n";
return ;
}
last_f[i]=(last_f[i]/3-2)/2;
for(int a=1;a<=ab;a++){
for(int b=1;b<=ab;b++){
inFile>>last[a][b][i];
if(last[a][b][i]%3||(last[a][b][i]/3-2)%2){
cout<<"记录读取错误\n\n";
return ;
}
last[a][b][i]=(last[a][b][i]/3-2)/2; //x=(x*2+2)*3
}
}
}
ofstream outFile("记录.txt");
if(fla){
outFile<<min(20,n+1)<<"\n\n";
outFile<<(f*2+2)*3<<"\n";
for(int a=1;a<=ab;a++){
for(int b=1;b<=ab;b++){
outFile<<(mp[a][b]*2+2)*3<<" ";
}
outFile<<"\n";
}
outFile<<"\n";
}
else{
outFile<<n<<"\n\n";
}
for(int i=1;i<=n&&i<=20;i++){
outFile<<(last_f[i]*2+2)*3<<"\n";
for(int a=1;a<=ab;a++){
for(int b=1;b<=ab;b++){
outFile<<(last[a][b][i]*2+2)*3<<" ";
}
outFile<<"\n";
}
outFile<<"\n";
}
outFile<<"\n";
for(int i=1;i<=m;i++){
outFile<<flag_ach[i]<<" ";
}
outFile<<"\n";
outFile.close();
}
void ach(){
start:
last_in();
bool flag=0;
system("cls");
cout<<"成就\n\n\n";
for(int i=1;i<=m;i++){
if(flag_ach[i]==1){
if(i==1) cout<<"1.初出茅庐: 完成第一次移动\n\n";
if(i==2) cout<<"2.如日中升: 合成数字512\n\n";
if(i==3) cout<<"3.终极目标: 合成数字2048\n\n";
if(i==4) cout<<"4.闪电战: 游戏在50回合内结束\n\n";
if(i==5) cout<<"5.幸运星: 连续生成3次数字4\n\n";
if(i==6) cout<<"6.持久战: 游戏持续300回合以上\n\n";
if(i==7) cout<<"7.超越极限: 合成数字4096\n\n";
if(i==8) cout<<"8.改代码的狗:更改代码数据\n\n";
flag=1;
}
}
if(flag==0){
cout<<"暂未解锁成就,快去游戏吧\n\n";
}
cout<<"\n解锁成就提示 ";
if(time_au>0) cout<<"yes";
else cout<<"no ";
cout<<" (按x更改)\n";
cout<<"\n\n按其他键返回主界面\n\n";
last_out(0);
if(in_flag==1){
char x;
do x=in_i(); while(x==' ');
if(x=='x'){
if(time_au>0) time_au=-1;
else time_au=3;
goto start;
}
}
else
while(in_i()==' ') continue;
}
void unl(){
bool fl=0;
for(int i=1;i<=ab;i++){
for(int j=1;j<=ab;j++){
if(mp[i][j]>=512&&flag_ach[2]==0){
flag_ach[2]=1;
flag_au=2;
fl=1;
}
if(mp[i][j]>=2048&&flag_ach[3]==0){
flag_ach[3]=1;
flag_au=3;
fl=1;
}
if(mp[i][j]>=4096&&flag_ach[7]==0){
flag_ach[7]=1;
flag_au=7;
fl=1;
}
}
}
if(num4>=3&&flag_ach[5]==0){
flag_ach[5]=1;
flag_au=5;
fl=1;
}
if(H<=50&&ove==0&&flag_ach[4]==0){
flag_ach[4]=1;
}
if(H>=300&&ove==1&&flag_ach[6]==0){
flag_ach[6]=1;
flag_au=6;
fl=1;
}
if(ab!=4&&flag_ach[8]==0){
flag_ach[8]=1;
flag_au=8;
fl=1;
}
if(fl==1){
time_start=time(0);
}
}
void day(){
system("cls");
cout<<"qihangxing制作\n\n\n";
cout<<"2025.3.08 v.1.0.0 完成基本的移动和合成\n\n";
cout<<"2025.3.10 v.1.1.0 美化界面,并优化效率\n\n";
cout<<"2025.3.11 v.1.2.0 添加倍速,主界面及日志\n\n";
cout<<"2025.3.11 v.1.2.5 添加结束,修复已知BUG\n\n";
cout<<"2025.3.12 v.1.4.0 添加记录,修复已知BUG\n\n";
cout<<"2025.3.13 v.1.4.5 添加操作需知\n\n";
cout<<"2025.3.13 v.1.5.0 优化记录功能\n\n";
cout<<"2025.3.16 v.1.5.5 更改部分名称,修复已知BUG\n\n";
cout<<"2025.3.16 v.1.6.0 添加成就功能\n\n";
cout<<"2025.3.17 v.1.6.5 添加成就提示,优化游戏机制\n\n";
cout<<"2025.3.20 v.1.7.0 适配 [2048 移动辅助插件] \n\n";
cout<<"2025.3.20 v.1.7.5 替换 [建议收集] 为 [插件管理] \n\n";
cout<<"2025.3.21 v.1.8.0 修复已知BUG\n\n";
cout<<"2025.3.29 v.1.8.5 适配 [2048 输入辅助插件] \n\n";
cout<<"2025.3.30 v.1.9.0 美化界面,优化游戏机制\n\n";
cout<<"2025.3.31 v.1.9.5 添加3个成就和成就存档功能\n\n";
cout<<"2025.4.07 v.2.0.0 修复已知BUG,调整操作需知\n\n";
cout<<"\n\n按任意键返回主界面\n\n";
while(in_i()==' ') continue;
}
void help(){
system("cls");
cout<<"操作需知:\n\n";
cout<<"1.按 w,a,s,d 移动\n\n";
cout<<"2.按 x 调整倍速\n\n";
cout<<"3.按 e 结束游戏\n\n";
cout<<"\n功能注意:\n\n";
cout<<"1.存档的地图大小不同会导致读取错误哦!\n\n";
cout<<"2.移动插件按 [ e ] 退出才会退出托管\n\n";
cout<<"\n\n按任意键返回主界面\n\n";
while(in_i()==' ') continue;
}
void game(){
H=0;ove=1;f=0;s=1;s_=1;num4=0;
unl();
while(1){
ma();
de();
char x;
int i=1;
if(x!='e'&&x!='x'){
while(i<=ab*ab){
int a=rand()%ab+1,b=rand()%ab+1;
if(mp[a][b]==0){
mp[a][b]=4-2*bool(rand()%4);
if(mp[a][b]==4) num4+=1;
else num4=0;
break;
}
else i++;
}
}
out();
Sleep(750);
a:
if(ma_flag){
ifstream inFile("移动插件.txt");
inFile>>ma_flag>>game_f;
if(game_f==0){
s=0; s_=0;
inFile>>x;
}
inFile.close();
}
else if(in_flag){
do x=in_i(); while(x==' ');
}
else{
x=in_i();
}
if(x=='w'){
if(flag_ach[1]==0){
flag_ach[1]=1;
flag_au=1;
time_start=time(0);
}
for(int i=1;i<=ab;i++){
for(int j=1;j<=ab;j++){
int X=i;
while(mp[X][j]!=0&&X>1&&(mp[X-1][j]==0||mp[X-1][j]==mp[X][j])){
if(mp[X-1][j]==0){
mp[X-1][j]=mp[X][j];
mp[X][j]=0;
}
else{
f+=mp[X][j]*2;
mp[X-1][j]=mp[X][j]*2;
mp[X][j]=0;
}
X--;
out();
Sleep(int(100*s));
}
}
}
H++;
}
else if(x=='a'){
if(flag_ach[1]==0){
flag_ach[1]=1;
flag_au=1;
time_start=time(0);
}
for(int j=1;j<=ab;j++){
for(int i=1;i<=ab;i++){
int Y=j;
while(mp[i][Y]!=0&&Y>1&&(mp[i][Y-1]==0||mp[i][Y-1]==mp[i][Y])){
if(mp[i][Y-1]==0){
mp[i][Y-1]=mp[i][Y];
mp[i][Y]=0;
}
else{
f+=mp[i][Y]*2;
mp[i][Y-1]=mp[i][Y]*2;
mp[i][Y]=0;
}
Y--;
out();
Sleep(int(100*s));
}
}
}
H++;
}
else if(x=='s'){
if(flag_ach[1]==0){
flag_ach[1]=1;
flag_au=1;
time_start=time(0);
}
for(int i=ab;i>=1;i--){
for(int j=1;j<=ab;j++){
int X=i;
while(mp[X][j]!=0&&X<ab&&(mp[X+1][j]==0||mp[X+1][j]==mp[X][j])){
if(mp[X+1][j]==0){
mp[X+1][j]=mp[X][j];
mp[X][j]=0;
}
else{
f+=mp[X][j]*2;
mp[X+1][j]=mp[X][j]*2;
mp[X][j]=0;
}
X++;
out();
Sleep(int(100*s));
}
}
}
H++;
}
else if(x=='d'){
if(flag_ach[1]==0){
flag_ach[1]=1;
flag_au=1;
time_start=time(0);
}
for(int j=ab;j>=1;j--){
for(int i=1;i<=ab;i++){
int Y=j;
while(mp[i][Y]!=0&&Y<ab&&(mp[i][Y+1]==0||mp[i][Y+1]==mp[i][Y])){
if(mp[i][Y+1]==0){
mp[i][Y+1]=mp[i][Y];
mp[i][Y]=0;
}
else{
f+=mp[i][Y]*2;
mp[i][Y+1]=mp[i][Y]*2;
mp[i][Y]=0;
}
Y++;
out();
Sleep(int(100*s));
}
}
}
H++;
}
else if(x=='x'){
cout<<"\n倍速调节\n\n";
cin>>s_;
if(s_==0){
s=0;
}
else{
s=1/s_;
}
}
else if(x=='e'){
cout<<"确定退出本局游戏 (y/n)\n\n";
char y;
cin>>y;
if(y=='y'){
out();
break;
}
}
else{
cout<<"重新输入";
Sleep(500);
out();
goto a;
}
if(over()==0){
ove=0;
out();
unl();
break;
}
unl();
}
unl();
ma();
last_out(1);
cout<<"本局游戏共"<<f<<"分\n\n";
cout<<"\n\n按任意键返回主界面\n\n";
while(in_i()==' ') continue;
}
void co(){
de();
bool flag_co=0;
system("cls");
if(ma_flag==1){
if(flag_co==0){
cout<<"已连接插件:\n\n";
flag_co=1;
}
cout<<"2048 移动辅助插件\n\n";
}
if(in_flag==1){
if(flag_co==0){
cout<<"已连接插件:\n\n";
flag_co=1;
}
cout<<"2048 输入辅助插件\n\n";
}
if(flag_co==0){
cout<<"暂未连接到插件\n\n";
}
cout<<"\n\n按任意键返回主界面\n\n";
while(in_i()==' ') continue;
}
int main(){
ass_co();
while(1){
system("cls");
de();
ass();
home();
if(in=='1'){
game();
}
else if(in=='2'){
last_in();
last_in_out();
}
else if(in=='3'){
help();
}
else if(in=='4'){
ach();
}
else if(in=='5'){
co();
}
else if(in=='6'){
day();
}
}
return 0;
}
附程序1:2048移动辅助插件
CPP//2048移动辅助插件 v.1.3.0
#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
#include<fstream>
using namespace std;
const int ab=4,qz=1;
long long mp[ab+1][ab+1];
bool mp_f[ab+1][ab+1],game=0;
char game_f='0';
void ass(){
system("title 2048 移动辅助插件 v.1.3.0");
ofstream outfile("地图.txt");
outfile<<"1\n";
for(int i=1;i<=ab;i++){
for(int j=1;j<=ab;j++){
outfile<<"0 ";
}
outfile<<"\n";
}
outfile.close();
}
void ass_pl(){
ofstream outfile("移动插件.txt");
outfile<<"1 1\n";
outfile.close();
}
void mp_in(){
ifstream inFile("地图.txt");
inFile>>game;
for(int i=1;i<=ab;i++){
for(int j=1;j<=ab;j++){
inFile>>mp[i][j];
mp_f[i][j];
}
}
inFile.close();
}
void mp_out(){
int fw=0,fa=0,fs=0,fd=0,fw_=0,fa_=0,fs_=0,fd_=0;
mp_in();
for(int i=1;i<=ab;i++){
for(int j=1;j<=ab;j++){
if(i>1&&mp[i-1][j]==mp[i][j]){
fw_-=mp[i][j]*qz;
}
else if(j>1&&mp[i][j-1]==mp[i][j]){
fw_-=mp[i][j]*qz;
}
else if(i<ab&&mp[i+1][j]==mp[i][j]){
fw_-=mp[i][j]*qz;
}
else if(j<ab&&mp[i][j+1]==mp[i][j]){
fw_-=mp[i][j]*qz;
}
}
}
for(int i=1;i<=ab;i++){
for(int j=1;j<=ab;j++){
int X=i;
while(mp[X][j]!=0&&X>1&&(mp[X-1][j]==0||mp[X-1][j]==mp[X][j])){
if(mp[X-1][j]==0){
mp[X-1][j]=mp[X][j];
mp[X][j]=0;
}
else{
fw+=mp[X][j]*2;
fw_+=mp[X][j]*2;
mp[X-1][j]=mp[X][j]*2;
mp[X][j]=0;
}
X--;
mp_f[X][j]=1;
mp_f[X+1][j]=1;
}
}
}
for(int i=1;i<=ab;i++){
for(int j=1;j<=ab;j++){
if(mp_f[i][j]){
if(i>1&&mp[i-1][j]==mp[i][j]){
fw_+=mp[i][j]*qz;
}
else if(j>1&&mp[i][j-1]==mp[i][j]){
fw_+=mp[i][j]*qz;
}
else if(i<ab&&mp[i+1][j]==mp[i][j]){
fw_+=mp[i][j]*qz;
}
else if(j<ab&&mp[i][j+1]==mp[i][j]){
fw_+=mp[i][j]*qz;
}
}
}
}
mp_in();
for(int i=1;i<=ab;i++){
for(int j=1;j<=ab;j++){
if(i>1&&mp[i-1][j]==mp[i][j]){
fa_-=mp[i][j]*qz;
}
else if(j>1&&mp[i][j-1]==mp[i][j]){
fa_-=mp[i][j]*qz;
}
else if(i<ab&&mp[i+1][j]==mp[i][j]){
fa_-=mp[i][j]*qz;
}
else if(j<ab&&mp[i][j+1]==mp[i][j]){
fa_-=mp[i][j]*qz;
}
}
}
for(int j=1;j<=ab;j++){
for(int i=1;i<=ab;i++){
int Y=j;
while(mp[i][Y]!=0&&Y>1&&(mp[i][Y-1]==0||mp[i][Y-1]==mp[i][Y])){
if(mp[i][Y-1]==0){
mp[i][Y-1]=mp[i][Y];
mp[i][Y]=0;
}
else{
fa+=mp[i][Y]*2;
fa_+=mp[i][Y]*2;
mp[i][Y-1]=mp[i][Y]*2;
mp[i][Y]=0;
}
Y--;
mp_f[i][Y]=1;
mp_f[i][Y+1]=0;
}
}
}
for(int i=1;i<=ab;i++){
for(int j=1;j<=ab;j++){
if(mp_f[i][j]){
if(i>1&&mp[i-1][j]==mp[i][j]){
fa_+=mp[i][j]*qz;
}
else if(j>1&&mp[i][j-1]==mp[i][j]){
fa_+=mp[i][j]*qz;
}
else if(i<ab&&mp[i+1][j]==mp[i][j]){
fa_+=mp[i][j]*qz;
}
else if(j<ab&&mp[i][j+1]==mp[i][j]){
fa_+=mp[i][j]*qz;
}
}
}
}
mp_in();
for(int i=1;i<=ab;i++){
for(int j=1;j<=ab;j++){
if(i>1&&mp[i-1][j]==mp[i][j]){
fs_-=mp[i][j]*qz;
}
else if(j>1&&mp[i][j-1]==mp[i][j]){
fs_-=mp[i][j]*qz;
}
else if(i<ab&&mp[i+1][j]==mp[i][j]){
fs_-=mp[i][j]*qz;
}
else if(j<ab&&mp[i][j+1]==mp[i][j]){
fs_-=mp[i][j]*qz;
}
}
}
for(int i=ab;i>=1;i--){
for(int j=1;j<=ab;j++){
int X=i;
while(mp[X][j]!=0&&X<ab&&(mp[X+1][j]==0||mp[X+1][j]==mp[X][j])){
if(mp[X+1][j]==0){
mp[X+1][j]=mp[X][j];
mp[X][j]=0;
}
else{
fs+=mp[X][j]*2;
fs_+=mp[X][j]*2;
mp[X+1][j]=mp[X][j]*2;
mp[X][j]=0;
}
X++;
mp_f[X][j]=1;
mp_f[X-1][j]=1;
}
}
}
for(int i=1;i<=ab;i++){
for(int j=1;j<=ab;j++){
if(mp_f[i][j]){
if(i>1&&mp[i-1][j]==mp[i][j]){
fs_+=mp[i][j]*qz;
}
else if(j>1&&mp[i][j-1]==mp[i][j]){
fs_+=mp[i][j]*qz;
}
else if(i<ab&&mp[i+1][j]==mp[i][j]){
fs_+=mp[i][j]*qz;
}
else if(j<ab&&mp[i][j+1]==mp[i][j]){
fs_+=mp[i][j]*qz;
}
}
}
}
mp_in();
for(int i=1;i<=ab;i++){
for(int j=1;j<=ab;j++){
if(i>1&&mp[i-1][j]==mp[i][j]){
fd_-=mp[i][j]*qz;
}
else if(j>1&&mp[i][j-1]==mp[i][j]){
fd_-=mp[i][j]*qz;
}
else if(i<ab&&mp[i+1][j]==mp[i][j]){
fd_-=mp[i][j]*qz;
}
else if(j<ab&&mp[i][j+1]==mp[i][j]){
fd_-=mp[i][j]*qz;
}
}
}
for(int j=ab;j>=1;j--){
for(int i=1;i<=ab;i++){
int Y=j;
while(mp[i][Y]!=0&&Y<ab&&(mp[i][Y+1]==0||mp[i][Y+1]==mp[i][Y])){
if(mp[i][Y+1]==0){
mp[i][Y+1]=mp[i][Y];
mp[i][Y]=0;
}
else{
fd+=mp[i][Y]*2;
fd_+=mp[i][Y]*2;
mp[i][Y+1]=mp[i][Y]*2;
mp[i][Y]=0;
}
Y++;
mp_f[i][Y]=1;
mp_f[i][Y-1]=0;
}
}
}
for(int i=1;i<=ab;i++){
for(int j=1;j<=ab;j++){
if(mp_f[i][j]){
if(i>1&&mp[i-1][j]==mp[i][j]){
fd_+=mp[i][j]*qz;
}
else if(j>1&&mp[i][j-1]==mp[i][j]){
fd_+=mp[i][j]*qz;
}
else if(i<ab&&mp[i+1][j]==mp[i][j]){
fd_+=mp[i][j]*qz;
}
else if(j<ab&&mp[i][j+1]==mp[i][j]){
fd_+=mp[i][j]*qz;
}
}
}
}
int ma=max(max(fw+fw_,fa+fa_),max(fs+fs_,fd+fd_));
cout<<"建议: ";
ofstream outfile("移动插件.txt");
outfile<<"1 ";
if(game_f!='0') outfile<<"1 ";
else outfile<<"0 ";
if(ma==fw+fw_){
cout<<"w ";
outfile<<"w ";
}
if(ma==fa+fa_){
cout<<"a ";
outfile<<"a ";
}
if(ma==fs+fs_){
cout<<"s ";
outfile<<"s ";
}
if(ma==fd+fd_){
cout<<"d ";
outfile<<"d ";
}
cout<<"\n详细:\n\n";
cout<<"w 当下: "<<fw<<" \t发展:"<<fw_<<" \t综合:"<<fw+fw_<<"\n";
cout<<"a 当下: "<<fa<<" \t发展:"<<fa_<<" \t综合:"<<fa+fa_<<"\n";
cout<<"s 当下: "<<fs<<" \t发展:"<<fs_<<" \t综合:"<<fs+fs_<<"\n";
cout<<"d 当下: "<<fd<<" \t发展:"<<fd_<<" \t综合:"<<fd+fd_<<"\n";
}
void day(){
system("cls");
cout<<"qihangxing制作\n\n\n";
cout<<"2025.3.18 v.1.0.0 完成基本的算法推荐\n\n";
cout<<"2025.3.19 v.1.1.0 美化界面并优化算法\n\n";
cout<<"2025.3.20 v.1.2.0 添加设置\n\n";
cout<<"2025.3.21 v.1.3.0 修复已知BUG\n\n";
cout<<"按任意键返回主界面\n\n";
getch();
}
void co(){
system("cls");
ifstream inFile("移动插件.txt");
if(!inFile.good()){
ofstream outfile("移动插件.txt");
outfile<<"1 ";
outfile.close();
}
cout<<"已发送请求\n\n按任意键返回主界面\n\n";
getch();
}
void pl(){
system("cls");
while(game){
mp_out();
Sleep(100);
system("cls");
}
}
void sz(){
start:
system("cls");
cout<<"设置\n\n托管模式: ";
if(game==1) cout<<"yes";
else cout<<"no ";
cout<<" (按x更改)\n\n按其他键返回主界面\n\n";
char x=getch();
if(x=='x'){
if(game==1) game=0;
else game=1;
goto start;
}
}
void exi(){
ofstream outfile("移动插件.txt");
outfile<<"0 ";
outfile.close();
}
int main(){
while(1){
system("cls");
ass();
cout<<"欢迎使用2048 移动辅助插件 v.1.3.0\n\n";
cout<<"1.连接主程 2.插件设置 3.启动插件 4.更新日志\n\n";
char in=getch();
if(in=='1'){
co();
}
else if(in=='2'){
sz();
}
else if(in=='3'){
pl();
}
else if(in=='4'){
day();
}
else if(in=='e'){
exi();
break;
}
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...