2048 C++ 游戏 - Sail-With

💖游戏简介

这是一款基于C++开发的2048游戏,集成了成就系统插件扩展游戏记录倍速调节等功能,支持Windows控制台运行。代码结构清晰,包含完整的游戏逻辑、界面渲染和扩展接口,适合学习或二次开发。

核心功能特性

1. 🌟玩法介绍

  • 基础规则:通过WASD键控制方块移动,相同数字合并得分,生成2或4。
  • 界面优化:使用控制台字符绘制动态棋盘,支持数字格式化显示
  • 倍速调节:按X键可设置移动速度倍率,支持极速模式。
  • 环境支持:windows7可正常运行

2. 🌟成就系统

成就名称 解锁条件
初出茅庐 完成第一次移动
如日中升 合成数字512
终极目标 合成数字2048
闪电战 50回合内结束游戏
幸运星 连续生成3次数字4
持久战 游戏持续300回合以上
超越极限 合成数字4096
改代码的狗 修改代码中的地图大小常量

3. 🌟插件扩展支持

  • 移动辅助插件:通过移动插件.txt实现自动托管,支持自定义移动策略。
  • 输入辅助插件:通过输入插件.txt模拟按键输入,适合自动化测试或特殊玩法。
  • 接口说明:插件通过文本文件与主程序交互,格式简单易扩展。

4. 🌟游戏记录与存档

  • 自动保存最近20局游戏记录,包含得分、棋盘状态和成就进度。
  • 记录加密存储,支持错误校验。

5. 🌟技术细节

  • 开发环境:C++,依赖Windows.h(控制台控制)、conio.h(按键读取)、fstream(文件操作)。
  • 可配置项:地图大小(ab常量,默认4x4)、成就提示时长(time_au)、随机数种子(基于系统时间)。
  • 性能优化:使用Sleep()控制动画帧率,动态计算棋盘状态避免冗余渲染。

代码结构说明

核心模块划分- 界面层:home()主菜单、out()棋盘渲染、day()更新日志  
- 逻辑层:game()游戏主循环、over()结束判断、unl()成就解锁检测  
- 工具层:de()插件状态读取、last_out()记录存档、ass_co()插件初始化  
- 扩展接口:插件通信(in_i()输入代理、ma()地图数据导出)  

快速开始

1. 🌟编译运行

  • 直接编译运行即可。
  • 首次运行会自动生成配置文件。

2. 🌟操作指南

  • 主菜单:1开始游戏,2查看记录,3操作说明
    4成就列表,5插件管理,6更新日志。
  • 游戏中:WASD移动,X调倍速,E结束游戏。

3. 🌟二次开发建议

  • 修改ab常量调整地图大小。
  • 扩展插件协议,实现更复杂的自动化策略。
  • 添加新成就或调整解锁条件。

👉注意事项

记录文件采用简单加密,直接修改可能导致数据损坏,建议通过游戏内菜单管理。

📖开发者信息

  • 作者:qihangxing
  • 版本:v2.0.0(2025.04.07)
  • 开源协议:MIT(允许自由修改和商用,但需保留原作者声明)

主体代码

点击查看代码
#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
#include<fstream>
#include<string>
/*成就: 1.初出茅庐:  完成第一次移动2.如日中升:  合成数字5123.终极目标:  合成数字20484.闪电战:    游戏在50回合内结束 5.幸运星:    连续生成3次数字4 6.持久战:    游戏持续300回合以上 7.超越极限:  合成数字40968.改代码的狗:更改代码数据 
*/
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;}elsereturn ' ';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;}	}elsewhile(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;
}

移动辅助插件 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");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.插件设置\n\n";cout<<"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;
}

输入辅助插件 v.1.0.0 代码

点击查看代码
#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
#include<fstream>
#include<string>
using namespace std;
string dx[5]={"","main","maco"};
int t=1,s=2;
char in=' ';
string _dx=dx[t];
void ass(){system("title 2048 输入辅助插件 v.1.0.0");ofstream outfile("输入插件.txt");outfile<<"1 ";outfile.close();
}
void out(){system("cls");cout<<_dx;if(in!=' '&&in!='-')cout<<" << "<<in<<"\n\n";in=getch();if(in=='-'){if(t+1>s)t=1;elset+=1;_dx=dx[t];}else{ofstream outfile("输入插件.txt");outfile<<"1 "<<_dx<<" "<<in<<" 1";outfile.close();}
} 
int main(){ass();while(1){out();} return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1174225.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大润发购物卡回收实操步骤详解 - 京顺回收

如今消费方式日益多元,不少家庭手中的大润发购物卡因居住地变更、购物习惯改变等原因,成了“沉睡资源”。据行业统计,超60%的用户都遇到过购物卡未充分利用的情况。下面就为大家系统解析大润发购物卡的回收流程,助…

长春市朝阳南关宽城二道英语雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜 - 苏木2025

在雅思培训领域,长春朝阳、南关、宽城、二道等区域的考生普遍面临诸多痛点:想找到优质的教育机构却陷入选课迷茫,渴望通过权威测评获取靠谱推荐,却难辨各类排行榜与口碑排名的真伪;备考中既需要实用的提分技巧与个…

2026年沈阳评价好的隐形车衣门店怎么选择,汽车车衣/贴太阳膜/汽车贴膜/车衣改色/贴车衣,隐形车衣实体店价格 - 品牌推荐师

随着汽车消费升级与车主养护意识的增强,隐形车衣市场在沈阳乃至全国持续升温。作为一种高性能的物理漆面保护方案,隐形车衣凭借其出色的抗剐蹭、耐腐蚀、防氧化及划痕自修复能力,已成为众多车主,尤其是中高端车型用…

【Java 开发日记】有了解过 SpringBoot 的参数配置吗?有了解过 SpringBoot 的参数配置吗?

一、什么是单调栈&#xff1f;先打破 “栈” 的常规认知提到栈&#xff0c;大家首先想到的是 “先进后出” 的线性结构&#xff0c;而单调栈&#xff0c;顾名思义&#xff0c;就是在普通栈的基础上&#xff0c;给元素加上了 “单调性” 的约束 —— 栈内的元素必须严格保持递增…

长春市绿园双阳九台公主岭英语雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜 - 苏木2025

在雅思培训的备考赛道上,长春市绿园、双阳、九台、公主岭等区域的考生常常面临诸多困境:优质教育机构筛选难度大,缺乏权威的口碑排名参考;不同基础的考生难以找到适配的个性化提分方案,新手迷茫于入门路径,高分冲…

十年沉淀,驱动效果增长:一文读懂昊客网络在百度竞价推广代运营领域的王牌服务与客户价值 - 深圳昊客网络

深圳市昊客网络科技有限公司(简称:昊客网络)。公司成立于2016年,公司现有团队成员三十余人。团队项目经理、运营、文案策划、商务团队经理均在行业内工作15年以上。要让百度竞价推广账户效果好、投产比(ROI)高,…

2025年四川ai学习渠道权威榜单:新媒体学习 /视频号学习/代运营学习 /短视频学习机构精选 - 品牌推荐官

在四川,一家传统制造业企业通过引入数字化营销培训,其新媒体矩阵在三个月内实现了总粉丝量增长超过30%,线上咨询量显著提升。 随着人工智能技术的飞速发展,企业对利用AI技术降本增效的需求日益迫切。在四川,无论是…

2025年四川ai学习渠道权威榜单:新媒体学习 /视频号学习/代运营学习 /短视频学习机构精选 - 品牌推荐官

在四川,一家传统制造业企业通过引入数字化营销培训,其新媒体矩阵在三个月内实现了总粉丝量增长超过30%,线上咨询量显著提升。 随着人工智能技术的飞速发展,企业对利用AI技术降本增效的需求日益迫切。在四川,无论是…

2025年四川ai学习渠道权威榜单:新媒体学习 /视频号学习/代运营学习 /短视频学习机构精选 - 品牌推荐官

在四川,一家传统制造业企业通过引入数字化营销培训,其新媒体矩阵在三个月内实现了总粉丝量增长超过30%,线上咨询量显著提升。 随着人工智能技术的飞速发展,企业对利用AI技术降本增效的需求日益迫切。在四川,无论是…

2026年权威护栏厂家实力推荐榜:市政/防撞/庭院/景观/桥梁护栏源头厂家精选 - 品牌推荐官

护栏作为城市与建筑不可或缺的“生命防线”,其重要性远超普通建材。从车水马龙的市政道路护栏、守护安全的桥梁防撞护栏,到点缀环境的庭院护栏,再到保障厂区秩序的厂区护栏,每一类护栏的选型都直接影响着公共安全、…

快捷方式图标显示操作修改注册表为29

明白了,这张图一锤定音了 👍 你这个不是“图标没加载”,而是——Win11 的「快捷方式小箭头叠加层」被删 / 被替换掉了所以现在看起来就像普通程序图标,但本质还是快捷方式。一、为什么会这样?(你这台机子很典型…

基于YOLOv8+pyqt5的火焰烟雾检测系统(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于YOLOv8pyqt5的火焰烟雾检测系统(设计源文件万字报告讲解)&#xff08;支持资料、图片参考_相关定制&#xff09;_文章底部可以扫码 基于YOLOv8pyqt5的火焰烟雾检测系统&#xff0c;标价即售价内含21527张火焰烟雾数据集包含smoke&#xff0c;fire&#xff0c;2类也可自行替…

基于YOLOv11的光伏能板故障缺陷检测系统(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于YOLOv11的光伏能板故障缺陷检测系统(设计源文件万字报告讲解)&#xff08;支持资料、图片参考_相关定制&#xff09;_文章底部可以扫码 &#xff0c;有完整项目代码&#xff0c;软件&#xff0c;报告说明文档以及演示ppt.在这里插入代码片

基于 Flutter × OpenHarmony 获取示例便签数据

基于 Flutter OpenHarmony 获取示例便签数据 前言 在移动端应用开发中&#xff0c;便签类应用是典型的入门项目&#xff0c;同时也是跨端开发能力的一个良好练手场景。对于初次尝试 Flutter OpenHarmony 的开发者而言&#xff0c;通过获取和展示示例便签数据&#xff0c;不…

深入解析:从训练到部署:基于PyTorch与TensorFlow Lite的端侧AI花卉分类系统完整指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

基于HTA的Meterpreter反向Shell攻击实验

基于HTA的Meterpreter反向Shell攻击实验 一、实验概述 实验目的 通过HTA&#xff08;HTML Application&#xff09;文件作为攻击载体&#xff0c;配合Metasploit Framework&#xff0c;实现对Windows 10系统的远程控制&#xff0c;获取Meterpreter会话权限。 实验环境 攻击机&a…

2026年道路/高速路/阳台/市政/工地护栏实力厂家推荐:聚焦武汉平安鑫业钢构等六家技术工艺与工程应用 - 品牌推荐官

护栏产品已从单一的安全防护设施,演变为兼具功能性与景观性的城市基础设施关键组成部分。市政护栏、波形护栏、防撞护栏等产品的需求持续增长。01 行业现状近年来,全国护栏市场规模已突破300亿元,这一数字的背后是城…

大数据建模中的模型 - 实践

大数据建模中的模型 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", …

【AI大模型技术栈】-三种方式为你解读 LangChain

1. 大白话版&#xff1a;想象一下“乐高积木平台” 你可以把开发大语言模型应用&#xff08;比如基于 ChatGPT 做一个专属客服&#xff09;想象成搭一个复杂的乐高城堡。 大模型&#xff08;GPT 等&#xff09; 就像是一块功能强大但孤零零的核心积木。它很聪明&#xff0c;但只…

新书速递,手把手教你WPF入门与开发

新书速递,手把手教你WPF入门与开发在我们从小到大的学习生涯中,老师通过言传身教的方式传递知识,或者课外业余时间自己学习知识,但这些知识大都是从书本上来的。诗圣杜甫曾说过“读书破万卷,下笔如有神”,书法大…