• 个人简介

    #include<windows.h> #include<bits/stdc++.h> #include<conio.h> using namespace std; #define H GetStdHandle(STD_OUTPUT_HANDLE) #define S(c) SetConsoleTextAttribute(H,c) #define K(n) GetAsyncKeyState(n)&32768 void P(int x,int y){SetConsoleCursorPosition(H,{(short)x,(short)y});} struct B{int x,y,w,h;string t;};vector vB;B cB={45,15,12,3,"Create Save"};string cf="";int cl=1; void dB(B b,int c){S(c);P(b.x,b.y);cout<<"┏";for(int i=0;i<b.w-2;i++)cout<<"━";cout<<"┓";P(b.x,b.y+1);cout<<"┃ "<<b.t<<" ┃";P(b.x,b.y+2);cout<<"┗";for(int i=0;i<b.w-2;i++)cout<<"━";cout<<"┛";} void menu(){for(int i=0;i<6;i++)vB.push_back({2+i11,2,10,3,"Save "+to_string(i+1)});system("cls");S(12);P(20,10);cout<<"?? --- [1-6] 选存档 | [C] 新建 | 龙年行大运 --- ??";for(auto &b:vB)dB(b,14);dB(cB,14);while(1){char k=getch();if(k>='1'&&k<='6'){cf="save"+string(1,k)+".dat";ifstream f(cf);if(f>>cl){system("cls");S(14);cout<<"[加载成功] 存档 "<<k;Sleep(500);return;}else{P(25,12);S(14);cout<<"存档空, 请按 [C]!";}}if(k=='c'||k=='C'){P(25,12);S(14);cout<<"输入ID(1-6):";int n;cin>>n;if(n>0&&n<7){cf="save_"+to_string(n)+".dat";cl=1;ofstream f(cf);f<<1;system("cls");S(12);cout<<"[开运] 创建完毕!";Sleep(500);return;}}}} struct M{float x;int b,r,d;}; void game(){int mW=200,h[200],bgP[200];float px=10,py=10,vY=0,sp=1.8f,scX=0; vector os;vector ms;auto gn=&{os.clear();ms.clear();for(int x=0;x<mW;x++){h[x]=(x<10||x>mW-10)?12:(rand()%10<1?25:9+rand()%3);bgP[x]=rand()%20; if(x>15&&x<mW-15&&h[x]<15){if(rand()%15<1)os.push_back(x);else if(rand()%25<1)ms.push_back({(float)x,x,5+rand()%5,1});}}};auto sv=&{ofstream f(cf);f<<cl;};gn();CONSOLE_CURSOR_INFO ci={1,0};SetConsoleCursorInfo(H,&ci);system("cls"); while(cl<=100){P(0,0); // 控制逻辑:强化位移感 if(K(38))sp+=0.15f;if(K(40))sp=max(0.3f,sp-0.15f); if(K(32)&&py>=h[(int)px])vY=-2.6f; // 极强的瞬间向上平移力 if(K('D')&&px<mW-5)px+=sp;if(K('A')&&px>2)px-=sp; if(K('L')){cl++;px=10;gn();sv();system("cls");Sleep(200);continue;} py+=vY;vY+=0.7f; // 强化重力加速,形成干净利落的上下移动 if(py>h[(int)px]&&h[(int)px]<15){py=(float)h[(int)px];vY=0;} for(auto &m:ms){m.x+=0.5fm.d;if(abs(m.x-m.b)>m.r)m.d*=-1;if((int)px==(int)m.x&&abs(py-h[(int)px])<1)px=10;} for(int o:os)if((int)px==o&&abs(py-h[(int)px])<1)px=10; if(py>18)px=10,py=10,vY=0; // --- 核心:摄像机强制锁定平移 --- float targetX = px - 20; scX += (targetX - scX) * 0.4f; // 快速插值,让屏幕紧跟人物平移 if(scX < 0) scX = 0; if(scX > mW-61) scX = mW-61; int curX = (int)scX; int bgX = (int)(scX * 0.4f); // 远景视差平移 // ----------------------------- S(14);cout<<"【0:玩家 $:终点 M:怪 ^:刺 =:地板】 关卡:"<<cl<<" 平移速:"<<sp<<" [↑↓]调速\n"; for(int y=4;y<18;y++){for(int x=curX;x<curX+60;x++){ if(x==(int)px&&y==(int)py){S(14);cout<<"0";} // 人物 0 else if(y==h[x]){bool im=0,io=0;for(auto &m:ms)if(x==(int)m.x)im=1;for(int o:os)if(x==o)io=1; if(io)S(12),cout<<"^";else if(im)S(9),cout<<"M";else S(12),cout<<"=";} // 怪物 M,地板 = else if(x==195&&y==10){S(14);cout<<"$";} else { int pPos = (x + bgX) % mW; if(y == 5 && bgP[pPos] == 1) { S(8); cout<<"·"; } else if(y == 7 && bgP[pPos] == 2) { S(8); cout<<"+"; } else cout<<" "; }}cout<<"\n";} if(px>=195){cl++;px=10;py=10;scX=0;gn();sv();system("cls");S(14);cout<<"? 祥龙献瑞 ?";Sleep(600);system("cls");} Sleep(110);}} // 保持 110ms 的“定格平移”感 int main(){srand(time(0));menu();game();return 0;}

  • 通过的题目

  • 最近活动

    This person is lazy and didn't join any contests or homework.
  • 最近编写的题解

    This person is lazy and didn't write any solutions.

题目标签

基本数据类型
11
基本数学运算
11
C++程序结构
6
C++输出语句
6
变量的命名规则
5
复合运算符
5
cin输入语句
3
取整方法
2
取整函数
2
格式化输入输出
1
while、do-while循环语句
1
模拟算法
1