Green1127

C++代码存放设施 site - 01 所有UTF-8已同步

博客园 首页 新随笔 联系 订阅 管理
倔地矿胎
最新修改:难度降低! //TSzza - 个人中心 - 洛谷 #include<bits/stdc++.h> #include<windows.h> #include<stdio.h> #include<conio.h> #include<time.h> #define KEY_DOWN(VK_NONAME)((GetAsyncKeyState(VK_NONAME)&0x8000)?1:0) using namespace std; int m[10001][21]; struct node {int xx,yy,Zhong,rr,mr;} B[100001]; int K,X,Y,tX,tY,tY2,tT,Er,T,Yb,Zb,Win,Blood,Score,Kb; void Color(int a) { if(a==0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE); if(a==1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE); if(a==2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN); if(a==3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE); if(a==4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED); if(a==5) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN); if(a==6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE); if(a==7) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN); if(a==8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE); if(a==9) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|BACKGROUND_INTENSITY|BACKGROUND_RED); if(a==10) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE|BACKGROUND_INTENSITY|BACKGROUND_BLUE); } void SetPos(int x,int y) { COORD pos; pos.X=y*2-1,pos.Y=x+1; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos); } void Zha(int x,int y) { Zb++; int k1=rand()%2+2,k2=rand()%3+2,r=rand()%6; if(r==0) B[Zb].xx=x-K,B[Zb].yy=y,B[Zb].Zhong=1,B[Zb].rr=0,B[Zb].mr=k1*2; if(r==1) B[Zb].xx=x-K,B[Zb].yy=y,B[Zb].Zhong=2; if(r==2) B[Zb].xx=x-K,B[Zb].yy=y,B[Zb].Zhong=3,B[Zb].rr=k2,B[Zb].mr=k1; if(r==3) B[Zb].xx=x-K,B[Zb].yy=y,B[Zb].Zhong=4; if(r==4) B[Zb].xx=x-K,B[Zb].yy=y,B[Zb].Zhong=5,B[Zb].rr=1,B[Zb].mr=k2*2; if(r==5) B[Zb].xx=x-K,B[Zb].yy=y,B[Zb].Zhong=rand()%2+6,B[Zb].rr=k1+1,B[Zb].mr=k2+3; } void Cout(int i,int j,int a) { int R=rand()%500,jk=0; if(i-K>=0&&i-K<=1&&j>=2&&j<=6) return; if(a!=4) { if(m[i][j]==0&&(a==0||a==3)) SetPos(i-K,j),Color(7),cout<<"■"; if(m[i][j]==1&&a==5) SetPos(i-K,j),Color(0),cout<<" ";//空气 if(m[i][j]==2) SetPos(i-K,j),Color(8),cout<<"■"; if(m[i][j]>=3&&m[i][j]<6) SetPos(i-K,j),Color(5),cout<<"█",m[i][j]++; if(m[i][j]==6&&a!=5) SetPos(i-K,j),cout<<" ",m[i][j]=1; if(m[i][j]==7) SetPos(i-K,j),Color(9),cout<<"~ "; if(m[i][j]==8) SetPos(i-K,j),Color(10),cout<<"~ "; if(m[i][j]==9) SetPos(i-K,j),Color(3),cout<<"◆"; if((m[i][j]==1||m[i][j]==8)&&m[i-1][j]>=10&&m[i-1][j]<=30&&a!=5) {int M=m[i][j];m[i][j]=m[i-1][j],m[i-1][j]=M;if(M==1) SetPos(i-K-1,j),cout<<" ";}//炸弹下落 if(m[i][j]==1&&m[i-1][j]==9&&a!=5) {m[i][j]=9,m[i-1][j]=1,SetPos(i-K-1,j),Color(0),cout<<" ";jk=1;}//宝石下落 if(m[i][j]>=10&&m[i][j]<=30) {m[i][j]++;if(m[i][j]%3==0) Color(4);else Color(5);SetPos(i-K,j),cout<<"●";}//炸弹计时 if(m[i][j]==1&&m[i-1][j]==7&&a!=5) {m[i][j]=7,m[i-1][j]=1,SetPos(i-K-1,j),Color(0),cout<<" ";jk=1;}//岩浆下落 if(m[i][j]==0&&m[i-1][j]==7&&R<=2) m[i][j]=m[i-1][j],m[i-1][j]=1,SetPos(i-K-1,j),cout<<" ";//岩浆融解 if(m[i][j]==7&&R>2&&R<=5) {int r=rand()%3-1; if(m[i][j+r]==1) m[i][j+r]=m[i][j];if(m[i][j+r]==8) m[i][j+r]=2;}//岩浆扩散 if(R<50&&R>=20&&m[i+1][j+1]==1&&m[i+1][j]==8&&m[i][j]==8) m[i+1][j+1]=8,m[i][j]=1,SetPos(i-K,j),Color(0),cout<<" "; if(R<80&&R>=50&&m[i+1][j-1]==1&&m[i+1][j]==8&&m[i][j]==8) m[i+1][j-1]=8,m[i][j]=1,SetPos(i-K,j),Color(0),cout<<" ";//岩浆平面 if(m[i][j]==1&&m[i-1][j]==8&&a!=5) {m[i][j]=8,m[i-1][j]=1,SetPos(i-K-1,j),Color(0),cout<<" ";jk=1;}//水下落 if(m[i+1][j+1]==1&&m[i+1][j]==8&&m[i][j]==8) m[i+1][j+1]=8,m[i][j]=1,SetPos(i-K,j),Color(0),cout<<" "; if(m[i+1][j-1]==1&&m[i+1][j]==8&&m[i][j]==8) m[i+1][j-1]=8,m[i][j]=1,SetPos(i-K,j),Color(0),cout<<" ";//水平面 if((m[i+1][j]==8&&m[i][j]==7)||(m[i+1][j]==7&&m[i][j]==8)) m[i][j]=2,m[i-1][j]=1,SetPos(i-K-1,j),Color(0),cout<<" ";//变石头 if(m[i][j]==0&&m[i-1][j]==8&&R>5&&R<=7) m[i][j]=m[i-1][j],m[i-1][j]=1,SetPos(i-K-1,j),cout<<" ";//水融解 if(m[i][j]==8&&R>7&&R<=9) {int r=rand()%3-1; if(m[i][j+r]==1) m[i][j+r]=m[i][j];if(m[i][j+r]==7) m[i][j+r]=2;}//水扩散 if(m[i][j]==31) SetPos(i-K,j),cout<<" ",Zha(i,j); } else if(a!=5)//界外 { if(m[i][j]>=3&&m[i][j]<6) m[i][j]++; if(m[i][j]==6) m[i][j]=1; if((m[i][j]==1||(m[i][j]>=3&&m[i][j]<=6))&&m[i-1][j]>=10&&m[i-1][j]<=30) m[i][j]=m[i-1][j],m[i-1][j]=1;//炸弹下落 if(m[i][j]>=10&&m[i][j]<=30) m[i][j]++;//炸弹计时 if(m[i][j]==1&&m[i-1][j]==9) m[i][j]=9,m[i-1][j]=1;//宝石下落 if(m[i][j]==1&&m[i-1][j]==7) m[i][j]=7,m[i-1][j]=1;//岩浆下落 if(m[i][j]==1&&m[i-1][j]==8) m[i][j]=8,m[i-1][j]=1;//水下落 }if(jk==1) jk=0,Cout(i,j,5); Color(0); } void Map(int a); void Wo() { SetPos(X-K,Y),cout<<" "; //清除上一次残影 if(m[X][Y]==9) Blood++,Score+=5,m[X][Y]=1,system("color 2F"),Sleep(50),system("color 0F"),Map(3); if(tX!=0&&(m[X-1][Y]==1||m[X-1][Y]==7||m[X-1][Y]==8||m[X-1][Y]==9||(m[X-1][Y]>=3&&m[X-1][Y]<=6))) tX--,X-=2; //上跳 if(m[X+1][Y]==1||(m[X+1][Y]>=3&&m[X+1][Y]<=6)||m[X+1][Y]==7||m[X+1][Y]==8||m[X+1][Y]==9) X++; //掉落 if(m[X+1][Y]==0||m[X+1][Y]==2||(m[X+1][Y]>=3&&m[X+1][Y]<=6)) tX=Er=0; //跳跃次数清零 if(m[X-1][Y]==0||m[X-1][Y]==2||(m[X-1][Y]>=10&&m[X-1][Y]<=31)) tX=Er=0; //跳跃次数清零 if(X<=K) tX=Er=0,X=K; if(X>=K+28) X=K+28,Kb=1; //高度上下限 if(m[X][Y]==7) m[X-1][Y]=m[X-2][Y]=1,tX+=8; if(m[X][Y]!=1&&m[X][Y]!=8&&m[X][Y]!=9) Blood--,m[X][Y]=1,system("color 4F"),Sleep(50),system("color 0F"),Map(3); if(Blood<=0) Win=-1; SetPos(X-K,Y),Color(1),cout<<"●"; } void Map(int a) { SetPos(0,2);cout<<"Blood: "<<Blood<<" "; SetPos(1,2);cout<<"Score: "<<Score<<" "; if(a==3) system("cls"); for(int i=K+28;i>=K;i--)for(int j=1;j<=20;j++) Cout(i,j,a); for(int i=K+33;i>K+28;i--)for(int j=1;j<=20;j++) Cout(i,j,4); if(a!=3) Wo(); } void CircleBomb(int x,int y,int s,int ms) { if(s==ms) return; for(int i=x-s;i<=x+s;i++) for(int j=y-s;j<=y+s;j++) { float k=(i-x)*(i-x)+(j-y)*(j-y)-s*s; if(k<=s&&k>=-s&&j>0&&j<=20&&m[i+K][j]!=2&&m[i+K][j]!=9) m[i+K][j]=3; }Zb++; B[Zb].xx=x,B[Zb].yy=y,B[Zb].Zhong=1,B[Zb].rr=s+1,B[Zb].mr=ms; Sleep(30); } void LineBomb(int i,int j) { for(int k=0;j+k<=20;k++) if(m[i+K][j+k]!=2&&m[i+K][j+k]!=9) m[i+K][j+k]=3; for(int k=0;j+k<=20;k++) if(m[i+K+1][j+k]!=2&&m[i+K+1][j+k]!=9) m[i+K+1][j+k]=3; for(int k=0;j-k>0;k++) if(m[i+K][j-k]!=2&&m[i+K][j-k]!=9) m[i+K][j-k]=3; for(int k=0;j-k>0;k++) if(m[i+K+1][j-k]!=2&&m[i+K+1][j-k]!=9) m[i+K+1][j-k]=3; } void ZuanBomb(int i,int j) { int k; for(k=0;m[i+K+k][j]!=2&&k<=7;k++) if(m[i+K+k][j]!=9) m[i+K+k][j]=3; int k1=rand()%2+2;Zb++; B[Zb].xx=i+k,B[Zb].yy=j,B[Zb].Zhong=1,B[Zb].rr=0,B[Zb].mr=k1*3/2; } void TrigleBomb(int i,int j,int r,int mr) { if(r==mr) return; if(r==1) m[i+K][j]=3,i++; for(int k=max(0,j-r);k<=min(20,j+r);k++) if(m[i+K][k]!=2&&m[i+K][k]!=9) m[i+K][k]=3; Zb++;B[Zb].xx=i+1,B[Zb].yy=j,B[Zb].Zhong=5,B[Zb].rr=r+1,B[Zb].mr=mr; } void GunBomb(int i,int j,int r,int mr) { if(mr<=0) return;Zb++; B[Zb].xx=i,B[Zb].yy=j+2,B[Zb].Zhong=6,B[Zb].rr=r,B[Zb].mr=mr-1;Zb++; B[Zb].xx=i,B[Zb].yy=j,B[Zb].Zhong=1,B[Zb].rr=r-1,B[Zb].mr=r; } void GunBomb2(int i,int j,int r,int mr) { if(mr<=0) return;Zb++; B[Zb].xx=i,B[Zb].yy=j-2,B[Zb].Zhong=7,B[Zb].rr=r,B[Zb].mr=mr-1;Zb++; B[Zb].xx=i,B[Zb].yy=j,B[Zb].Zhong=1,B[Zb].rr=r-1,B[Zb].mr=r; } void ThreeBomb(int x,int y,int s,int ms) { for(int i=1;i<=3;i++) { int Xx=rand()%(2*s+1)-s,Yy=rand()%(2*s+1)-s; Zb++; B[Zb].xx=Xx+x,B[Zb].yy=Yy+y,B[Zb].Zhong=1,B[Zb].rr=0,B[Zb].mr=ms+rand()%3-1; } } void Sheng(int a) { K++; for(int i=1;i<=20;i++) { int R=rand()%max(80-(K/10),30);int Rr=rand()%200; if(R<=3) m[K+28][i]=2; else if(R<=6) m[K+28][i]=7; else if(R<=9) m[K+28][i]=8; if(Rr==0) m[K+28][i]=9; } if(a!=1) system("cls"),Map(0); } void Jiao() { SetPos(0,2);Color(1),cout<<"●",Color(7),cout<<" ■ ",Color(8),cout<<" ■ ",Color(4),cout<<" ● ",Color(9),cout<<"~ ",Color(0),cout<<" ",Color(10),cout<<"~ ",Color(3),cout<<" ◆"; SetPos(2,2);Color(0),cout<<"你 泥土 石块 炸弹 岩浆 水 宝石"; SetPos(4,1),cout<<" ↑ 空格放炸弹..."; SetPos(5,1),cout<<"← →移动 "; SetPos(6,1),cout<<" ↓ 可二段跳。"; SetPos(8,1),cout<<"炸弹种类随机,计时3秒爆炸。"; SetPos(10,1),cout<<"(一共有7种炸弹,有几率组合一起爆炸)"; SetPos(12,1),cout<<"岩浆和水有几率向左右扩散..."; SetPos(14,1),cout<<"它们相融会产生石块。"; SetPos(16,1),cout<<"岩浆和爆炸波会使你减血..."; SetPos(18,1),cout<<"岩浆还会使你上跳,宝石可以加血。"; SetPos(20,1),cout<<"画面每隔一段时间会下降..."; SetPos(22,1),cout<<"当你抵达画面底部时,画面会随你一起下降..."; SetPos(24,1),cout<<"当你被抵在画面顶部时,会持续减血。"; SetPos(26,1),cout<<"每隔一段时间分数会增加...",Color(5),cout<<"500分即可通关!"; SetPos(28,1);Color(1);cout<<"按 y 开始游戏!"; char tt;while(tt!='y') tt=_getch(); } void Start() { Color(5); SetPos(2,3);Color(7),cout<<" ■ ",Color(5),cout<<"掘",Color(7),cout<<" ■■■■ "; SetPos(3,3);Color(7),cout<<" ■■ ",Color(5),cout<<" ↓",Color(7),cout<<" ■■■■ "; SetPos(4,3);Color(7),cout<<" ■■■■ ",Color(5),cout<<" ↓",Color(7),cout<<" ■■■■■ "; SetPos(5,3);Color(7),cout<<" ■■■■■",Color(5),cout<<"↓",Color(7),cout<<" ■■■■■ "; SetPos(6,3);Color(7),cout<<" ■■■■■ ■■■",Color(5),cout<<"地",Color(7),cout<<"■■ "; SetPos(7,3);Color(7),cout<<" ■■■■■■■■■■■■ ";Color(5); SetPos(10,3);cout<<" ■■■ ■ "; SetPos(11,3);cout<<" ■ ■ ■ "; SetPos(12,3);Color(8),cout<<" ■■■ ",Color(5),cout<<" ■■■ ■ ■ "; SetPos(13,3);Color(8),cout<<" ■",Color(5),cout<<"矿",Color(8),cout<<"■ ",Color(5),cout<<" ■ ■ ■■■■■"; SetPos(14,3);Color(8),cout<<" ■■■ ",Color(5),cout<<" ■ ■ "; SetPos(15,3);cout<<" ■■■ ■■■■ "; SetPos(16,3);cout<<" ■ ■ ■ ■ "; SetPos(17,3);cout<<" ■ ■ ■ ■ "; SetPos(18,3);cout<<" ■■ ■ ■■■■ "; SetPos(22,2);Color(1);cout<<"按 y 确定!"; SetPos(22,10);Color(9);cout<<" 开始游戏! "; SetPos(24,10);Color(0);cout<<" 操作攻略! "; SetPos(27,1);Color(3);cout<<"注意!这里 绝对不能是拼音输入法!"; SetPos(28,5);Color(3);cout<<"↓";Color(0); char tt;int Ee=0; while(tt!='y') { tt=_getch(); if(tt==72&&Ee!=0) Ee--; if(tt==80&&Ee!=2) Ee++; SetPos(22,10);if(Ee==0) Color(9);else Color(0);cout<<" 开始游戏! "; SetPos(24,10);if(Ee==1) Color(9);else Color(0);cout<<" 操作攻略! "; }system("color 0F");system("cls");Color(0); if(Ee==1) Jiao(); } int main() { system("mode con cols=42 lines=31"); CONSOLE_CURSOR_INFO cursor_info={1,0}; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info); srand((unsigned)time(NULL)); Start(); St:system("cls"); K=-5,T=Win=Score=0;X=Y=2;Blood=20; memset(m,0,sizeof(m));memset(B,0,sizeof(B)); for(int i=5;i<=15;i++) for(int j=1;j<=20;j++) m[i][j]=1; for(int i=1;i<=10;i++) Sheng(1); Map(0); while(Win==0) { T++;Kb=0;if(Score>=500) Win=1; if(GetAsyncKeyState(VK_UP)&0x8000&&tT==0&&Er<2) tT++,tX+=4,Er++; if((GetAsyncKeyState(VK_UP)&0x8000)?0:1) tT=0; if(GetAsyncKeyState(VK_LEFT)&0x8000&&Y>1&&(m[X][Y-1]==1||m[X][Y-1]==7||m[X][Y-1]==8||m[X][Y-1]==9)&&(tY==0||tY>=2)) SetPos(X-K,Y),cout<<" ",Y--; if(GetAsyncKeyState(VK_RIGHT)&0x8000&&Y<20&&(m[X][Y+1]==1||m[X][Y+1]==7||m[X][Y+1]==8||m[X][Y+1]==9)&&(tY2==0||tY2>=2)) SetPos(X-K,Y),cout<<" ",Y++; if((GetAsyncKeyState(VK_LEFT)&0x8000)?0:1) tY=0;if((GetAsyncKeyState(VK_RIGHT)&0x8000)?0:1) tY2=0; if((GetAsyncKeyState(VK_LEFT)&0x8000)?1:0) tY++;if((GetAsyncKeyState(VK_RIGHT)&0x8000)?1:0) tY2++; if(kbhit()) {char e=_getch();if(e==' '&&m[X-1][Y]!=0&&m[X-1][Y]!=2&&(m[X+1][Y]<=10||m[X+1][Y]>=31)&&Kb==0) m[X][Y]=10,X--;} int zb=Zb; for(int i=zb-10;i<=zb;i++) { if(B[i].Zhong==1) CircleBomb(B[i].xx,B[i].yy,B[i].rr,B[i].mr),B[i].Zhong=0; if(B[i].Zhong==2) LineBomb(B[i].xx,B[i].yy),B[i].Zhong=0; if(B[i].Zhong==3) ThreeBomb(B[i].xx,B[i].yy,B[i].rr,B[i].mr),B[i].Zhong=0; if(B[i].Zhong==4) ZuanBomb(B[i].xx,B[i].yy),B[i].Zhong=0; if(B[i].Zhong==5) TrigleBomb(B[i].xx,B[i].yy,B[i].rr,B[i].mr),B[i].Zhong=0; if(B[i].Zhong==6) GunBomb(B[i].xx,B[i].yy,B[i].rr,B[i].mr),B[i].Zhong=0; if(B[i].Zhong==7) GunBomb2(B[i].xx,B[i].yy,B[i].rr,B[i].mr),B[i].Zhong=0; } Map(1);Sleep(40); if(T%max(10,40-Score/16)==0||Kb>=1) Sheng(0); if(T%20==0) Score++; } if(Win!=0) { if(Win>0) {system("color 6E"),Color(3);SetPos(0,2);cout<<"You! Win!!!",Sleep(1000);} if(Win<0) {system("color 7F"),Color(4);SetPos(0,2);cout<<"You! Die!!!",Sleep(1000);} SetPos(1,2);cout<<"Please point 'y' to Play AGain."; A:char e=_getch();if(e!='y') goto A;goto St; } }

  

胎红胎蓝
最新修改:多线程全新开放!

         
#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
#include<time.h>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
using namespace std;
int m[20][20];
char a,b,c,d;
int xa=16,ya=4,xb=16,yb=15,fxa=20,fya=20;
int xShang,Tiao,Zuo,You,Quan,fang=1,blood=50,lan=20;
int yShang,Tiaob,Zuob,Youb,Quanb,fangb=-1,bloodb=50,lanb=20;
int Zhao,Fen,zou,zhao,Bao,baox,baoy,Di,diy,Bu;
int Lie,liey,lief,liefy,Ji,jiy,jif,Shun,r,R,s,S,M;
void Yan(int a)
{
	if(a==1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
	if(a==2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
	if(a==3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
	if(a==4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
	if(a==5) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
	if(a==6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
}
void Bai(){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);}
void SetPos(int x,int y)
{
	COORD pos;
	pos.X=2*y+8;
	pos.Y=x;
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
void Xue()
{
	SetPos(0,-4);for(int i=0;i<4;i++) {for(int j=0;j<38;j++)cout<<"  ";cout<<endl;}SetPos(0,-4);if(lan>30) lan=30;
	if(lanb>30) lanb=30;cout<<"    ";Yan(5);if(lan==30) Yan(3);for(int i=1;i<=lan;i++) printf("▃");Yan(1);printf("\n1p :");for(int i=2;i<=blood;i+=2) printf("█");
	if(blood%2==1) printf("▌");cout<<endl<<"    ";Yan(5);if(lanb==30) Yan(3);for(int i=1;i<=lanb;i++) printf("▃");Yan(4);printf("\n2p :");for(int i=2;i<=bloodb;i+=2) printf("█");
	if(bloodb%2==1) printf("▌");cout<<endl;SetPos(17,0);Yan(2);for(int j=0;j<20;j++) {cout<<"■";continue;} Bai();Yan(1);printf("\n\n   蓝方:A W D --控制\t\t");Yan(4);
	printf("红方:←↑→--控制\n\n"); Yan(1);printf("   J-出拳");if(lan<1) Yan(6);printf("  K-前刺");if(lan<3) Yan(6);printf("  L-分身\t");Yan(4);printf("1-出拳");
	if(lanb<1) Yan(6);printf("  2-上挑");Yan(4);if(lanb<3) Yan(6);printf("  3-瞬移\n\n");Yan(1);if(lan<3) Yan(6);printf("   U-回血");Yan(1);if(lan<5) Yan(6);printf("  I-裂地");Yan(1);
	if(lan<10) Yan(6);printf("  O-炸地\t");Yan(4);if(lanb<3) Yan(6);printf("4-回血");Yan(4);if(lanb<5) Yan(6);printf("  5-震爆");Yan(4);if(lanb<7) Yan(6);printf("  6-激光");Bai();
}
void Wo(){Yan(1),SetPos(xa,ya),cout<<"●";Yan(4),SetPos(xb,yb),cout<<"●";if(Fen!=0) Bai(),SetPos(fxa,fya),cout<<"●";}
void Hong(){Wo();system("color 4F"),Sleep(10),system("color 0F"),Xue();}
void Lan(){Wo();system("color 1F"),Sleep(10),system("color 0F"),Xue();}
void Lv(){Wo();system("color 2F"),Sleep(10),system("color 0F"),Xue();} 
void Zou()
{
	zou=0;
	SetPos(xa,ya),cout<<"  ";SetPos(xb,yb),cout<<"  ";
	if(Fen>0) SetPos(fxa,fya),cout<<"  ";SetPos(0,-4);
	if(fxa<=5||xa<=5) xShang=0;
	if(xa==xb&&ya==yb) xa--,zou=1;
	if(fxa==xa&&fya==ya) fxa--,zou=1;
	if(fxa==xb&&fya==yb) fxa--,zou=1;
	if(Fen>0)
	{
		if(xa==fxa+1&&ya==fya&&fang==-1){if(fya>0) fya--;else fya+=2;}
		if(xa==fxa+1&&ya==fya&&fang==1){if(fya<19) fya++;else fya-=2;}
		if(fxa+1==xb&&fya==yb&&fang==-1){if(fya>0) fya--;else fya+=2;}
		if(fxa+1==xb&&fya==yb&&fang==1){if(fya<19) fya++;else fya-=2;}
		if(Tiao>0)
		{
			if(fang==-1&&fya>0&&(fxa!=xb||fya-1!=yb)&&(fxa!=xa||fya-1!=ya)) fya--;
			if(fang==1&&fya<19&&(fxa!=xb||fya+1!=yb)&&(fxa!=xa||fya+1!=ya)) fya++;
		}
		if(xShang>0) m[fxa][fya]=0,fxa-=2;
		if(fxa<16) m[fxa][fya]=0,fxa++;
	}
	if(xa+1==xb&&ya==yb&&fang==-1){if(ya>0) ya--;else ya+=2;}
	if(xa+1==xb&&ya==yb&&fang==1){if(ya<19) ya++;else ya-=2;}
	if(xa+1==fxa&&ya==fya&&fang==-1){if(ya>0) ya--;else ya+=2;}
	if(xa+1==fxa&&ya==fya&&fang==1){if(ya<19) ya++;else ya-=2;}
	if(Zuo>0&&ya>0&&Tiao==0&&(xa!=xb||ya-1!=yb)&&(fxa!=xa||fya!=ya-1)) m[xa][ya]=0,ya--;
	if(Zuo>0&&fya>0&&Tiao==0&&(fxa!=xb||fya-1!=yb)&&(xa!=fxa||ya!=fya-1)) m[fxa][fya]=0,fya--;Zuo=0;
	if(You>0&&ya<19&&Tiao==0&&(xa!=xb||ya+1!=yb)&&(fxa!=xa||fya!=ya+1)) m[xa][ya]=0,ya++;
	if(You>0&&fya<19&&Tiao==0&&(fxa!=xb||fya+1!=yb)&&(xa!=fxa||ya!=fya+1)) m[fxa][fya]=0,fya++;You=0;
	if(Tiao>0)
	{
		if(fang==-1&&ya>0&&(xa!=xb||ya-1!=yb)&&(fxa!=xa||fya!=ya-1)) ya--;
		if(fang==1&&ya<19&&(xa!=xb||ya+1!=yb)&&(fxa!=xa||fya!=ya+1)) ya++;
	}
	if(xShang>0) m[xa][ya]=0,xShang--,xa-=2;
	if(xa<16) m[xa][ya]=0,xa++;
	if(xa==16) Tiao=0;
	if(xb<=5) yShang=0;
	if(xa==xb+1&&ya==yb&&fangb==-1){if(yb>0) yb--;else yb+=2;}
	if(xa==xb+1&&ya==yb&&fangb==1){if(yb<19) yb++;else yb-=2;}
	if(xb+1==fxa&&yb==fya&&fangb==-1){if(yb>0) yb--;else yb+=2;}
	if(xb+1==fxa&&yb==fya&&fangb==1){if(yb<19) yb++;else yb-=2;}
	if(Zuob>0&&yb>0&&Tiaob==0&&(xa!=xb||ya!=yb-1)&&(fxa!=xb||fya!=yb-1)) m[xb][yb]=0,Zuob=0,yb--;Zuob=0;
	if(Youb>0&&yb<19&&Tiaob==0&&(xa!=xb||ya!=yb+1)&&(fxa!=xb||fya!=yb+1)) m[xb][yb]=0,Youb=0,yb++;Youb=0;
	if(Tiaob>0&&Bu==0)
	{
		if(fangb==-1&&yb>0&&(xa!=xb||ya!=yb-1)&&(fxa!=xb||fya!=yb-1)) yb--;
		if(fangb==1&&yb<19&&(xa!=xb||ya!=yb+1)&&(fxa!=xb||fya!=yb+1)) yb++;
	}
	if(yShang>0) m[xb][yb]=0,yShang--,xb-=2;
	if(xb<16) m[xb][yb]=0,xb++;
	if(xb==16) Tiaob=0;
	SetPos(0,-4);if(zou==1) Zou();
	Sleep(10);
}
void Xian()
{
	zhao=0;s++;
	if(M>=5) {Zhao=0;return;}
	if(s==70) {s=0;if(lan<40)lan++;if(lanb<40)lanb++;Xue();}
	SetPos(0,-4);
	if(Bao!=0)
	{
		Bao--;Zhao--;
		for(int i=baox-3;i<=baox+3;i++)
		for(int j=baoy-3;j<=baoy+3;j++) if(i<=16&&j>=0&&j<=19) m[i][j]=9;
		for(int i=baox-1;i<=baox+1;i++)
		for(int j=baoy-1;j<=baoy+1;j++) if(i<=16&&j>=0&&j<=19) m[i][j]=0;
	}if(Bao==0) baox=0,baoy=0;
	if(Lie!=0)
	{
		Lie--;Zhao--;
		if(lief==-1) for(int i=1;i<=7-Lie;i++) if(liey+Lie>=0) m[18-i][liey+Lie]=11;
		if(lief==1) for(int i=1;i<=7-Lie;i++) if(liey-Lie<=19) m[18-i][liey-Lie]=10;
		if(Fen>0)
		{
			if(lief==-1) for(int i=1;i<=7-Lie;i++) if(liefy+Lie>=0) m[18-i][liefy+Lie]=11;
			if(lief==1) for(int i=1;i<=7-Lie;i++) if(liefy-Lie<=19) m[18-i][liefy-Lie]=10;
		}
	}if(Lie==0) liey=0,lief=0,liefy=0;
	if(Ji!=0)
	{
		Ji--;Zhao--;
		if(jif==-1) for(int i=jiy;i>=0;i--) m[xb][i]=14;
		if(jif==1) for(int i=jiy;i<=19;i++) m[xb][i]=13;
	}if(Ji==0) jiy=0,jif=0;
	if(Di!=0)
	{
		Di--;Zhao--;
		for(int i=2;i<=16;i++) m[i][diy]=19;
		if(Fen>0&&yb!=0&&yb!=19) for(int i=2;i<=16;i++) m[i][diy+fangb]=19;
	}if(Di==0) diy=0;
	if(Shun!=0)
	{
		SetPos(Shun,-4);cout<<"                                                     ";
		Shun=0;
	}
	Bu=0;
	if(m[xa][ya]==3) {Shun=xa,Zuo+=1,xShang+=4,blood-=1,Zhao=0,m[xa][ya]=7,Lan(),lan++,zhao=1;Xue();}
	else if(m[xa][ya]==4) {Shun=xa,You+=1,xShang+=4,blood-=1,Zhao=0,m[xa][ya]=7,Lan(),lan++,zhao=1;Xue();}
	else if(m[xa][ya]==9) {Shun=xa,xShang=7,blood-=2,Zhao=0,m[xa][ya]=7,Lan(),lan+=2,zhao=1;Xue();}
	else if(m[xa][ya]==13) {Shun=xa,You+=1,blood-=2,Zhao=0,m[xa][ya]=7,Lan(),lan+=2,zhao=1;Xue();}
	else if(m[xa][ya]==14) {Shun=xa,Zuo+=1,blood-=2,Zhao=0,m[xa][ya]=7,Lan(),lan+=2,zhao=1;Xue();}
	else if(m[xa][ya]==15) {Shun=xa,You+=1,blood-=1,Zhao=0,m[xa][ya]=7,Lan(),lan+=1,zhao=1;Xue();}
	else if(m[xa][ya]==16) {Shun=xa,Zuo+=1,blood-=1,Zhao=0,m[xa][ya]=7,Lan(),lan+=1,zhao=1;Xue();}
	else m[xa][ya]=1;
	if(m[fxa][fya]==3||m[fxa][fya]==4||m[fxa][fya]==9||m[fxa][fya]==13||m[fxa][fya]==14||m[fxa][fya]==15||m[fxa][fya]==16)
	{Zhao=0,m[fxa][fya]=7,fxa=20,fya=20,Fen=0,Lan(),zhao=1;Xue();}
	if(m[xb][yb]==5) {Shun=xb,Zuob+=4,yShang+=1,bloodb-=1,Zhao=0,m[xb][yb]=7,Hong(),lanb++,zhao=1;Xue();}
	else if(m[xb][yb]==6) {Shun=xb,Youb+=4,yShang+=1,bloodb-=1,Zhao=0,m[xb][yb]=7,Hong(),lanb++,zhao=1;Xue();}
	else if(m[xb][yb]==10) {Shun=xb,Youb+=1,yShang+=1,bloodb-=2,Zhao=0,m[xb][yb]=7,Hong(),lanb+=2,zhao=1;Xue();}
	else if(m[xb][yb]==11) {Shun=xb,Zuob+=1,yShang+=1,bloodb-=2,Zhao=0,m[xb][yb]=7,Hong(),lanb+=2,zhao=1;Xue();}
	else if(m[xb][yb]==17) {Shun=xb,Youb+=1,bloodb-=1,Zhao=0,m[xb][yb]=7,Hong(),lanb+=1,zhao=1;Xue();}
	else if(m[xb][yb]==18) {Shun=xb,Zuob+=1,bloodb-=1,Zhao=0,m[xb][yb]=7,Hong(),lanb+=1,zhao=1;Xue();}
	else if(m[xb][yb]==19) {Shun=xb,Bu=1,yShang+=3,bloodb-=1,Zhao=0,m[xb][yb]=7,Hong(),lanb+=1,zhao=1;Xue();}
	else m[xb][yb]=2;
	if(Fen>0) m[fxa][fya]=8;
	for(int i=5;i<=16;i++)
	for(int j=0;j<20;j++)
	{
		if(m[i][j]==20) {SetPos(i,j);cout<<"  ",m[i][j]=0;continue;}
		if(m[i][j]==1) {Yan(1),SetPos(i,j);cout<<"●",m[i][j]=20,Bai();continue;}
		if(m[i][j]==2) {Yan(4),SetPos(i,j);cout<<"●",m[i][j]=20,Bai();continue;}
		if(m[i][j]==8) {Bai(),SetPos(i,j);cout<<"●",m[i][j]=20;continue;}
		if(m[i][j]==7) {Yan(5),SetPos(i,j);cout<<"█",m[i][j]=20,zhao=1;Bai();continue;}
		if(m[i][j]==12) {Bai(),SetPos(i,j);cout<<"●",Shun=xb;continue;}
		if(m[i][j]>=3&&m[i][j]<=6||(m[i][j]>=9&&m[i][j]<=11)||(m[i][j]>=13))
		{Bai(),SetPos(i,j);cout<<"■";m[i][j]=20,Zhao=0,zhao=1;continue;}
	}
	if(zhao>0) {M++,Zou(),Xian();M=0;return;}
	memset(m,0,sizeof(m));M=0;
}
void Go(char a)
{
	if(a=='j') Quan++; else Quan=0;
	if(a=='w'&&Tiao==0) Tiao++,xShang+=3;
	if(a=='a'&&Tiao==0) Zuo=1,You=0,fang=-1;
	if(a=='d'&&Tiao==0) You=1,Zuo=0,fang=1;
	if(a=='j'&&Quan<=3&&fang==-1&&ya-1>=0) {m[xa][ya-1]=18;if(Fen>0&&fya-1>=0) m[fxa][fya-1]=18;}
	if(a=='j'&&Quan<=3&&fang==1&&ya+1<=19) {m[xa][ya+1]=17;if(Fen>0&&fya+1<=19) m[fxa][fya+1]=17;}
	if(a=='k'&&fang==-1&&lan>=1&&ya!=0) {lan--,Xue();Zhao++;for(int i=1;i<=3;i++){if(ya-i>=0) m[xa][ya-i]=5;if(Fen>0&&fya-i>=0) m[fxa][fya-i]=5;}}
	if(a=='k'&&fang==1&&lan>=1&&ya!=19) {lan--,Xue();Zhao++;for(int i=1;i<=3;i++){if(ya+i<=19) m[xa][ya+i]=6;if(Fen>0&&fya+i<=19) m[fxa][fya+i]=6;}}
	if(a=='l'&&Fen==0&&lan>=3) lan-=3,Xue(),Lan(),fxa=xa-3,fya=rand()%19,Fen=1,Zou(),Xian();
	if(a=='u'&&lan>=3) lan-=3,Xue(),Lv(),blood+=2;
	if(a=='i'&&lan>=5) lan-=5,Xue(),Zhao+=3,Di+=3,diy=yb;
	if(a=='o'&&fang==-1&&lan>=10) {lan-=10,Xue();Zhao+=6,Lie=6,liey=ya-6,lief=-1,liefy=0;if(Fen>0) liefy=fya-6;}
	if(a=='o'&&fang==1&&lan>=10) {lan-=10,Xue();Zhao+=6,Lie=6,liey=ya+6,lief=1,liefy=0;if(Fen>0) liefy=fya+6;}
	
	if(a=='1') Quanb++; else Quanb=0;
	if(a==72&&Tiaob==0) Tiaob++,yShang+=3;
	if(a==75&&Tiaob==0) Zuob=1,Youb=0,fangb=-1;
	if(a==77&&Tiaob==0) Youb=1,Zuob=0,fangb=1;
	if(a=='1'&&Quanb<=3&&fangb==-1&&yb-1>=0) m[xb][yb-1]=16;
	if(a=='1'&&Quanb<=3&&fangb==1&&yb+1<=19) m[xb][yb+1]=15;
	if(a=='2'&&fangb==-1&&lanb>=1&&yb!=0) {lanb--,Xue();Zhao++;for(int i=1;i<=3;i++){if(yb-i>=0) m[xb][yb-i]=3;}}
	if(a=='2'&&fangb==1&&lanb>=1&&yb!=19) {lanb--,Xue();Zhao++;for(int i=1;i<=3;i++){if(yb+i<=19) m[xb][yb+i]=4;}}
	if(a=='3'&&fangb==1&&lanb>=3&&yb!=19) {lanb-=3;Xue();for(int i=yb;i<=18;i++) m[xb][i]=12;yb=19;Xian();}
	if(a=='3'&&fangb==-1&&lanb>=3&&yb!=0) {lanb-=3;Xue();for(int i=yb;i>0;i--) m[xb][i]=12;yb=0;Xian();}
	if(a=='4'&&lanb>=3) lanb-=3,Xue(),Lv(),bloodb+=2;
	if(a=='5'&&lanb>=5) lanb-=5,Xue(),Zhao+=3,Bao+=3,baox=xb,baoy=yb;
	if(a=='6'&&lanb>=7) lanb-=7,Xue(),Zhao+=3,Ji+=3,jiy=yb,jif=fangb;
}
int main()
{
	x:
	system("cls");
	srand((unsigned)time(NULL));Bai();
	cout<<endl<<" -------------------胎红 VS 胎蓝---------------------"<<endl;
	cout<<" ---------------------------作者:胎神---------------"<<endl<<endl;Yan(5);
	cout<<"       2.0版本,憾世来袭!"<<endl<<endl;
	cout<<"       2大更新:"<<endl<<endl;
	cout<<"          1.完美解决“闪”的问题!"<<endl<<endl;
	cout<<"          2.单人模式来了!完全电脑AI控制,比双人模式更难!"<<endl<<endl;
	cout<<"          3.技能平衡性调整,更合理化的对战体验。"<<endl<<endl;Yan(1);
	cout<<" 已开启  闪光功能:当蓝方挨血时,画面闪蓝光,反之闪红光;恢血时闪绿光。"<<endl<<endl;Bai();
	cout<<" 请输入: 1.单人模式   2.双人模式"<<endl<<endl;A:a=_getch();
	if(a=='1')
	{
		cout<<" 你要当谁?   1.小胎蓝   2.小胎红   3.老子不想打了,让他们自己打!"<<endl<<endl;b=_getch();
		cout<<" 选择难度:   1.简单的像吃屎   2.一般的像垃圾   3.巨难的像变胎"<<endl<<endl;
		cout<<"          (难度越简单,对方动作越迟缓。)"<<endl<<endl;d=_getch();
		if(d=='1') R=5;
		if(d=='2') R=3;
		if(d=='3') R=1;
		system("cls");
		Xue();Xian();
		while(blood>0&&bloodb>0)
		{
			SetPos(0,-4);M=0;
			Zou();Xian();
			if(b=='1'||b=='3')
			{
				S++;
				if(S>=R)
				{
					S=0;c=0;int xxa=xa,yya=ya;
					if(lanb>=7) r=rand()%6;else if(lanb>=5) r=rand()%7-2;else if(lanb>=3) r=rand()%6-2;else if(lanb>=1) r=rand()%4-1;else r=rand()%3-1;
					if(Fen>0) xxa=fxa,yya=fya;
					if((xb==16&&yb==0)||(xb==16&&yb==19)) r=0;
					if(r==5){if(fangb==-1&&xxa==xb&&yya<=yb) c='6';if(fangb==1&&xxa==xb&&yya>=yb) c='6';else r=0;}
					if(r==4){if(xxa==xb&&abs(yya-yb)<=1) r=0;if(fangb==-1&&yb-3<=yya&&yya<=yb-1) c='5';if(fangb==1&&yb+3>=yya&&yya>=yb+1) c='5';else r=0;}
					if(r==3&&bloodb<30&&lan>=3) c='4';
					if(r==2){if(fangb==-1&&yb-3<=yya&&yya<=yb) c='2';if(fangb==1&&yb+3>=yya&&yya>=yb) c='2';else r=0;}
					if(r==1){if(fangb==-1&&yb-1==yya) c='1';else if(fangb==1&&yb+1==yya) c='1';else r=0;}
					if(yya<=yb&&r==0){int rr=rand()%5;if(fangb==-1&&rr==0) c=72;else if(fangb==-1&&rr==1&&abs(yya-yb)>=5) c='3';else c=75;}
					if(yya>yb&&r==0){int rr=rand()%5;if(fangb==1&&rr==0) c=72;else if(fangb==1&&rr==1&&abs(yya-yb)>=5) c='3';else c=77;}
					if(c!=0) Go(c);
				}
			}
			if(b=='2'||b=='3')
			{
				S++;
				if(S>=R)
				{
					S=0;c=0;
					if(lanb>=10) r=rand()%10;else if(lanb>=5) r=rand()%9-3;else if(lanb>=3) r=rand()%8-3;else if(lanb>=1) r=rand()%6-2;else r=rand()%3-1;
					if((xa==16&&ya==0)||(xa==16&&ya==19)) r=0;
					if(r>=6){if(fang==-1&&ya>=yb&&abs(ya-yb)<=2) c='o';if(fang==1&&ya<=yb&&abs(ya-yb)<=2) c='o';else r=0;}
					if(r==5) c='i';
					if(r==4&&blood<30&&lan>=3) c='u';
					if(r==3&&Fen==0) c='l';
					if(r==2){if(fang==1&&yb-3<=ya&&ya<=yb) c='k';if(fang==-1&&yb+3>=ya&&ya>=yb) c='k';else r=0;}
					if(r==1){if(fang==1&&yb-1==ya) c='j';else if(fang==-1&&yb+1==ya) c='j';else r=0;}
					if(ya>=yb&&r==0){int rr=rand()%5;if(fang==-1&&rr==0) c='w';else c='a';}
					if(ya<yb&&r==0){int rr=rand()%5;if(fang==1&&rr==0) c='w';else c='d';}
					if(c!=0) Go(c);
				}
			}
			if(kbhit())
			{
				SetPos(0,-4);
				if(b=='1')
				{
					if(KEY_DOWN(87)) Go('w');if(KEY_DOWN(65)) Go('a');if(KEY_DOWN(68)) Go('d');
					if(KEY_DOWN(74)) Go('j');if(KEY_DOWN(75)) Go('k');if(KEY_DOWN(76)) Go('l');
					if(KEY_DOWN(85)) Go('u');if(KEY_DOWN(73)) Go('i');if(KEY_DOWN(79)) Go('o');
				}
				if(b=='2')
				{
					if(KEY_DOWN(38)) Go(72);if(KEY_DOWN(37)) Go(75);if(KEY_DOWN(39)) Go(77);
					if(KEY_DOWN(97)) Go('1');if(KEY_DOWN(98)) Go('2');if(KEY_DOWN(99)) Go('3');
					if(KEY_DOWN(100)) Go('4');if(KEY_DOWN(101)) Go('5');if(KEY_DOWN(102)) Go('6');
				}
				Zou(),Xian();
			}
			if(Zhao>0) Zou(),Xian();
			Sleep(20);
		}
	}
	else if(a=='2')
	{
		system("cls");
		Xue();Xian();
		while(blood>0&&bloodb>0)
		{
			SetPos(0,-4);
			if(!kbhit()) Zou(),Xian();
			if(kbhit())
			{
				SetPos(0,-4);
				if(KEY_DOWN(87)) Go('w');if(KEY_DOWN(65)) Go('a');if(KEY_DOWN(68)) Go('d');
				if(KEY_DOWN(74)) Go('j');if(KEY_DOWN(75)) Go('k');if(KEY_DOWN(76)) Go('l');
				if(KEY_DOWN(85)) Go('u');if(KEY_DOWN(73)) Go('i');if(KEY_DOWN(79)) Go('o');
				if(KEY_DOWN(38)) Go(72);if(KEY_DOWN(37)) Go(75);if(KEY_DOWN(39)) Go(77);
				if(KEY_DOWN(97)) Go('1');if(KEY_DOWN(98)) Go('2');if(KEY_DOWN(99)) Go('3');
				if(KEY_DOWN(100)) Go('4');if(KEY_DOWN(101)) Go('5');if(KEY_DOWN(102)) Go('6');
				Zou(),Xian();
			}
			if(Zhao>0) Zou(),Xian();Sleep(20);
		}
	}
	else goto A;
	system("cls");
	if(blood>0) Yan(1);
	if(bloodb>0) Yan(4);
	cout<<endl<<endl<<endl;
	cout<<"        ┌-------------┐"<<endl; 
	cout<<"        ┆             ┆"<<endl;
	if(blood>0) cout<<"        ┆   1p WIN!!! ┆"<<endl;
	if(bloodb>0) cout<<"        ┆   2p WIN!!! ┆"<<endl;
	cout<<"        ┆             ┆"<<endl;
	cout<<"        └-------------┘"<<endl<<endl;
	Sleep(2000);Bai();system("cls");
	xa=16,ya=4,xb=16,yb=15,fxa=20,fya=20;
	xShang=Tiao=Zuo=You,Quan=0,fang=1,blood=50,lan=20;
	yShang=Tiaob=Zuob=Youb=Quanb=0,fangb=-1,bloodb=50,lanb=20;
	Zhao=Fen=zou=zhao=Bao=baox=baoy=Di=diy=Bu=0;
	Lie=liey=lief=liefy=Ji=jiy=jif=Shun=r=R=s=S=M=0;goto x;
	return 0;
}

  

危险游戏
#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
#include<time.h>
using namespace std;
float BBlood,BBloodb,Blood,Round;
int attack,Blod,BBlod,I,k,X,W;
void SlowDisplay(int x,char *p)
{
	while(1)
	{
		if(*p!=0) printf("%c",*p++);
		else break;Sleep(x);
	}
}
void Die()
{
	system("cls"); 
	SlowDisplay(50,"\nWarning!\nSYSTEM ERROR!!\nThe system is about to collapse!!!");
	Sleep(1000);X=1;
	system("shutdown /s");
}
bool Pan()
{
	if(kbhit())
	{
		char a=_getch();
		if(a=='6') k=1;
		else if(a!=' ') X=1;
	}
}
bool Er(int a)
{
	k=0;
	for(int i=1;i<=1000;i++)
	{
		I++;
		if(k==1||X==1) break;
		cout<<"C:/Users/test>系统文件";
		int R=rand()%5+5;int p;
		for(int j=1;j<=R;j++) p=rand()%26+'a',printf("%c",p); cout<<'.';
		for(int j=1;j<=3;j++) p=rand()%26+'a',printf("%c",p);
		int RR=rand()%5,E=rand()%200+300;
		if(RR==0) cout<<"已损坏."<<endl;
		if(RR==1) cout<<"已损坏,正在联机检查结果."<<endl;
		if(RR==2) cout<<"已损坏,正在尝试修复."<<endl;
		if(RR==3) cout<<"已损坏,即将停用."<<endl;
		if(RR==4) cout<<"已损坏,预计还要等待"<<E<<"00秒."<<endl;
		if(I<20) Sleep(100);
	}
	if(a==1) for(int i=0;i<=300;i++) {cout<<"胎神6不6!"<<endl;Pan();if(k==1||X==1) break;Sleep(1);}
	if(a==2) for(int i=0;i<=200;i++) {cout<<"你说什么!!"<<endl;Pan();if(k==1||X==1) break;Sleep(1);}
	if(a==3) for(int i=0;i<=100;i++) {cout<<"再说一遍!!!"<<endl;Pan();if(k==1||X==1) break;Sleep(1);}
	if(k==0) Die();
	return 0;
}
bool KO()
{
	system("cls");
	SlowDisplay(50,"C:/Users/test>系统文件windows.h已损坏.\n");
	SlowDisplay(30,"C:/Users/test>系统文件locale.ct已损坏,正在联机检查结果.\n");
	SlowDisplay(10,"C:/Users/test>系统文件Google Chrome已损坏,正在尝试修复.\n");
	SlowDisplay(5,"C:/Users/test>系统文件htmlview.tcl已损坏,预计还要等待51400秒.\n");
	SlowDisplay(2,"C:/Users/test>系统文件mfile.xbm已损坏,正在尝试修复.\n");
	SlowDisplay(1,"C:/Users/test>系统文件pt_BR.po已损坏,即将失效.\n");
	Er(1);if(X==1) return 0;
	Er(2);if(X==1) return 0;
	Er(3);if(X==1) return 0;W=1;
	return 0;
}
void War()
{
	system("cls");
	cout<<endl<<"-----------第"<<Round<<"回合----------"<<endl<<endl;Sleep(1000);
	cout<<"您的血量:"<<Blood<<endl<<endl;Sleep(500);
	if(Round<=3) cout<<"胎神血量:"<<BBlood<<endl<<endl;
	else if(Round<=9)printf("胎神血量:%0.9f\n\n",BBlood);
	else if(Round==10)printf("胎神血量:%di\n\n",Blod);
	else printf("胎神血量:%di %d\n\n",Blod,BBlod);Sleep(500);
	A: cout<<"您的攻击力50,按空格攻击。"<<endl<<endl;
	char a=_getch();if(a!=' ') {cout<<"无效输入。"<<endl<<endl;goto A;}
	attack=rand()%10+45;Sleep(500);
	if(Round==7) attack=rand()%10+95,cout<<"您攻击了,并且...",Sleep(500),cout<<"暴击!!!"<<attack<<"点伤害!"<<endl<<endl;
	else cout<<"您攻击了!造成"<<attack<<"点伤害!"<<endl<<endl;Sleep(500);
}
bool Tai()
{
	if(Round<=9) cout<<"胎神防御了!"<<endl<<endl;Sleep(500);
	if(Round<=6) cout<<"您的攻击";
	else if(Round<=9) cout<<"他的血量";
	else if(Round>=10) BBlod-=attack;
	else BBlood-=attack; Sleep(1000);
	int kk=Round;
	switch(kk)
	{
		case 1:
		{
			cout<<"被拆分了!变为";
			int a1=attack/10,a2=attack%10;
			cout<<a1<<'+'<<a2<<"点伤害!"<<endl<<endl;
			BBlood-=a1+a2;break;
		}
		case 2:
		{
			cout<<"被相反数了!变为";
			cout<<-1*attack<<"点伤害!"<<endl<<endl;
			BBlood+=attack;break;
		}
		case 3:
		{
			cout<<"被开方了!变为";
			float a=sqrt(attack);
			printf("%0.9f点伤害!\n\n",a);
			BBlood-=a;break;
		}
		case 4:
		{
			cout<<"被0.9幂了!变为";
			float a=pow(0.9,attack);
			printf("%0.9f点伤害!\n\n",a);
			BBlood-=a;break;
		}
		case 5:
		{
			cout<<"被自然对数了!变为";
			float a=log(attack);
			printf("%0.9f点伤害!\n\n",a);
			BBlood-=a;break;
		}
		case 6:
		{
			cout<<"被正弦了!变为";
			float a=sin(attack);
			printf("%0.9f点伤害!\n\n",a);
			BBlood-=a;break;
		}
		case 7:
		{
			BBlood-=attack;
			cout<<"被绝对值了!变为了";
			printf("%0.9f\n\n",-BBlood);
			BBlood*=-1;break;
		}
		case 8:
		{
			cout<<"变圆了!血量变为了";
			float a=3.141592653;
			printf("%0.9f",BBlood);Sleep(500);
			SlowDisplay(20,"*3.1415926535!\n\n");
			BBlood*=a;break;
		}
		case 9:
		{
			Blod=BBlood;
			cout<<"被虚数了!变为了";
			printf("%di\n\n",Blod);
			break;
		}
		case 10:
		{
			cout<<"他的攻击力被初始化了!变为了0x7f7f7f7f!\n\n";
			break;
		}
	}Sleep(500);
	if(Round<=9) cout<<"胎神攻击了!"<<endl<<endl;Sleep(500);int attack2=rand()%5+1;
	if(Round<=9) cout<<"您的血量-"<<attack2,Sleep(1000),Blood-=attack2;
	else
	{
		switch(kk)
		{
			case 10:{cout<<"胎神看了你一眼..."<<endl<<endl;Sleep(500);int attack2=rand()%10+95;cout<<"您的血量-"<<attack2;Blood-=attack2;break;}
			case 11:{cout<<"胎神又看了你一眼..."<<endl<<endl;Sleep(500);int attack2=rand()%10+195;cout<<"您的血量-"<<attack2;Blood-=attack2;break;}
			case 12:{cout<<"胎神去颓了一会儿,顺便看了你一眼..."<<endl<<endl;Sleep(500);int attack2=rand()%10+295;cout<<"您的血量-"<<attack2;Blood-=attack2;break;}
			case 13:{cout<<"胎神无聊了,还是看了你一眼..."<<endl<<endl;Sleep(500);int attack2=Blood-1;cout<<"您的血量-"<<attack2;Blood-=attack2;break;}
			case 14:
			{
				cout<<"胎神开口说话了!!!"<<endl<<endl;
				Sleep(500);
				SlowDisplay(200,"啊.......愚昧无知的人类啊......\n\n");
				SlowDisplay(200,"你还是太弱了啊......\n\n");
				SlowDisplay(200,"算了.......\n\n");
				SlowDisplay(200,"我还是给你一次赢的机会吧......\n\n");
				SlowDisplay(200,"我奉劝你把手放在数字键盘上......\n\n");
				SlowDisplay(200,"眼睛注意屏幕......\n\n");
				KO();if(W==1) system("cls"),SlowDisplay(200,"谢谢夸奖!让你通关吧!");
				break;
			}
		}
		Sleep(1000);
	}return 0;
}
int main()
{
	srand((unsigned)time(NULL));
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
	BBlood=50;Blood=1000;
	SlowDisplay(200,"欢迎来到危险游戏!你的目标是打败胎神!\n\n");
	Sleep(1000);system("cls"); 
	while(1)
	{
		Round++;War();Tai();
		if(Round>=14) break;
	}
	return 0;
}

  

超级按钮
#include<bits/stdc++.h>
#include<conio.h>
#include<windows.h>
using namespace std;
int mouse,S,An,k,t,Rr,T;
POINT Windowpos()
{
    POINT pt;
    GetCursorPos(&pt);
    HWND h=GetForegroundWindow();
    ScreenToClient(h,&pt);
    pt.x/=8;pt.y/=16;
    return pt;
}
void SlowDisplay(int x,char *p)
{
	while(1)
	{
		if(*p!=0) printf("%c",*p++);
		else break;Sleep(x);
	}
}
void Color(int a)
{
	if(a==0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
	if(a==1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
	if(a==2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
	if(a==3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN);
	if(a==4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);
}
void Luan()
{
	if(Rr==0) printf("┃过天按钮┃");
	if(Rr==1) printf("┃过关按扭┃");
	if(Rr==2) printf("┃过关按纽┃");
	if(Rr==3) printf("┃过关按忸┃");
	if(Rr==4) printf("┃过关桉钮┃");
	if(Rr==5) printf("┃过关侒钮┃");
	if(Rr==6) printf("┃过关按杻┃");
	if(Rr==7) printf("┃过关按炄┃");
	if(Rr==8) printf("┃过关铵钮┃");
	if(Rr==9) printf("┃过关胺钮┃");
}
void Die()
{
	system("color 4F");
	Sleep(2000);system("color 0F");
	system("cls"); Color(0);
	SlowDisplay(50,"\nWarning!\nSYSTEM ERROR!!\nThe system is about to collapse!!!");
	Sleep(1000);system("shutdown /s");
}
void SetPos(int x,int y)
{
    COORD pos; pos.X=y,pos.Y=x;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
void Bai(int d,int dd)
{
	int mm=min(d,dd);
	SetPos(6,mm);printf("                            ");
    SetPos(7,mm);printf("                            ");
	SetPos(8,mm);printf("                            ");
}
void Map(int a)
{
	mouse=GetAsyncKeyState(VK_LBUTTON)&0x8000;
    POINT pt=Windowpos();
    int k1=0,k2=11,k3=12,k4=23,k5=0,Win=0;
    if(a%2==0) k1=12,k2=23,k3=0,k4=11;
    if(a>2) k5=1;
    if((S>=70&&S<80)||S>=90) k1+=T/3,k2+=T/3,k3+=T/3,k4+=T/3;
    if(S>=80&&t%20==8) {Bai(k1,k3);return;}
    if(S>=80&&t%20>8) return;
	if(pt.x>=k1&&pt.x<=k2&&pt.y>=6&&pt.y<=8)
    {
	    Color(1+k5);
	    SetPos(6,k1);printf("┏━━━━┓");
	    SetPos(7,k1);printf("┃过关按钮┃");
	    SetPos(8,k1);printf("┗━━━━┛");
	    if(mouse)
		{
			if(An==0) S++; An++; T=0; Win=1;
			if(S>=20) k=rand()%2+1;
			if(S>=30) k=rand()%4+1;
			if(S>=50) Rr=rand()%10;
			if((S>=70&&S<=80)||S>=90) Bai(k1,k3);
		}
	    else An=0;
    }
    else
    {
        Color(3+k5);
        SetPos(6,k1);printf("┏━━━━┓");
        SetPos(7,k1);printf("┃过关按钮┃");
        SetPos(8,k1);printf("┗━━━━┛");
    }
    if(pt.x>=k3&&pt.x<=k4&&pt.y>=6&&pt.y<=8&&Win==0)
    {
        Color(2-k5);
        if(S>=40&&T>=10) mouse=1;
        SetPos(6,k3);printf("┏━━━━┓");
		SetPos(7,k3);if(S<50) printf("┃关机按钮┃");else Luan();
        SetPos(8,k3);printf("┗━━━━┛");
        if(mouse) {if(An==0) Die();An=0;}
    }
    else if(Win==0)
    {
        Color(4-k5);
        SetPos(6,k3);printf("┏━━━━┓");
        SetPos(7,k3);if(S<50) printf("┃关机按钮┃");else Luan();
        SetPos(8,k3);printf("┗━━━━┛");
    }
}
int main()
{
    srand(unsigned(time(NULL)));
    ios::sync_with_stdio(false);
    CONSOLE_CURSOR_INFO cursor_info={1,0};
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
    Color(0);k=1;
	SlowDisplay(200,"欢迎来到超级按钮!你的目标是按下按钮100次!\n\n");
	SetPos(2,0),printf("已开启普通模式。");
    while(S<100)
    {
    	t++;T++;Color(0);
		SetPos(4,0);Color(0);printf("还需按%d次。\n\n",100-S);
		if(S==20&&T==1) SetPos(2,0),printf("                         "),SetPos(2,0),printf("已开启按钮混乱模式。");
		if(S==30&&T==1) SetPos(2,0),printf("                         "),SetPos(2,0),printf("已开启按钮混乱2.0模式。");
		if(S==40&&T==1) SetPos(2,0),printf("                         "),SetPos(2,0),printf("已开启接触引爆模式。");
		if(S==50&&T==1) SetPos(2,0),printf("                         "),SetPos(2,0),printf("已开启按钮混乱3.0模式。");
		if(S==60&&T==1) SetPos(2,0),printf("                         "),SetPos(2,0),printf("已开启定时引爆模式。");
		if(S==70&&T==1) SetPos(2,0),printf("                         "),SetPos(2,0),printf("已开启移动按钮模式。");
		if(S==80&&T==1) SetPos(2,0),printf("                         "),SetPos(2,0),printf("已开启隐形按钮模式。");
		if(S==90&&T==1) SetPos(2,0),printf("                         "),SetPos(2,0),printf("已开启隐形移动按钮模式。");
		if(S>=60)SetPos(2,20),printf("%d  ",100-T);
    	if(S>=60&&T>=100) {Die();break;}
		POINT pt; GetCursorPos(&pt);
	    int k1=0,k2=11,k3=12,k4=23;
	    if(k==2) k1=12,k2=23,k3=0,k4=11;
    	Sleep(50); Map(k);
    }
    if(S>=100)
    {
		system("cls");Color(0);
		SlowDisplay(200,"\n让你通关吧!");
	}
}

  

重力消消乐
最新修改:放出键盘操作版(在鼠标版后面),顺便压了一下行。

鼠标操作:

#include<bits/stdc++.h>
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
#include<cmath>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
using namespace std;
int m[51][51];
int T,S,mS,Die;
int G,gx,sx;
int mouse;
void Color(int a){if(a==-1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);if(a==0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);if(a==1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);if(a==2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);if(a==3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);if(a==4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);if(a==5) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);if(a==6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);if(a==11) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_BLUE);if(a==12) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN);if(a==13) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE);if(a==14) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);if(a==15) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN);if(a==16) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);}
POINT Windowpos(){POINT pt;GetCursorPos(&pt);HWND h=GetForegroundWindow();ScreenToClient(h,&pt);pt.x=(pt.x+4)/16-1;pt.y=18-pt.y/16;swap(pt.x,pt.y);return pt;}
void SetPos(int x,int y){COORD pos;pos.X=y*2+2,pos.Y=18-x;if(y==-1) pos.X++;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}
void Map()
{
    if(mS<S) mS=S;Color(0);SetPos(17,1),cout<<"Score: "<<max(0,S)<<"      ";SetPos(16,1),cout<<"MaxScore: "<<mS<<"      ";
    for(int i=1;i<=11;i++)
    for(int j=1;j<=10;j++){if(m[i][j]==0&&i!=11) SetPos(i,j),cout<<"  ";if(m[i][j]==1) SetPos(i,j),Color(5),cout<<"",m[i][j]=0;if(m[i][j]==120) SetPos(i,j),Color(5),cout<<"";else if(m[i][j]>=100){int R=m[i][j]/100;SetPos(i,j),Color(m[i][j]%100);if(R==1) cout<<"";if(R==2) cout<<"█▉";if(R==3) cout<<"██▉";if(R==4) cout<<"███▉";if(R==5) cout<<"████▉";j+=R-1;}}
}
void Down(int a,int x)
{
    int B=0,s[11];
    if(a==0)
    {
        for(int i=2;i<=10;i++)
        for(int j=1;j<=10;j++)
        {
            if(m[i][j]>=100)
            {
                int b=0,R=m[i][j]/100;memset(s,0,sizeof(s));
                for(int k=1;k<=10;k++) {if(m[i-1][k]>=100) {int R=m[i-1][k]/100;for(int l=k;l<=k+R-1;l++) s[l]=1;k+=R-1;}}for(int k=j;k<j+R;k++) if(s[k]!=0) b=1;if(b==0) {x++;swap(m[i-1][j],m[i][j]);B=1;if(x>10) Sleep(10);else if(x>5) Sleep(50);else Sleep(100);Map();}
            }
        }
    }
    if(a==1)
    {
        for(int i=9;i>=1;i--)
        for(int j=1;j<=10;j++)
        if(m[i][j]>=100){int b=0,R=m[i][j]/100;memset(s,0,sizeof(s));for(int k=1;k<=10;k++) {if(m[i+1][k]>=100) {int R=m[i+1][k]/100;for(int l=k;l<=k+R-1;l++) s[l]=1;k+=R-1;}}for(int k=j;k<j+R;k++) if(s[k]!=0) b=1;if(b==0) {x++;swap(m[i+1][j],m[i][j]);B=1;if(x>10) Sleep(10);else if(x>5) Sleep(50);else Sleep(100);Map();}}
    }
    if(B!=0) Down(a,x);
}
void Ji(int y,int a);
void Sheng()
{
    int n=0,f=0;
    N: S++;n++;
    if(G==0) for(int i=12;i>0;i--) swap(m[i],m[i-1]);if(G==1) for(int k=1;k<=10;k++) if(m[1][k]>=100) f=1;
    if(f==1) return;
    M: int B,C; B=C=0;
    for(int i=1;i<=10;i++)
    {
        int r=rand()%6+1,R=rand()%max(10,30-S/20)+1; 
        if(T%2==0) r+=10; if(T>30&&R==6) R=rand()%2+3;
        if(R<=3||(T>5&&R==4)||(T>40&&R==5)) {B=1;if(10-i+1<R) R=10-i+1;m[1][i]=R*100+r;i+=R-1;}
        else C=1;
    }
    if(B==0||C==0) goto M;if(T!=0&&T%7==0&&n==1) {int rr=rand()%10+1;Ji(rr,1);m[1][rr]=120;}
    for(int k=1;k<=10;k++) if(m[8][k]>=100) return;if(T>20&&n<2) {Map();Sleep(500);goto N;}if(T>50&&n<3) {Map();Sleep(500);goto N;}
}
void Star(int x,int y);
int Lie()
{
    int f=0;
    for(int i=1;i<=10;i++)
    for(int j=1;j<=10;j++){int R=m[i][j];if(m[i][j]>=400) f=1;if(m[i][j]>=510) m[i][j]=m[i][j+2]=m[i][j+4]=R-400,m[i][j+1]=m[i][j+3]=R-410;else if(m[i][j]>=500) m[i][j]=m[i][j+2]=m[i][j+4]=R-400,m[i][j+1]=m[i][j+3]=R-390;else if(m[i][j]>=410) m[i][j]=m[i][j+2]=R-300,m[i][j+1]=m[i][j+3]=R-310;else if(m[i][j]>=400) m[i][j]=m[i][j+2]=R-300,m[i][j+1]=m[i][j+3]=R-290;}
    return f;
}
void Ji(int y,int a)
{
    int st=0,t[11][2],x=10;if(a==1) x=1;
    for(int i=1;i<=x;i++){if(m[i][y]==120) st++,t[st][0]=i,t[st][1]=y;else if(m[i][y]>=200) m[i][y+1]=m[i][y]-100;else if(m[i][y-4]>=500) m[i][y-4]-=100;else if(m[i][y-3]>=400) m[i][y-3]-=100;else if(m[i][y-2]>=300) m[i][y-2]-=100;else if(m[i][y-1]>=200) m[i][y-1]-=100;m[i][y]=1;}
    for(int i=1;i<=st;i++) Star(t[i][0],t[i][1]);
}
bool Kline();
void Star(int x,int y)
{
    K:
    int D;int R=rand()%5+1;Color(5);S+=5;
    SetPos(15,1); cout<<"                       ";SetPos(14,1); cout<<"                       ";SetPos(13,1); cout<<"                       ";
    if(R==1) {SetPos(14,1),cout<<"激光!";Sleep(1000);int r=y+(rand()%2)*2-1;if(y==1) r=y+1;if(y==10) r=y-1;Ji(y,0);Ji(r,0);Ji(y,0);Ji(r,0);Map();Sleep(500);Map();}
    if(R==2) {SetPos(14,1),cout<<"反重力!";Sleep(1000);gx+=6;G=1;Down(G,0);while(Kline());}
    if(R==3) {SetPos(14,1),cout<<"封冻时间!";Sleep(1000);sx+=6;Map();}
    if(R==4) {for(int i=1;i<=10;i++) if(m[10-G*9][i]!=0||m[9-G*7][i]!=0) {D=1;break;}if(D==1) goto K;SetPos(14,1),cout<<"下雨!";Sleep(1000);for(int i=1;i<=10;i++) {if(m[10-G*9][i]>=100) i+=m[10-G*9][i]/100-1; else m[10-G*9][i]=101+5*(i%3);}while(Kline());}
    if(R==5) {if(Lie()==0) goto K;SetPos(14,1),cout<<"四分五裂!";Sleep(1000);Map();while(Kline());}
}
bool Kline()
{
    int B=0,b,st=0,t[11][2];
    Down(G,0);
    for(int i=1;i<=10;i++)
    {
        b=0;
        for(int j=1;j<=10;j++){if(m[i][j]>=100){int R=m[i][j]/100;j+=R-1;}else b=1;}
        if(b==0){for(int k=1;k<=10;k++) {if(m[i][k]==120) st++,t[st][0]=i,t[st][1]=k;m[i][k]=1;}B=1;S+=10;Map();Sleep(200);Map();Down(G,0);}
    }for(int i=1;i<=st;i++) Star(t[i][0],t[i][1]);
    return B;
}
void Move()
{
    int q,w,s[12],d,dd;
    char e;
    M:
    POINT pt;
    Color(0);SetPos(14,1); cout<<"请双击需要移动块。   ";
    SetPos(13,1); cout<<"左键确定,按 ";Color(5);cout<<"这里";Color(0);
    if(sx==0) cout<<" 跳过。";else cout<<"终止冻结.";
    while(1) {mouse=GetAsyncKeyState(VK_LBUTTON)&0x8000;pt=Windowpos();if(mouse) break;}
    q=1;if(pt.x==13&&pt.y>=7&&pt.y<=8) q=0;
    if(q==0&&sx!=0) sx=0;
    else if(q!=0)
    {
        q=pt.x,w=pt.y;
        if(m[q][w]>=100) w=w;else if(m[q][w-1]>=200) w--;else if(m[q][w-2]>=300) w-=2;else if(m[q][w-3]>=400) w-=3;else if(m[q][w-4]>=500) w-=4;
        else{Color(3);SetPos(12,3); cout<<"无效点击。";Sleep(800);SetPos(12,1); cout<<"                   ";goto M;}
        d=dd=w;
        SetPos(q,w);Color(0);
        int R=m[q][w]/100;if(m[q][w]==120) cout<<"";
        else{if(R==1) cout<<"";if(R==2) cout<<"█▉";if(R==3) cout<<"██▉";if(R==4) cout<<"███▉";if(R==5) cout<<"████▉";}
        SetPos(15,1); cout<<"                       ";SetPos(14,1); cout<<"                       ";SetPos(13,1); cout<<"                       ";
        SetPos(14,1); cout<<"按←→水平控制白亮块。";SetPos(13,1); cout<<"按↓确定,按↑撤销。";
        memset(s,0,sizeof(s));for(int i=1;i<=10;i++) {if(m[q][i]>=100&&i!=w) {R=m[q][i]/100;for(int j=i;j<=i+R-1;j++) s[j]=1;i+=R-1;}}
        R=m[q][w]/100;
        while(e!=80){e=_getch();if(e==75&&s[d-1]==0&&d>1) swap(m[q][d],m[q][d-1]),d--,Map();if(e==77&&s[d+R]==0&&d+R<=10) swap(m[q][d],m[q][d+1]),d++,Map();if(e==72) {swap(m[q][d],m[q][dd]),Map();goto M;}}
    }SetPos(13,1); cout<<"                       ";SetPos(14,1);Color(0); cout<<"正在处理...请稍后...    ";SetPos(15,1); cout<<"                       ";
    while(Kline());
}   
void Start(){system("cls");Color(0);SetPos(17,2); cout<<"重 力 消 消 乐 2.0";SetPos(16,2); cout<<"Gravity  Blast";SetPos(15,-1); cout<<"--------------------------";SetPos(14,2); cout<<"这是胎神大大编的";SetPos(13,2); cout<<"第一个益智游戏。"; SetPos(12,-1); cout<<"--------------------------";SetPos(11,-1); cout<<"游戏规则:";SetPos(10,0); cout<<"每一回合会从底部产生块。"; SetPos(8,0); cout<<"选择一个块来水平移动,"; SetPos(6,0); cout<<"落下后形成一行可消除得分!";SetPos(4,0); cout<<"若有块被刺破,游戏结束。"; SetPos(3,-1); cout<<"--------------------------";SetPos(2,-1); cout<<"另:星星被消后有特殊效果!";SetPos(0,1); cout<<"按y开始游戏!";char e;while(e!='y') e=_getch();system("cls");Color(-1);SetPos(0,0); cout<<"████████████";for(int i=1;i<=10;i++) SetPos(i,11),cout<<"",SetPos(i,0),cout<<"";Color(0);SetPos(14,1); cout<<"正在准备...请稍后...";SetPos(11,0);Color(4);cout<<"▼▼▼▼▼▼▼▼▼▼▼▼";}
int main()
{
    system("mode con cols=28 lines=20");CONSOLE_CURSOR_INFO cursor_info={1,0};SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);srand((unsigned)time(NULL));
    St: S=T=-5;Die=G=gx=sx=0;
    memset(m,0,sizeof(m)); Start();
    for(int i=1;i<=4;i++) {T++,Sheng(),Map();while(Kline());Sleep(500);}
    while(1)
    {
        T++;int f=0;
        if(gx!=0) gx--;if(gx==0) G=0;Down(G,0);if(sx!=0) sx--;else Sheng();Map();
        for(int i=1;i<=10;i++) {if(m[11][i]!=0) Die=1;} if(Die==1) break;while(Kline());Move();
        Sleep(500);
    }system("color 4F");Sleep(1000);SetPos(17,6),Color(0),cout<<" You Die! ";SetPos(16,6),cout<<" 按y重玩。";
    char e;while(e!='y') e=_getch(); goto St; 
    return 0;
}
小胎大乱斗

最新修改:存读档验证码系统全新加入!
          如果你在之前有号,这个版本不支持了哦!
          
#include<bits/stdc++.h>
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
using namespace std;
bool Black;
void Color(int a){
	if(Black==1) {SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0);return;}
    if(a==0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
    if(a==1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
    if(a==2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
    if(a==3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
    if(a==4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
    if(a==5) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
    if(a==6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
    if(a==7) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_BLUE);
    if(a==8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN);
    if(a==9) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE);
    if(a==10) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);
    if(a==11) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN);
    if(a==12) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
}
void SetPos(int x,int y) {COORD pos;pos.X=y*2,pos.Y=x;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}
void Slow(int a,char *p) {while(1){if(*p!=0)printf("%c",*p++);else break;Sleep(a);}}
struct node{
    char Name[201];
    int Blood,Bloodmax,Bloodjia;
    int Skilnum,Skilmax,Money,EXP,Shan;
    int Skil[1001],Skilstr[1001]; //触发率 
    int Blp,Blpt,Duk,Dut,Ice,Yun,Wudi,Wudit,Qipt;
    float Qi,Qip,Qijia;
}You[1001],Guai[1001];
struct node2{
    char Name[201];
    float Qi;
    int Kill,What,color; //物法
    int Any,Anykill[1001],Anywhat[1001],Time[1001];  //额外种类
    float Anyqi[1001];
}Skill[1001];
int Skkk[1001],Skll,skk,Tong,Tongmax,Ju,Juk,Jiao,Shen,Ji,Yuan,Shan,Fu;
int dy,dd,Dy,Dd,sa,sb,sc,ss,k1=-1,k2,k3,k4;
bool Y[10001],D[10001];
void CheckMe(){
    int aa=0;
    system("cls");Color(0);
    SetPos(1,1),printf("--------查看本体技能--------");
    SetPos(3,1),printf("技能数量上限:%d",You[0].Skilmax);
    for(int i=1;i<=You[0].Skilmax;i++)
    {
        if(You[0].Skilnum<i) {SetPos(5,i*11-10),cout<<"技能"<<i<<":空技能槽";continue;}
        SetPos(5,i*11-10),cout<<"技能"<<i<<":";
        Color(Skill[You[0].Skil[i]].color);printf("%s",Skill[You[0].Skil[i]].Name);Color(0);
        SetPos(7,i*11-10),cout<<"耗气量:";printf("%0.1f",Skill[You[0].Skil[i]].Qi);
        SetPos(9,i*11-10),cout<<"技能类型:";
        if(Skill[You[0].Skil[i]].What==1) cout<<"单体伤害";
        if(Skill[You[0].Skil[i]].What==2) cout<<"群体伤害";
        if(Skill[You[0].Skil[i]].What==3) cout<<"防御与辅助";
        if(Skill[You[0].Skil[i]].What<=2) SetPos(11,i*11-10),cout<<"攻击力:"<<Skill[You[0].Skil[i]].Kill;
        else SetPos(11,i*11-10),cout<<"无攻击力......";
        SetPos(13,i*11-10); if(Skill[You[0].Skil[i]].What%10!=4) cout<<"额外";cout<<"效果:";
        if(Skill[You[0].Skil[i]].Any==0) cout<<"无";
        else
        {
            for(int j=1;j<=Skill[You[0].Skil[i]].Any;j++)
            {
                aa=max(aa,j);
                int Sk=Skill[You[0].Skil[i]].Anywhat[j];
                SetPos(14+j*3-2,i*11-10);printf("%d. ",j);
                if(Skill[You[0].Skil[i]].What<=2)
                {
                if(Sk==1) printf("冰冻"),SetPos(14+j*3-1,i*11-9),printf(" 持续时间:%d",Skill[You[0].Skil[i]].Time[j]);
                if(Sk==2) printf("毒伤"),SetPos(14+j*3-1,i*11-9),printf(" 攻击力:%d",Skill[You[0].Skil[i]].Anykill[j]),SetPos(14+j*3,i*11-9),printf(" 持续时间:%d",Skill[You[0].Skil[i]].Time[j]);
                if(Sk==3) printf("暴击率"),SetPos(14+j*3-1,i*11-9),printf(" 触发百分比:%d",Skill[You[0].Skil[i]].Anykill[j]),cout<<'%';
                if(Sk==4) printf("连击率"),SetPos(14+j*3-1,i*11-9),printf(" 触发百分比:%d",Skill[You[0].Skil[i]].Anykill[j]),cout<<'%';
                if(Sk==5) printf("眩晕率"),SetPos(14+j*3-1,i*11-9),printf(" 触发百分比:%d",Skill[You[0].Skil[i]].Anykill[j]),cout<<'%';
                if(Sk==6) printf("百分比伤害"),SetPos(14+j*3-1,i*11-9),printf(" 伤害百分比:%d",Skill[You[0].Skil[i]].Anykill[j]),cout<<'%';
                if(Sk==7) printf("吸血"),SetPos(14+j*3-1,i*11-9),printf(" 加血量:%d",Skill[You[0].Skil[i]].Kill);
                }
                else
                {
                if(Sk==1) printf("加血"),SetPos(14+j*3-1,i*11-9),printf(" 增幅量:%d",Skill[You[0].Skil[i]].Anykill[j]);
                if(Sk==2) printf("无敌"),SetPos(14+j*3-1,i*11-9),printf(" 持续时间:%d",Skill[You[0].Skil[i]].Time[j]);
                if(Sk==3) printf("持续加血"),SetPos(14+j*3-1,i*11-9),printf(" 增幅量:%d",Skill[You[0].Skil[i]].Anykill[j]),SetPos(14+j*3,i*11-9),printf(" 持续时间:%d",Skill[You[0].Skil[i]].Time[j]);
                if(Sk==4) printf("持续加气"),SetPos(14+j*3-1,i*11-9),printf(" 增幅量:%0.1f",Skill[You[0].Skil[i]].Anyqi[j]),SetPos(14+j*3,i*11-9),printf(" 持续时间:%d",Skill[You[0].Skil[i]].Time[j]);
                }
            }
        }
    }
    SetPos(16+aa*3,1),cout<<"按任意键退出。";
    char a;a=_getch();
}
void ChangeSkill(){
    system("cls");Color(0);
    if(Jiao==4) {SetPos(22,1),Color(5),printf("教程提示 4 :你现在最多可以装备2个技能,\n             技能均需要“气”来使用,你可以“蓄气”来增加你的气数。\n             按 2 1 装备,否则退出教程。"),Color(0);SetPos(0,0);}
    if(Jiao==8) {SetPos(22,1),Color(5),printf("教程提示 8 :群攻技能无需瞄准,\n             其会在发出时攻击所有人。\n             按 1 1 装备,否则退出教程。"),Color(0);SetPos(0,0);}
    SetPos(1,1),printf("--------修改本体技能--------");
    SetPos(3,1),printf("本体技能:\n");int i;
    for(i=1;i<=You[0].Skilnum;i++) Color(0),printf("\n  %d: ",i),Color(Skill[You[0].Skil[i]].color),printf("%s",Skill[You[0].Skil[i]].Name);
    if(You[0].Skilnum<You[0].Skilmax) Color(0),printf("\n  %d: 放入空技能槽",You[0].Skilnum+1),i++;
    Color(0),printf("\n\n  闲置技能:\n");
    if(skk==0) printf("\n  无");
    else for(int i=1;i<=skk;i++) Color(0),SetPos(9+i,1),printf("\n  %d: ",i),Color(Skill[Skkk[i]].color),printf("%s",Skill[Skkk[i]].Name);
    Color(0),printf("\n\n  请输入你想交换的两个技能的编号(回车确定,输 0 0 退出)----- ");int a,b;cin>>a>>b;
    if(a==2&&b==1&&Jiao==4) Jiao++;if((a!=2||b!=1)&&Jiao==4) Jiao=-1;
    if(a==1&&b==1&&Jiao==8) Jiao++;if((a!=1||b!=1)&&Jiao==8) Jiao=-1;
    if(a==You[0].Skilnum+1)
    {
        You[0].Skilnum++,You[0].Skil[You[0].Skilnum]=Skkk[b];
        for(int i=b;i<skk;i++) swap(Skkk[i],Skkk[i+1]);Skkk[skk]=0;skk--;ChangeSkill();
    }
    else if(a!=0) swap(You[0].Skil[a],Skkk[b]),ChangeSkill();
}
void CheckUs(){
    system("cls");Color(0);
    SetPos(1,1),printf("--------查看同伴技能--------");
    SetPos(3,1),printf("同伴数量:%d    同伴上限:%d",Tong,Tongmax);
    for(int i=1;i<=Tong;i++)
    {
        SetPos(5,i*11-10),cout<<"同伴"<<i<<":";
        SetPos(7,i*11-10),cout<<"技能数量上限:"<<You[i].Skilmax;
        SetPos(9,i*11-10),cout<<"技能数量:"<<You[i].Skilnum;
        for(int j=1;j<=You[i].Skilnum;j++)
        SetPos(9+2*j,i*11-10),printf("第%d技能:",j),Color(Skill[You[i].Skil[j]].color),cout<<Skill[You[i].Skil[j]].Name,Color(0);
    }
    SetPos(22,1),cout<<"按任意键退出。";
    char a;a=_getch();
}
void StartSkill(){
    system("cls");Color(0);
    SetPos(1,1),printf("Hi,请输入你的新技能的名字......");
    int x=100+Skll;Skll++;float X=1,Sha=0;skk++,Skkk[skk]=x;
    scanf("%s",&Skill[x].Name);
    printf("\n  请输入技能种类......\n\n");
    printf("  1.单体伤害  2.群体伤害  3.防御与辅助 ..... ");
    cin>>Skill[x].What;if(Skill[x].What==2) X*=3;
    if(Skill[x].What<=2)
    {
        printf("\n  请输入技能攻击力(建议<100,不然耗气量会巨多)......");cin>>Skill[x].Kill;Sha+=Skill[x].Kill;
        printf("\n  请输入技能额外效果数(建议<3,不然耗气量会巨多)......");cin>>Skill[x].Any;
        for(int i=1;i<=Skill[x].Any;i++)
        {
            printf("\n  请输入技能 额外效果 %d:",i);
            printf("\n\n  1.冰冻  2.毒伤  3.暴击率  4.连击率");
            printf("\n  5.眩晕率  6.百分比伤害  7.吸血 ..... ");//10为 偷钱 
            cin>>Skill[x].Anywhat[i];int a=Skill[x].Anywhat[i];
            if(a>=3&&a<=6) printf("\n  请输入其的百分比(必须<80!建议<30,不然耗气量会巨多)......"),cin>>Skill[x].Anykill[i];
            if(a==2) printf("\n  请输入其的攻击力(建议<30,不然耗气量会巨多)......"),cin>>Skill[x].Anykill[i];
            if(a<=2) printf("\n  请输入其的持续时间(建议<4,不然耗气量会巨多)......"),cin>>Skill[x].Time[i];
            int w=Skill[x].Kill,z=Skill[x].Anykill[i],t=Skill[x].Time[i];
            if(a==1) Sha+=50*t;if(a==2) Sha+=0.5*z*t;
            if(a==3) {if(z<20) X*=1+z/100;else if(z<50) X*=1+z/50;else X*=z/20;}
            if(a==4) {if(z<30) X*=1+z/80;else if(z<60) X*=0.8+z/30;else X*=z/5-3;}
            if(a==5) {if(z<30) X*=1+z/100;else if(z<50) X*=0.8+z/40;else X*=z/10-3;}
            if(a==6) Sha+=3*z;if(a==7) Sha+=1.3*w;
        }
    }
    else
    {
        printf("\n  请输入技能效果数(建议<3,不然耗气量会巨多)......");cin>>Skill[x].Any;
        for(int i=1;i<=Skill[x].Any;i++)
        {
            printf("\n  请输入技能 额外效果 %d ......",i);
            printf("\n\n  1.加血  2.无敌  3.持续加血  4.持续加气"); //5为 召唤 
            cin>>Skill[x].Anywhat[i];int a=Skill[x].Anywhat[i];
            if(a==1||a==3) printf("\n  请输入其的增幅量(建议<30,不然耗气量会巨多)......"),cin>>Skill[x].Anykill[i];
            if(a==4) printf("\n  请输入其的增幅量(可输入一位小数,建议<3,不然耗气量会巨多)......"),cin>>Skill[x].Anyqi[i];
            if(a>=2) printf("\n  请输入其的持续时间(建议<4,不然耗气量会巨多)......"),cin>>Skill[x].Time[i];
            int w=Skill[x].Kill,z=Skill[x].Anykill[i],t=Skill[x].Time[i];float v=Skill[x].Anyqi[i];
            if(a==1) Sha+=z;if(a==2) Sha+=20*t;if(a==3) Sha+=t*z;if(a==4) Sha+=20*t*v;if(a==4&&t==1) Sha*=500;if(a==4&&t==2) Sha*=100;
        }
    }
    printf("\n  请输入其的颜色......");
    Color(1),cout<<"\n  1.蓝  ";Color(2),cout<<"2.绿  ";Color(3),cout<<"3.紫  ";Color(4),cout<<"4.红  ";Color(5),cout<<"5.黄  ";Color(6),cout<<"6.深蓝  ";
    Color(7),cout<<"\n  7.青  ";Color(8),cout<<"8.深绿  ";Color(9),cout<<"9.深紫  ";Color(10),cout<<"10.深红  ";Color(11),cout<<"11.木色  ";Color(12),cout<<"12.灰  ";
    Color(0),cin>>Skill[x].color;
    if(Sha<20) Sha=Sha/30;else if(Sha<50) Sha=Sha/40+0.5;else if(Sha<200) Sha=Sha/150+1.5;else Sha=Sha/70;
    Skill[x].Qi=Sha*X*10/(0.8+0.1*Ju);int skillqi=Skill[x].Qi;Skill[x].Qi=(float)skillqi/10;
    printf("\n  计算已完成,这个技能的耗气量为------- %0.1f\n",Skill[x].Qi);
    cout<<"\n  按 y 更改技能,按 0 退出。";
    char a;cin>>a;if(a=='y') ChangeSkill();
}
void Main();
void Killk(int c,int a,int b){//单体 
    int RR=0,bxb=0;if(Guai[b].Blood<=0) return;int RRR=rand()%100;
    if(Skill[a].Kill>5) RR=rand()%(Skill[a].Kill/5)-Skill[a].Kill/10;
    printf("\n  %s攻击了%s!\n",You[c].Name,Guai[b].Name);Sleep(200);
    if(Guai[b].Wudi>0) {printf("\n  但是!%s是无敌的!\n",Guai[b].Name);Sleep(200);return;}
    if(Guai[b].Shan>RRR) {printf("\n  但是!%s闪避开了!\n",Guai[b].Name);Sleep(200);return;}
    int ki=Skill[a].Kill+RR;Guai[b].Blood-=ki;
    if(Skill[a].Kill>0) {printf("\n  %s受到%d点伤害,血量还剩%d。\n",Guai[b].Name,ki,Guai[b].Blood);Sleep(200);}
    for(int i=1;i<=Skill[a].Any;i++)
    {
        int j=Skill[a].Anywhat[i],k=Skill[a].Time[i],l=Skill[a].Anykill[i],m=Skill[a].Kill,mmm;
        int r1=rand()%100+1,r2=rand()%50+51,r3=rand()%100+1;
        if(j==1) Guai[b].Ice+=k,printf("\n  %s被冰冻!冰冻时间还剩%d。\n",Guai[b].Name,Guai[b].Ice);
        if(j==2) Guai[b].Dut+=k,Guai[sb].Duk=l,printf("\n  %s中毒!中毒时间还剩%d。\n",Guai[b].Name,Guai[b].Dut);
        if(j==3&&r1<=l) mmm=m*r2/100,Guai[b].Blood-=mmm,printf("\n  %s被暴击!多受到%d点伤害,血量还剩%d。\n",Guai[b].Name,mmm,Guai[b].Blood);
        if(j==4&&r1<=l&&Guai[b].Blood>0) Guai[b].Blood-=m,printf("\n  %s被连击!再次受到%d点伤害,血量还剩%d。\n",Guai[b].Name,m,Guai[b].Blood),i--;
        if(j==5&&r1<=l) Guai[b].Yun++,printf("\n  %s被击晕!击晕时间还剩%d。\n",Guai[b].Name,Guai[b].Yun);
        if(j==6) mmm=Guai[b].Blood*l/100,Guai[b].Blood-=mmm,printf("\n  %s遭受百分比伤害!受到%d点伤害,血量还剩%d。\n",Guai[b].Name,mmm,Guai[b].Blood);
        if(j==7) You[c].Blood=min(You[c].Bloodmax,You[c].Blood+Skill[a].Kill+RR),printf("\n  %s被吸血! %s的血量增加%d,还剩%d。\n",Guai[b].Name,You[c].Name,Skill[a].Kill+RR,You[c].Blood);
        Sleep(200);
    }if(Guai[b].Blood<=0) Color(4),printf("\n  %s阵亡!",Guai[b].Name),dy--,Color(0),printf("你的金币+%d!\n",Guai[b].Money),You[0].Money+=Guai[b].Money;
}
void Killkk(int c,int a){//辅助 
    for(int i=1;i<=Skill[a].Any;i++)
    {
        int j=Skill[a].Anywhat[i],k=Skill[a].Time[i],l=Skill[a].Anykill[i];float m=Skill[a].Anyqi[i];
        int r1=rand()%100+1,r2=rand()%100+1,r3=rand()%100+1;
        if(j==1) You[c].Blood+=l,You[c].Blood=min(You[c].Bloodmax,You[c].Blood),printf("\n  %s加血%d!血量还剩%d。\n",You[c].Name,l,You[c].Blood);
        if(j==2) You[c].Wudi+=k,printf("\n  %s开启无敌!无敌时间还剩%d。\n",You[c].Name,You[c].Wudi);
        if(j==3) You[c].Blpt+=k,You[c].Blp=l,printf("\n  %s开启持续加血!持续时间还剩%d。\n",You[c].Name,You[c].Blpt);
        if(j==4) You[c].Qipt+=k,You[c].Qip=m,printf("\n  %s开启持续加气!持续时间还剩%d。\n",You[c].Name,You[c].Qipt);
        Sleep(200);
    }
}
void Killkkk(int c,int a){//群攻 
    bool k[1001];memset(k,0,sizeof(k));
    int R=min(rand()%3+4,dy),ll=0;
    for(int i=1;i<=R;i++)
    {
        int j=rand()%Dy+1;
        if(Guai[j].Blood>0&&k[j]==0) Killk(c,a,j),k[j]=1,ll=0;
        else i--,ll++;
        if(ll>=5) break;
    }
}
void Killk2(int b,int a,int c){//怪单体
    int RR=0;if(Skill[a].Kill>5) RR=rand()%(Skill[a].Kill/5)-Skill[a].Kill/10;
    int RRR=rand()%100;
    printf("\n  %s攻击了%s!\n",Guai[b].Name,You[c].Name);Sleep(200);
    if(You[c].Wudi>0) {printf("\n  但是!%s是无敌的!\n",You[c].Name);Sleep(200);return;}
    if(You[c].Shan>RRR) {printf("\n  但是!%s闪避开了!\n",You[c].Name);Sleep(200);return;}
    int ki=Skill[a].Kill+RR;You[c].Blood-=ki;
    if(Skill[a].Kill>0) {printf("\n  %s受到%d点伤害,血量还剩%d。\n",You[c].Name,ki,You[c].Blood);Sleep(200);}
    for(int i=1;i<=Skill[a].Any;i++)
    {
        int j=Skill[a].Anywhat[i],k=Skill[a].Time[i],l=Skill[a].Anykill[i],m=Skill[a].Kill,mmm;
        int r1=rand()%100+1,r2=rand()%50+51,r3=rand()%100+1;
        if(j==1) You[c].Ice+=k,printf("\n  %s被冰冻!冰冻时间还剩%d。\n",You[c].Name,You[c].Ice);
        if(j==2) You[c].Dut+=k,You[c].Duk=l,printf("\n  %s中毒!中毒时间还剩%d。\n",You[c].Name,You[c].Dut);
        if(j==3&&r1<=l) mmm=m*r2/100,You[c].Blood-=mmm,printf("\n  %s被暴击!多受到%d点伤害,血量还剩%d。\n",You[c].Name,mmm,You[c].Blood);
        if(j==4&&r1<=l&&You[c].Blood>0) You[c].Blood-=m,printf("\n  %s被连击!再次受到%d点伤害,血量还剩%d。\n",You[c].Name,m,You[c].Blood),i--;
        if(j==5&&r1<=l) You[c].Yun++,printf("\n  %s被击晕!击晕时间还剩%d。\n",You[c].Name,You[c].Yun);
        if(j==6) mmm=You[c].Blood*l/100,You[c].Blood-=mmm,printf("\n  %s遭受百分比伤害!受到%d点伤害,血量还剩%d。\n",You[c].Name,mmm,You[c].Blood);
        if(j==7) Guai[b].Blood=min(Guai[b].Bloodmax,Guai[b].Blood+Skill[a].Kill+RR),printf("\n  %s被吸血! %s的血量增加%d,还剩%d。\n",You[c].Name,Guai[b].Name,Skill[a].Kill+RR,Guai[b].Blood);
        if(j==10) l=min(You[0].Money,l),You[0].Money-=l,Guai[b].Money+=l,printf("\n  你队被偷钱!金币数量减少%d,还剩%d,%s金币加为%d。\n",l,You[0].Money,Guai[b].Name,Guai[b].Money);
        Sleep(200);                                  
    }int as=rand()%5;if(You[c].Skilnum==0) as=0;
    if(Skill[a].What==1&&Skill[a].Anywhat[1]==10) as=1; //偷钱 
    if(c!=0&&You[c].Skilmax!=You[c].Skilnum&&as==0) Color(5),printf("\n  但是!%s学会了此技能!\n",You[c].Name),You[c].Skilnum++,You[c].Skil[You[c].Skilnum]=a,Color(0),Sleep(200);
    if(You[c].Blood<=0)
	{
		Color(4),printf("\n  %s阵亡!\n",You[c].Name),dd--;int rrR=rand()%30;
		if(rrR==0&&c!=0)
		{
			Tong=max(0,Tong-1);Slow(70,"\n  你的同伴对你们黑暗的前途叹了口气...\n  毅然决然地拖着已失去知觉的身体,走出了战场...\n  消失在地平线上!\n");
			for(int i=c;i<=Tong;i++) swap(You[i],You[i+1]);
		}Color(0);
	}
    if(You[0].Blood<=0&&Fu!=0) Color(5),printf("\n  但是!%s复活!\n",You[c].Name),You[0].Blood=20,dd++,Fu--,Color(0);
}
void Startguai(int a);
void Killkk2(int a,int b){//怪辅助 
    for(int i=1;i<=Skill[a].Any;i++)
    {
        int j=Skill[a].Anywhat[i],k=Skill[a].Time[i],l=Skill[a].Anykill[i];
        int r1=rand()%100+1,r2=rand()%100+1,r3=rand()%100+1;
        if(j==1) Guai[b].Blood+=l,Guai[b].Blood=min(Guai[b].Bloodmax,Guai[b].Blood),printf("\n  %s加血%d!血量还剩%d。\n",Guai[b].Name,l,Guai[b].Blood);
        if(j==2) Guai[b].Wudi+=k,printf("\n  %s开启无敌!无敌时间还剩%d。\n",Guai[b].Name,Guai[b].Wudi);
        if(j==3) Guai[b].Blpt+=k,Guai[b].Blp=l,printf("\n  %s开启持续加血!持续时间还剩%d。\n",Guai[b].Name,Guai[b].Blpt);
        if(j==5) Startguai(Skill[a].Anykill[i]),printf("\n  %s召唤了%s!%s加入战场。\n",Guai[b].Name,Guai[Dy].Name,Guai[Dy].Name);
        Sleep(200);
    }
}
void Killkkk2(int a,int b){//怪群攻
    bool k[1001];memset(k,0,sizeof(k));
    int R=min(rand()%3+3+Ju,dd),ll=0;
    for(int i=1;i<=R;i++)
    {
        int j=rand()%Dd;
        if(You[j].Blood>0&&k[j]==0) Killk2(b,a,j),k[j]=1,ll=0;
        else i--,ll++;
        if(ll>=5) break;
    }
}
void Killguai(int aa){//你队 
    int kk=0;Color(5);
    printf("\n  %s的回合!\n\n",You[aa].Name),Sleep(500);Color(0);
    if(You[aa].Wudi>0) You[aa].Wudi--,printf("  %s还在无敌!持续时间还剩%d。\n\n",You[aa].Name,You[aa].Wudi),Sleep(200);
    if(You[aa].Qipt>0) You[aa].Qipt--,You[aa].Qi+=You[aa].Qip,printf("  %s的气增加%0.1f,还剩%0.1f,持续时间还剩%d。\n\n",You[aa].Name,You[aa].Qip,You[aa].Qi,You[aa].Qipt),Sleep(200);
    if(You[aa].Blpt>0) You[aa].Blpt--,You[aa].Blood+=You[aa].Blp,You[aa].Blood=min(You[aa].Bloodmax,You[aa].Blood),printf("  %s的血量增加%d,还剩%d,持续时间还剩%d。\n\n",You[aa].Name,You[aa].Blp,You[aa].Blood,You[aa].Blpt),Sleep(200);
    if(You[aa].Dut>0) You[aa].Dut--,You[aa].Blood-=You[aa].Duk,printf("  %s毒发!其的血量减少%d,还剩%d,持续时间还剩%d。\n\n",You[aa].Name,You[aa].Duk,You[aa].Blood,You[aa].Dut),Sleep(200);
    if(You[aa].Ice>0) kk=1,You[aa].Ice--,printf("  %s被冰冻了......,冰冻时间还剩%d。\n\n",You[aa].Name,You[aa].Ice),Sleep(200);
    if(You[aa].Yun>0) {You[aa].Yun--;if(kk==1) cout<<endl<<"  同时,";else cout<<endl<<"  ";printf("%s被击晕了......,击晕时间还剩%d\n\n",You[aa].Name,You[aa].Yun),Sleep(200);return;}
    if(You[aa].Blood<=0) Color(4),printf("\n  %s阵亡!\n",You[aa].Name),dd--,kk=1,Color(0);
    if(kk==1) return;
    if(aa==0)
    {
        You[aa].Qi+=You[aa].Qijia;You[aa].Blood+=You[aa].Bloodjia;You[aa].Blood=min(You[aa].Blood,You[aa].Bloodmax);
        Color(0),printf("  你的气数+%0.1f: %0.1f\n",You[aa].Qijia,You[aa].Qi);
        Color(0),printf("\n  你的血量+%d: %d\n",You[aa].Bloodjia,You[aa].Blood);printf("\n  你的技能:\n");Sleep(200);
        Color(0),printf("\n  0: 蓄气");
        for(int i=1;i<=You[aa].Skilnum;i++) {Color(0),printf("\n  %d: ",i),Color(Skill[You[aa].Skil[i]].color),printf("%s",Skill[You[aa].Skil[i]].Name);Color(0);if(Skill[You[aa].Skil[i]].Qi>You[aa].Qi) cout<<"(不可用)";}
        printf("\n\n  请输入你想使用技能的编号----- ");
        int a,b;cin>>a;
        if(a==0) You[aa].Qi+=1,printf("\n  %s蓄气!你的气数 +1,还剩%0.1f。\n",You[aa].Name,You[aa].Qi);
        else
        {
            int c=You[aa].Skil[a];
            if(You[aa].Qi-Skill[c].Qi<0) return;
            You[aa].Qi-=Skill[c].Qi;
            if(Skill[c].What==1)
            {
                Color(0),printf("\n  当前敌人:\n");
                for(int i=1;i<=Dy;i++) if(Guai[i].Blood>0) {printf("\n  %d: %s (血量:%d)",i,Guai[i].Name,Guai[i].Blood);}
                printf("\n\n  请输入你想攻击敌人的编号----- ");cin>>b;
            }printf("\n\n  你使用技能:");Color(Skill[c].color);printf("%s",Skill[c].Name);Color(0),cout<<" !"<<endl;
            if(Skill[c].What==1) Killk(0,c,b);
            if(Skill[c].What==2) Killkkk(0,c);
            if(Skill[c].What==3) Killkk(0,c);
        }
    }
    else
    {
        int R=rand()%100+1,l=0,kk=0,o=rand()%5;
        if(You[aa].Skilnum!=0) l=rand()%You[aa].Skilnum+1;if(o==0) l=0;
        printf("  %s使用技能:",You[aa].Name);Color(Skill[You[aa].Skil[l]].color);Sleep(200);
        if(l==0) {cout<<"蓄气 !"<<endl;return;}
        printf("%s",Skill[You[aa].Skil[l]].Name);Color(0),cout<<" !"<<endl;
        KR:
        int sc=rand()%Dy+1;Sleep(200);
        if(Skill[You[aa].Skil[l]].What==1) if(Guai[sc].Blood>0) Killk(aa,You[aa].Skil[l],sc); else goto KR;
        if(Skill[You[aa].Skil[l]].What==2) Killkkk(aa,You[aa].Skil[l]);
        if(Skill[You[aa].Skil[l]].What==3) Killkk(aa,You[aa].Skil[l]);
    }
}
void Killyou(int sb){//怪
    sa=rand()%dd;
    int R=rand()%(100-min(10,Ju*3))+1,l=0,kk=0;Color(5);
    printf("\n  %s的回合!\n",Guai[sb].Name),Sleep(500);Color(0);
    if(Guai[sb].Wudi>0) Guai[sb].Wudi--,printf("  %s还在无敌!持续时间还剩%d。\n\n",Guai[sb].Name,Guai[sb].Wudi),Sleep(200);
    if(Guai[sb].Blpt>0) Guai[sb].Blpt--,Guai[sb].Blood+=Guai[sb].Blp,Guai[sb].Blood=min(Guai[sb].Bloodmax,Guai[sb].Blood),printf("  %s的血量增加%d,还剩%d,持续时间还剩%d。\n\n",Guai[sb].Name,Guai[sb].Blp,Guai[sb].Blood,Guai[sb].Blpt),Sleep(200);
    if(Guai[sb].Dut>0) Guai[sb].Dut--,Guai[sb].Blood-=Guai[sb].Duk,printf("  %s毒发!它的血量减少%d,还剩%d,持续时间还剩%d。\n\n",Guai[sb].Name,Guai[sb].Duk,Guai[sb].Blood,Guai[sb].Dut),Sleep(200);
    if(Guai[sb].Ice>0) kk=1,Guai[sb].Ice--,printf("  %s被冰冻了......,冰冻时间还剩%d。\n\n",Guai[sb].Name,Guai[sb].Ice),Sleep(200);
    if(Guai[sb].Yun>0) {Guai[sb].Yun--;if(kk==1) cout<<endl<<"  同时,";else cout<<endl<<"  ";printf("%s被击晕了......,击晕时间还剩%d\n\n",Guai[sb].Name,Guai[sb].Yun),Sleep(200);return;}
    if(Guai[sb].Blood<=0) Color(4),printf("\n  %s阵亡!\n",Guai[sb].Name),dy--,kk=1,Color(0);
    if(kk==1) return;
    for(int i=1;i<=Guai[sb].Skilnum;i++) {if(R>Guai[sb].Skilstr[i]) continue;else {l=Guai[sb].Skil[i];break;}}
    printf("\n  %s使用技能:",Guai[sb].Name);Color(Skill[l].color);Sleep(200);
    if(l==0) {cout<<"蓄气 !"<<endl;return;}
    printf("%s",Skill[l].Name);Color(0),cout<<" !"<<endl;
    KR:
    int sc=rand()%Dd;Sleep(200);
    if(Skill[l].What==1) if(You[sc].Blood>0) Killk2(sb,l,sc); else goto KR;
    if(Skill[l].What==3) Killkk2(l,sb);
    if(Skill[l].What==2) Killkkk2(l,sb);
}
void Juing(){
    system("cls");Color(5);
    if(Ju==1) Slow(50,"\n  -----------第一章-----------\n\n  这个世界是由SLFDC政府掌管的。\n\n  近几年,由于太上皇的暴政,有10%的诸侯国脱离了此政府。\n\n  为此,SLFDC创立了强大的军事力量,\n\n  由三大教,七武科代表统管。\n\n  而你方则立下了四皇来与之抗衡。\n\n  现在,世界混乱,而你,必定是可以称霸世界,重拾和平的人!\n\n  于是,你走上了与天下人抗争的道路,\n\n  辉煌的前途正向你驶来!");
    if(Ju==2) Slow(50,"\n  -----------第二章-----------\n\n  在这一年中,四皇小P,老狗,梢公与小梁终于在思想上达成了一致\n\n  一个名为信奥班的群体终于崛起!\n\n  与此同时,因为救下了一位小P的手下,\n\n  你也光荣地入队!\n\n  现在,你开始承受SLFDC更为激烈的打击,\n\n  你一定要创造计策与机会,存活下去!");
    if(Ju==3) Slow(50,"\n  -----------第三章-----------\n\n  前线传来坏消息,\n\n  太上皇用自己无敌的能力击溃了大部分军队,\n\n  而继续反扑向信奥班本部!\n\n  于是,四皇们决定进军SLFDC本部!\n\n  政府在这时风雨飘摇,欲摧不倒!\n\n  江山即将易主,已经可以看到黎明的曙光!");
    if(Ju==4) Slow(50,"\n  -----------第四章-----------\n\n  震撼人心的“SLFDC顶上战争”终于爆发了!\n\n  前线军队战斗的轰轰烈烈,尸横遍地!\n\n  在弹尽粮绝之时,你忽然发现,自己已变得超乎想象的强大!\n\n  你从尸山血海中站起,\n\n  经历的所有战争均是超乎想象的宏大!\n\n  你始终相信,终有一天,希望将照在这辽阔的大地上!");
    if(Ju==5) Slow(50,"\n  -----------第五章-----------\n\n  战争结束了!\n\n  你的目标终于达成了!\n\n  接下来,你就可以肆无忌惮的在你的国度除恶扬善了!\n  .\n  .\n  .\n  .\n  .\n  .\n\n  剧情走完,游戏继续!");
    Sleep(3000),system("cls");if(Ju<=1) return;
    printf("\n  升级了!\n\n");Sleep(1000);
    printf("  闪避率+2%\n\n");Sleep(500);
    printf("  同伴现有技能攻击力+20%\n\n");Sleep(500);
    printf("  新创自定义技能气量*90%\n\n");Sleep(500);
    printf("  战斗金币量+10%\n\n");Sleep(500);
    printf("  胜利EXP量+10%\n\n");Sleep(500);
    printf("  游戏难度加大!\n\n");Sleep(500);You[0].Shan+=2;
    for(int i=1;i<100;i++) {Skill[i].Kill*1.2;for(int j=1;j<=Skill[i].Any;j++) Skill[i].Anykill[j]*1.2;}
    Sleep(3000),system("cls");Color(0);
}
void LaoHu(){
    system("cls");Color(0);
    printf("\n  -----------抽奖机-----------\n");
    for(int i=1;i<=50;i++)
    {
        SetPos(5,5);cout<<"            ";
        Color(rand()%13);
        SetPos(5,5);cout<<"出奖中。。。"; Sleep(30);
    }Color(5);
    SetPos(5,2);cout<<"恭喜获得";Re:
    int ssa=rand()%6,sr;
    if(ssa==0) {sr=rand()%400+100;cout<<"金币"<<sr<<"个!";You[0].Money+=sr;} 
    if(ssa==1) {sr=rand()%50+30;cout<<"经验"<<sr<<"点!";You[0].EXP+=sr;} 
    if(ssa==2)
    {
        KKP:sr=rand()%24+4;
        for(int i=1;i<=You[0].Skilnum;i++) if(You[0].Skil[i]==sr) goto KKP;
        for(int i=1;i<=skk;i++) if(Skkk[i]==sr) goto KKP;
        if(Skill[sr].What==3&&Skill[sr].Anywhat[1]==5) goto KKP;   //召唤 
        if(Skill[sr].What==1&&Skill[sr].Anywhat[1]==10) goto KKP;  //偷钱 
        skk++,Skkk[skk]=sr;cout<<"系统特惠技能:";Color(Skill[Skkk[skk]].color);cout<<Skill[Skkk[skk]].Name;Color(5),cout<<"!";
    }
    if(ssa==3)
    {
        if(Tong==Tongmax) goto Re;Tong++;int i=Tong;You[i].Skilnum=0;
        You[i].Bloodmax=You[0].Bloodmax-10+rand()%21;You[i].Skilmax=3+rand()%3;
        printf("新同伴(血量%d,技能上限%d,会学习)!",You[i].Bloodmax,You[i].Skilmax);
    }
    if(ssa==4) {cout<<"新技能槽!";You[0].Skilmax++;}
    if(ssa==5) {cout<<"血量上限+20%!";You[0].Bloodmax*=1.2;}
    Sleep(1000);
}
void Store(){
    St:system("cls");Color(0);
    if(Jiao==12) {SetPos(22,1),Color(5),printf("教程提示 12 :但是,此游戏的成功方式只有一个:\n             将游戏的剧情完结!\n             按 0 退出,否则退出教程。"),Color(0);SetPos(0,0);}
    printf("\n  ------------商店------------\n");
    printf("\n  Money:%d\n",You[0].Money);
    printf("\n  1.同伴招募                    --- $300\n");
    printf("\n  2.药水商店\n");
    printf("\n  3.经验升级区\n");
    printf("\n  4.抽奖机 (会抽出什么呢?...)  --- $300\n");
    printf("\n  输入 0 退出。----- ");int a;cin>>a;if(a==0&&Jiao==12) Jiao++,You[0].EXP=100;else if(Jiao!=14) Jiao=-1;
    if(a==1&&You[0].Money>=300&&Tong<Tongmax)
    {
        Tong++;int i=Tong;You[i].Skilnum=0;You[0].Money-=300;
        You[i].Bloodmax=You[0].Bloodmax-10+rand()%21;You[i].Skilmax=3+rand()%3;
        Color(5),printf("\n  恭喜获得新同伴(血量%d,技能上限%d,会学习)!",You[i].Bloodmax,You[i].Skilmax);Color(0),Sleep(3000);
    }
    if(a==2)
    {
        Sto:system("cls");Color(0);
        printf("\n  ----------药水商店----------\n");
        printf("\n  注意:所有药水均为自动使用一次性。\n");
        printf("\n  Money:%d\n",You[0].Money);
        printf("\n  1.生命药水 (初始血量+10%) [已有%d个]  --- $30\n",Shen);
        printf("\n  2.复活药水 (且回血20)     [已有%d个]  --- $50\n",Fu);
        printf("\n  3.敏捷药水 (闪避率+20%)   [已有%d个]  --- $50\n",Shan);
        printf("\n  4.狂暴药水 (回合率+20%)   [已有%d个]  --- $50\n",Ji);
        printf("\n  5.元气药水 (开局1口气)    [已有%d个]  --- $30\n",Yuan);
        printf("\n  6.经验药水 (+10 EXP)                  --- $100\n");
        printf("\n  输入 0 退出。----- ");int aa;cin>>aa;
        if(aa==1&&You[0].Money>=30) Shen++,You[0].Money-=30;if(aa==2&&You[0].Money>=50) Fu++,You[0].Money-=50;if(aa==3&&You[0].Money>=50) Shan++,You[0].Money-=50;
        if(aa==4&&You[0].Money>=50) Ji++,You[0].Money-=50;if(aa==5&&You[0].Money>=30) Yuan++,You[0].Money-=30;if(aa==6&&You[0].Money>=100) You[0].EXP+=20,You[0].Money-=100;
        if(aa!=0) goto Sto;
    }
    if(a==3)
    {
        Stoo:system("cls");Color(0);
        printf("\n  ---------经验升级区---------\n");
        printf("\n  EXP:%d\n",You[0].EXP);
        printf("\n  1.血量上限+10% [已为%d点]  --- 50 EXP\n",You[0].Bloodmax);
        printf("\n  2.回合加气+0.2 [已为%0.1f口]  --- 50 EXP\n",You[0].Qijia);
        printf("\n  3.回合加血+5  [已为%d点]  --- 70 EXP\n",You[0].Bloodjia);
        printf("\n  4.闪避率+5%   [已为%d%]  --- 70 EXP\n",You[0].Shan);
        printf("\n  5.技能槽+1     [已为%d个]  --- 100 EXP\n",You[0].Skilmax);
        printf("\n  6.同伴上限+1   [已为%d个]  --- 100 EXP\n",Tongmax);
        printf("\n  7.同伴升级区\n");
        printf("\n  输入 0 退出。----- ");int aaa;cin>>aaa;if(aaa==7&&Jiao==13) Jiao++;else if(Jiao!=14) Jiao=-1;
        if(aaa==1&&You[0].EXP>=50) You[0].Bloodmax*=1.1,You[0].EXP-=50;
        if(aaa==2&&You[0].EXP>=50) You[0].Qijia+=0.2,You[0].EXP-=50;
        if(aaa==3&&You[0].EXP>=70) You[0].Bloodjia+=5,You[0].EXP-=70;
        if(aaa==4&&You[0].EXP>=70) You[0].Shan+=5,You[0].EXP-=70;
        if(aaa==5&&You[0].EXP>=100) You[0].Skilmax++,You[0].EXP-=100;
        if(aaa==6&&You[0].EXP>=100) Tongmax++,You[0].EXP-=100;
        if(aaa==7)
        {
            So:system("cls");Color(0);
            printf("\n  ---------同伴升级区---------\n");
            printf("\n  EXP:%d     同伴数量:%d\n",You[0].EXP,Tong);
            printf("\n  你要升级同伴几?(输入 0 退出)----- ");
            int i;cin>>i;if(i==0) goto Stoo;Soo:SetPos(5,1);printf("同伴%d:                                \n",i);
            printf("\n  血量上限:%d     (+10%按1 --- 50EXP)\n",You[i].Bloodmax);
            printf("\n  回合加血:%d     (+5按2   --- 70EXP)\n",You[i].Bloodjia);
            printf("\n  闪避率:%d%      (+5%按3   --- 70EXP)\n",You[i].Shan);
            printf("\n  技能数量上限:%d (+1按4   --- 100EXP)\n",You[i].Skilmax,You[i].Skilnum);
            for(int j=1;j<=You[i].Skilnum;j++)printf("\n  ----第%d技能:",j),Color(Skill[You[i].Skil[j]].color),cout<<Skill[You[i].Skil[j]].Name,Color(0),printf("    (删除按%d)\n",4+j);
            printf("\n  输入 0 重选。----- ");int ab;cin>>ab;
            if(ab==1&&You[0].EXP>=50) You[i].Bloodmax*=1.1,You[0].EXP-=50;
            if(ab==2&&You[0].EXP>=70) You[i].Bloodjia+=5,You[0].EXP-=70;
            if(ab==3&&You[0].EXP>=70) You[i].Shan+=5,You[0].EXP-=70;
            if(ab==4&&You[0].EXP>=100) You[i].Skilmax++,You[0].EXP-=100;
            if(ab>4) {ab-=4;You[i].Skilnum--;for(int j=ab;j<You[i].Skilnum;j++) swap(You[i].Skil[j],You[i].Skil[j+1]);You[i].Skil[You[i].Skilnum+1]=0;}
            if(ab!=0) {system("cls");Color(0);printf("\n  ---------同伴升级区---------\n");printf("\n  EXP:%d     同伴数量:%d\n",You[0].EXP,Tong);goto Soo;}if(ab==0) goto So;
        }
        if(aaa!=0) goto Stoo;
    }
    if(a==4&&You[0].Money>=300) LaoHu(),You[0].Money-=300;
    if(a!=0) goto St;
}
void Startguai(int a){
    char *str;
    dy++;Dy++;
    if(a==1) {str="剑客";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=80;Guai[dy].Money=10;Guai[dy].Skilnum=2,Guai[dy].Skil[1]=1,Guai[dy].Skilstr[1]=40,Guai[dy].Skil[2]=4,Guai[dy].Skilstr[2]=90;}
    if(a==2) {str="守卫兵";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=100;Guai[dy].Money=20;Guai[dy].Skilnum=2,Guai[dy].Skil[1]=5,Guai[dy].Skilstr[1]=30,Guai[dy].Skil[2]=6,Guai[dy].Skilstr[2]=90;}
    if(a==3) {str="史莱姆";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=50;Guai[dy].Money=10;Guai[dy].Skilnum=2,Guai[dy].Skil[1]=7,Guai[dy].Skilstr[1]=50,Guai[dy].Skil[2]=8,Guai[dy].Skilstr[2]=90;}
    if(a==4) {str="模仿者";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=You[0].Blood;Guai[dy].Money=20;Guai[dy].Skilnum=3,Guai[dy].Skil[1]=You[0].Skil[1],Guai[dy].Skilstr[1]=30,Guai[dy].Skil[2]=You[0].Skil[2],Guai[dy].Skilstr[2]=60,Guai[dy].Skil[3]=You[0].Skil[3],Guai[dy].Skilstr[3]=90;}
    if(a==5) {str="魔术师";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=80;Guai[dy].Money=25;Guai[dy].Skilnum=3,Guai[dy].Skil[1]=9,Guai[dy].Skilstr[1]=20,Guai[dy].Skil[2]=5,Guai[dy].Skilstr[2]=40,Guai[dy].Skil[3]=6,Guai[dy].Skilstr[3]=90;}
    if(a==6) {str="巫医";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=70;Guai[dy].Money=20;Guai[dy].Skilnum=3;Guai[dy].Skil[1]=15,Guai[dy].Skilstr[1]=40;Guai[dy].Skil[2]=16,Guai[dy].Skilstr[2]=60;Guai[dy].Skil[3]=17,Guai[dy].Skilstr[3]=90;}
    if(a==7) {str="法师";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=80;Guai[dy].Money=30;Guai[dy].Skilnum=3,Guai[dy].Skil[1]=2,Guai[dy].Skilstr[1]=20,Guai[dy].Skil[2]=10,Guai[dy].Skilstr[2]=50,Guai[dy].Skil[3]=11,Guai[dy].Skilstr[3]=90;}
    if(a==8) {str="雪怪";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=150;Guai[dy].Money=50;Guai[dy].Skilnum=3;Guai[dy].Skil[1]=12,Guai[dy].Skilstr[1]=50;Guai[dy].Skil[2]=13,Guai[dy].Skilstr[2]=60;Guai[dy].Skil[3]=14,Guai[dy].Skilstr[3]=90;}
    if(a==9) {str="巨人";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=200;Guai[dy].Money=50;Guai[dy].Skilnum=2;Guai[dy].Skil[1]=18,Guai[dy].Skilstr[1]=40;Guai[dy].Skil[2]=19,Guai[dy].Skilstr[2]=90;}
    if(a==10) {str="蝙蝠";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=20;Guai[dy].Money=3;Guai[dy].Skilnum=2,Guai[dy].Skil[1]=20,Guai[dy].Skilstr[1]=60,Guai[dy].Skil[2]=21,Guai[dy].Skilstr[2]=90;}
    if(a==11) {str="乞丐";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=100;Guai[dy].Money=30;Guai[dy].Skilnum=3,Guai[dy].Skil[1]=22,Guai[dy].Skilstr[1]=40,Guai[dy].Skil[2]=23,Guai[dy].Skilstr[2]=80,Guai[dy].Skil[3]=24,Guai[dy].Skilstr[3]=90;}
    if(a==12) {str="弓箭手";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=80;Guai[dy].Money=10;Guai[dy].Skilnum=2,Guai[dy].Skil[1]=26,Guai[dy].Skilstr[1]=40,Guai[dy].Skil[2]=25,Guai[dy].Skilstr[2]=90;}
    if(a==13) {str="哥布林";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=50;Guai[dy].Money=15;Guai[dy].Skilnum=2,Guai[dy].Skil[1]=5,Guai[dy].Skilstr[1]=20,Guai[dy].Skil[2]=27,Guai[dy].Skilstr[2]=90,Guai[dy].Skil[2]=27,Guai[dy].Skilstr[3]=90;}
    if(a==14) {str="酒鬼";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=100;Guai[dy].Money=30;Guai[dy].Skilnum=3,Guai[dy].Skil[1]=28,Guai[dy].Skilstr[1]=30,Guai[dy].Skil[2]=29,Guai[dy].Skilstr[2]=60,Guai[dy].Skil[3]=22,Guai[dy].Skilstr[3]=90;}
    if(a==15) {str="战争机器";for(int i=0;i<strlen(str);i++)Guai[dy].Name[i]=str[i];Guai[dy].Blood=200;Guai[dy].Money=70;Guai[dy].Skilnum=3;Guai[dy].Skil[1]=30,Guai[dy].Skilstr[1]=40;Guai[dy].Skil[2]=31,Guai[dy].Skilstr[2]=70;Guai[dy].Skil[3]=32,Guai[dy].Skilstr[3]=90;}
    Guai[dy].Blood*=(0.5*Ju);Guai[dy].Blood+=rand()%11-5;Guai[dy].Bloodmax=Guai[dy].Blood;Guai[dy].Money*=(0.8+0.1*Ju);Guai[dy].Shan=(Ju-2)*5;
}
void Startwar(){
    char *str;
    dy=Dy=0;dd=Dd=Tong+1;memset(Guai,0,sizeof(Guai));// dd=你方
    You[0].Blp=You[0].Blpt=You[0].Duk=You[0].Dut=You[0].Ice=You[0].Yun=You[0].Wudi=You[0].Wudit=You[0].Qipt=You[0].Qi=You[0].Qip=0;
    for(int i=1;i<=Tong;i++)
    {
        str="同伴";You[i].Name[4]=i+'0';
        for(int j=0;j<strlen(str);j++)You[i].Name[j]=str[j];You[i].Blood=You[i].Bloodmax;
        You[i].Blp=You[i].Blpt=You[i].Duk=You[i].Dut=You[i].Ice=You[i].Yun=You[i].Wudi=You[i].Wudit=You[i].Qipt=You[i].Qi=You[i].Qip=0;
    }int r=max(Dd+rand()%3-1,1);int t=rand()%6;if(t<Ju) r++;
    for(int i=1;i<=r;i++) Startguai(rand()%15+1); 
}
void War(){
    As:system("cls");Color(0);
    if(Jiao==2) {SetPos(22,1),Color(5),printf("教程提示 2 :杀死所有敌人即可获胜。\n             反之,你队全亡就会失败。\n             按 y 开始,否则退出教程。"),Color(0);SetPos(0,0);}
    if(Jiao==6) {SetPos(22,1),Color(5),printf("教程提示 6 :你的气数会每回合增长。\n             但敌人与同伴使用技能没有气数限制。\n             按 y 开始,否则退出教程。"),Color(0);SetPos(0,0);}
    if(Jiao==10) {SetPos(22,1),Color(5),printf("教程提示 10 :同伴是没有初始技能的。\n             他会在战斗中自我学习,你们的血量在对战后均会回满。\n             按 y 开始,否则退出教程。"),Color(0);SetPos(0,0);}
    SetPos(1,1),printf("----------战斗界面----------\n\n");
    memset(Y,0,sizeof(Y));memset(D,0,sizeof(D));Startwar();if(Juk==10) {Juk=0,Juing(),Ju++;goto As;}
    printf("  你将面临的敌人是:\n");
    for(int i=1;i<=dy;i++) {printf("\n  %d: %s   血量: %d   掉落金币: %d",i,Guai[i].Name,Guai[i].Blood,Guai[i].Money);}
    cout<<"\n\n  按 y 开始战斗,按其余键退出 (损失 30"<<'%'<<" EXP)。----- ";
    char q;cin>>q;if(q!='y'&&(Jiao==2||Jiao==6||Jiao==10)) Jiao=-1;if(q=='y'&&(Jiao==2||Jiao==6||Jiao==10)) Jiao++;
    if(q!='y') {You[0].EXP*=0.7;return;}system("cls");
    SetPos(1,1),printf("\n---------开始战斗!---------\n\n");
    if(Yuan>=1) You[0].Qi=1;
    if(Shen>=1) You[0].Blood*=1.1;
    int sh,pan;if(Shan>=1) You[0].Shan+=20,sh=1;
    while(dy!=0&&dd!=0)
    {
        pan=0;KK:pan++;
        if(pan>=10) break;
        sa=rand()%(dd+dy);sc=0;
        if(Ji>0&&You[0].Blood>0) sc=rand()%5;
        if(sa<dd) sa=0;else sa=1;
        if(k3>=2) sa=1;if(k4>=2) sa=0;
        if(sa==0) sb=rand()%Dd;  //你攻
        if(sa==1) sb=rand()%Dy+1;//怪攻
        if(sc==4) sa=0,sb=0;
        if(sa==0&&You[sb].Blood<=0) goto KK;
        if(sa==1&&Guai[sb].Blood<=0) goto KK;
        if((sa==0&&sb==k1)||(sa==1&&sb==k2)) goto KK;
        if(sa==0) {k1=sb,k2=0,k3++,k4=0;if(dy<=0||dd<=0) break;Killguai(sb);}
        if(sa==1) {k1=-1,k2=sb,k3=0,k4++;if(dy<=0||dd<=0) break;Killyou(sb);}
        if(dy<=0||dd<=0) break;Sleep(500);
    }Shen=max(Shen-1,0);Ji=max(Ji-1,0);Shan=max(Shan-1,0);Yuan=max(Yuan-1,0);if(sh==1) You[0].Shan-=20;
    int ai=(10+Dy*2)*(0.8+0.1*Ju);int bi=(10+Dd*5)*(0.8+0.1*Ju);
    if(dy==0) Color(5),printf("\n  你胜利了!!获得%dEXP!\n",ai),You[0].EXP+=ai,Juk+=rand()%2;
    else Color(4),printf("\n  你失败了!!减少%d金币!\n",bi),You[0].Money=max(0,You[0].Money-bi);Sleep(3000);
}
bool Read(){
    ifstream in("这是你的存档.in");
	unsigned long long ioi=0,ioix;
	long long Moo=1e9+7;
    in>>You[0].Name;
    for(int i=0;i<strlen(You[0].Name);i++) ioi=(ioi+(int)You[0].Name[i])*101%Moo;
    in>>Skll>>skk>>Tong>>Tongmax>>Ju>>Juk>>Jiao>>Shen>>Ji>>Yuan>>Shan>>Fu;
    ioi=(ioi+Skll*103+skk*107+Tong*109+Tongmax*113+Ju*127+Juk*131+Jiao*137+Shen*139+Ji*149+Yuan*151+Shan*157+Fu*163)%Moo;
	for(int i=0;i<=Tong;i++)
    {
        in>>You[i].Blood>>You[i].Bloodmax>>You[i].Bloodjia>>You[i].Skilnum>>You[i].Skilmax>>You[i].Money>>You[i].EXP>>You[i].Shan;in>>You[i].Qijia;
        ioi+=(2*ioi+You[i].Blood*167+You[i].Bloodmax*173+You[i].Bloodjia*179+You[i].Skilnum*181+You[i].Skilmax*191+You[i].Money*193+You[i].EXP*197+You[i].Shan*211+(int)You[i].Qijia*223)%Moo;
        for(int j=1;j<=You[i].Skilnum;j++) in>>You[i].Skil[j],ioi+=i*j*(ioi+You[i].Skil[j])*227%Moo;
    }
	for(int i=100;i<=99+Skll;i++)
    {
        in>>Skill[i].Name;
    	for(int j=0;j<strlen(Skill[i].Name);j++) ioi+=i*j*(ioi+(int)Skill[i].Name[j])*229%Moo;
        in>>Skill[i].Qi>>Skill[i].Kill>>Skill[i].What>>Skill[i].color>>Skill[i].Any;
        ioi=ioi+Skill[i].Qi*233+Skill[i].Kill*239+Skill[i].What*241+Skill[i].color*251+Skill[i].Any*257;
        ioi%=Moo;
        for(int j=1;j<=Skill[i].Any;j++)
		{
			in>>Skill[i].Anykill[j]>>Skill[i].Anywhat[j]>>Skill[i].Time[j],in>>Skill[i].Anyqi[j];
			ioi+=i*j*(ioi+Skill[i].Anykill[j]*263+Skill[i].Anywhat[j]*269+Skill[i].Time[j]*271+(int)Skill[i].Anyqi[j]*277)%Moo;
		}
    }for(int i=1;i<=skk;i++) in>>Skkk[i],ioi+=(ioi+Skkk[i])*281%Moo;
    in>>ioix;
    if(ioix!=ioi) {in.close();return 0;}
    in.close();return 1;
}
void Save(){
	unsigned long long ioi=0;
	long long Moo=1e9+7;
    ofstream out("这是你的存档.in");
    out<<You[0].Name<<'\n';
    for(int i=0;i<strlen(You[0].Name);i++) ioi=(ioi+(int)You[0].Name[i])*101%Moo;
    out<<Skll<<' '<<skk<<' '<<Tong<<' '<<Tongmax<<' '<<Ju<<' '<<Juk<<' '<<Jiao<<' '<<Shen<<' '<<Ji<<' '<<Yuan<<' '<<Shan<<' '<<Fu<<'\n';
    ioi=(ioi+Skll*103+skk*107+Tong*109+Tongmax*113+Ju*127+Juk*131+Jiao*137+Shen*139+Ji*149+Yuan*151+Shan*157+Fu*163)%Moo;
    for(int i=0;i<=Tong;i++)
    {
        out<<You[i].Blood<<' '<<You[i].Bloodmax<<' '<<You[i].Bloodjia<<' '<<You[i].Skilnum<<' '<<You[i].Skilmax<<' '<<You[i].Money<<' '<<You[i].EXP<<' '<<You[i].Shan<<' ';out<<You[i].Qijia<<'\n';
        ioi+=(2*ioi+You[i].Blood*167+You[i].Bloodmax*173+You[i].Bloodjia*179+You[i].Skilnum*181+You[i].Skilmax*191+You[i].Money*193+You[i].EXP*197+You[i].Shan*211+(int)You[i].Qijia*223)%Moo;
        for(int j=1;j<=You[i].Skilnum;j++) out<<You[i].Skil[j]<<' ',ioi+=i*j*(ioi+You[i].Skil[j])*227%Moo;out<<'\n';
    }for(int i=100;i<=99+Skll;i++)
    {
        out<<Skill[i].Name<<'\n';
    	for(int j=0;j<strlen(Skill[i].Name);j++) ioi+=i*j*(ioi+(int)Skill[i].Name[j])*229%Moo;
        out<<Skill[i].Qi<<' '<<Skill[i].Kill<<' '<<Skill[i].What<<' '<<Skill[i].color<<' '<<Skill[i].Any<<'\n';
        ioi=ioi+Skill[i].Qi*233+Skill[i].Kill*239+Skill[i].What*241+Skill[i].color*251+Skill[i].Any*257;
        ioi%=Moo;
        for(int j=1;j<=Skill[i].Any;j++)
		{
			out<<Skill[i].Anykill[j]<<' '<<Skill[i].Anywhat[j]<<' '<<Skill[i].Time[j]<<' ',out<<Skill[i].Anyqi[j]<<'\n';
			ioi+=i*j*(ioi+Skill[i].Anykill[j]*263+Skill[i].Anywhat[j]*269+Skill[i].Time[j]*271+(int)Skill[i].Anyqi[j]*277)%Moo;
		}
    }for(int i=1;i<=skk;i++) out<<Skkk[i]<<' ',ioi+=(ioi+Skkk[i])*281%Moo;out<<'\n'; 
    out<<'\n'<<ioi;
    out.close();
}
void Cun(){
    yy:system("cls");Color(0);
    SetPos(1,1),printf("---------存读档界面---------");
    SetPos(3,1),printf("读档按1  存档按2 -----");int a;cin>>a;
    if(a==1)
    {
        printf("\n  你需要将你之前的存档与此程序放入一个文件夹中。\n");
        printf("\n  不要更改名字与内容!\n");
        printf("\n  准备好了吗?按任意键开始!\n");char b;b=_getch();
        Slow(50,"\n    读档中......\n");
        if(Read()) Color(5),printf("\n    读档成功!\n");
        else
		{
			Color(4),printf("\n  读档失败!这个档一定被修改过!\n\n");
			Slow(200,"  啊......愚昧无知的人类啊......\n\n  接受来自胎神的惩罚吧!......\n\n");
			Color(5),printf("\n  全新!黑色字体特效,开启!!\n\n");Color(0);Black=1;Sleep(1000);
		}
		Color(0),Sleep(1000);
    }
    if(a==2)
    {
        printf("\n  你需要将此程序放入一个文件夹中。\n");
        printf("\n  注意此操作会覆盖之前的存档。\n");
        printf("\n  准备好了吗?按任意键开始!\n");char b;b=_getch();
        Save();Slow(50,"\n    存档中......\n");
        Color(5),printf("\n    存档成功!\n");Color(0),Sleep(1000);
    }
}
void Main(){
    system("cls");Color(0);You[0].Blood=You[0].Bloodmax;int a=-2019;
    SetPos(1,1),printf("-----------主界面-----------");
    SetPos(3,1),printf("金币:%d   经验值:%d   血量:%d",You[0].Money,You[0].EXP,You[0].Blood);
    SetPos(5,1),printf("Hi,%s,What do you want to do now?",You[0].Name);
    SetPos(7,1),printf("1.开始战斗!");
    SetPos(9,1),printf("2.存档与读档。");
    SetPos(11,1),printf("3.查看本体技能。");
    SetPos(13,1),printf("4.修改本体技能。");
    SetPos(15,1),printf("5.创造自定义技能。");
    SetPos(17,1),printf("6.前往商店。");
    SetPos(19,1),printf("7.查看小兵数据。");
    SetPos(21,1),printf("--------- ");
    if(Jiao==15) {SetPos(22,1),Color(5),printf("教程提示 15 :剩下的需要自己去摸索了,教程结束。"),Color(0);Jiao=-1;}
    if(Jiao==14) {SetPos(22,1),Color(5),printf("教程提示 14 :当你想保存游戏进度时,可以选择存档。\n             在下一次游戏中,你可以读档来继续游戏。\n             按 2 存档,否则退出教程。"),Color(0);SetPos(21,6),cin>>a;if(a==2) Jiao++;else Jiao=-1;}
    if(Jiao==13) {SetPos(22,1),Color(5),printf("教程提示 13 :剧情会在对战前随机刷出\n             我们来看看剧情的第一章吧!\n             按 1 开始,否则退出教程。"),Color(0);SetPos(21,6),cin>>a;if(a==6) Jiao++,Ju=1,Juk=10;else Jiao=-1;}
    if(Jiao==11) {SetPos(22,1),Color(5),printf("教程提示 11 :你可以购买药水增幅自己。\n             而在抽奖机中,你可以抽出一些更实用的物品!\n             按 6 购买,否则退出教程。"),Color(0);SetPos(21,6),cin>>a;if(a==6) Jiao++,You[0].Money=200;else Jiao=-1;}
    if(Jiao==9) {SetPos(22,1),Color(5),printf("教程提示 9 :一人对战比较困难,\n             我们来试试和同伴一起战斗吧。\n             按 1 对战,否则退出教程。"),Color(0);SetPos(21,6),cin>>a;if(a==1) Jiao++,Tong++,You[1].Bloodmax=100,You[1].Skilmax=3;else Jiao=-1;}
    if(Jiao==7) {SetPos(22,1),Color(5),printf("教程提示 7 :除了一个一个攻击敌人,你还可以使用群攻技能。\n             我们提供了一个群攻技能给你。\n             按 4 装备,否则退出教程。"),Color(0);SetPos(21,6),cin>>a;if(a==4) Jiao++,skk=1,Skkk[1]=3;else Jiao=-1;}
    if(Jiao==5) {SetPos(22,1),Color(5),printf("教程提示 5 :在对战中,会轮到你的回合\n             你只能你的回合中才能使用技能。\n             按 1 对战,否则退出教程。"),Color(0);SetPos(21,6),cin>>a;if(a==1) Jiao++;else Jiao=-1;}
    if(Jiao==3) {SetPos(22,1),Color(5),printf("教程提示 3 :只用刀对战比较困难,\n             你可以使用技能来对战,来装备你的第一个技能吧。\n             按 4 装备,否则退出教程。"),Color(0);SetPos(21,6),cin>>a;if(a==4) Jiao++,skk=1,Skkk[1]=2;else Jiao=-1;}
    if(Jiao==1) {SetPos(22,1),Color(5),printf("教程提示 1 :本游戏是一个团队对战游戏,\n             一切基础是建立在“开始战斗!”模式下的。\n             按 1 对战,否则退出教程。"),Color(0);SetPos(21,6),cin>>a;if(a==1) Jiao++;else Jiao=-1;}
    SetPos(21,6);if(a==-2019) cin>>a;if(a==1) War();if(a==2) Cun();if(a==3) CheckMe();if(a==4) ChangeSkill();if(a==5) StartSkill();if(a==6) Store();if(a==7) CheckUs();
}
void Start(){
    char *str,aa;Color(0);
    printf("\n  Hi,请输入你的名字......");scanf("%s",You[0].Name);
    printf("\n  要开始教程吗?(按 y / n 选择)..... ");cin>>aa;
    if(aa=='y')
    {
        printf("\n\n  如果你是在本机第一次玩此游戏......");
        printf("\n\n  请将鼠标移至程序框上方按鼠标右键......");
        printf("\n\n  点击“默认值”......");printf("\n\n  点击“布局”......");
        printf("\n\n  将“屏幕缓冲区大小”调为1000 1000......");
        printf("\n\n  然后关闭此程序,重启一次......");
        printf("\n\n  按任意键开始!");char a;a=_getch();Jiao=1;
    }
    else skk=2,Skkk[1]=2,Skkk[2]=3,You[0].Money=200,You[0].EXP=100,Tong=1,You[1].Bloodmax=100,You[1].Skilmax=3,Ju=1,Juk=10;
    You[0].Qi=0,You[0].Blood=You[0].Bloodmax=100,You[0].Skilnum=1,You[0].Skilmax=2,You[0].Skil[1]=1,Tongmax=2,You[0].Qijia=0.5;
    str="刀斩";for(int i=0;i<strlen(str);i++)Skill[1].Name[i]=str[i];Skill[1].Kill=10,Skill[1].What=1,Skill[1].Any=0,Skill[1].color=7,Skill[1].Qi=0;
    str="火球";for(int i=0;i<strlen(str);i++)Skill[2].Name[i]=str[i];Skill[2].Kill=30,Skill[2].What=1,Skill[2].Any=0,Skill[2].color=4,Skill[2].Qi=1;
    str="流星雨";for(int i=0;i<strlen(str);i++)Skill[3].Name[i]=str[i];Skill[3].Kill=30,Skill[3].What=2,Skill[3].Any=0,Skill[3].color=5,Skill[3].Qi=2;
    str="劈剑";for(int i=0;i<strlen(str);i++)Skill[4].Name[i]=str[i];Skill[4].Kill=20,Skill[4].What=1,Skill[4].Any=0,Skill[4].color=12,Skill[4].Qi=0.2;
    str="背刺";for(int i=0;i<strlen(str);i++)Skill[5].Name[i]=str[i];Skill[5].Kill=50,Skill[5].What=1,Skill[5].Any=1,Skill[5].Anywhat[1]=5,Skill[5].Anykill[1]=30,Skill[5].color=3,Skill[5].Qi=1.5;
    str="飞刀";for(int i=0;i<strlen(str);i++)Skill[6].Name[i]=str[i];Skill[6].Kill=10,Skill[6].What=1,Skill[6].Any=1,Skill[6].Anywhat[1]=4,Skill[6].Anykill[1]=30,Skill[6].color=1,Skill[6].Qi=1.5;
    str="粘液弹";for(int i=0;i<strlen(str);i++)Skill[7].Name[i]=str[i];Skill[7].Kill=10,Skill[7].What=2,Skill[7].Any=1,Skill[7].Anywhat[1]=5,Skill[7].Anykill[1]=70,Skill[7].color=2,Skill[7].Qi=2;
    str="碾压";for(int i=0;i<strlen(str);i++)Skill[8].Name[i]=str[i];Skill[8].Kill=30,Skill[8].What=1,Skill[8].color=3,Skill[8].Qi=0.8;
    str="腾空";for(int i=0;i<strlen(str);i++)Skill[9].Name[i]=str[i];Skill[9].What=3,Skill[9].Any=1,Skill[9].Anywhat[1]=2,Skill[9].Time[1]=1,Skill[9].color=1,Skill[9].Qi=1.5;
    str="地裂";for(int i=0;i<strlen(str);i++)Skill[10].Name[i]=str[i];Skill[10].Kill=10,Skill[10].What=2,Skill[10].Any=2,Skill[10].Anywhat[1]=4,Skill[10].Anykill[1]=60,Skill[10].Anywhat[2]=5,Skill[10].Anykill[2]=20,Skill[10].color=11,Skill[10].Qi=2.5;
    str="雷击术";for(int i=0;i<strlen(str);i++)Skill[11].Name[i]=str[i];Skill[11].Kill=30,Skill[11].What=2,Skill[11].Any=2,Skill[11].Anywhat[1]=3,Skill[11].Anykill[1]=30,Skill[11].Anywhat[2]=5,Skill[11].Anykill[2]=30,Skill[11].color=6,Skill[11].Qi=2.5;
    str="雪球";for(int i=0;i<strlen(str);i++)Skill[12].Name[i]=str[i];Skill[12].Kill=20,Skill[12].What=1,Skill[12].Any=1;Skill[12].Anywhat[1]=1,Skill[12].Time[1]=1;Skill[12].color=1,Skill[12].Qi=2;
    str="永冻之域";for(int i=0;i<strlen(str);i++)Skill[13].Name[i]=str[i];Skill[13].Kill=20,Skill[13].What=2,Skill[13].Any=1;Skill[13].Anywhat[1]=1,Skill[13].Time[1]=1;Skill[13].color=1,Skill[13].Qi=4;
    str="暴风雪";for(int i=0;i<strlen(str);i++)Skill[14].Name[i]=str[i];Skill[14].Kill=50,Skill[14].What=2,Skill[14].Any=2;Skill[14].Anywhat[1]=3,Skill[14].Anykill[1]=30;Skill[14].Anywhat[2]=5,Skill[14].Anykill[2]=30;Skill[14].color=1,Skill[14].Qi=2;
    str="急救";for(int i=0;i<strlen(str);i++)Skill[15].Name[i]=str[i];Skill[15].What=3,Skill[15].Any=1;Skill[15].Anywhat[1]=1,Skill[15].Anykill[1]=30;Skill[15].color=2,Skill[15].Qi=1;
    str="瘟疫";for(int i=0;i<strlen(str);i++)Skill[16].Name[i]=str[i];Skill[16].What=2,Skill[16].Any=1;Skill[16].Anywhat[1]=6,Skill[16].Anykill[1]=40;Skill[16].color=3,Skill[16].Qi=2;
    str="下毒";for(int i=0;i<strlen(str);i++)Skill[17].Name[i]=str[i];Skill[17].Kill=10,Skill[17].What=1,Skill[17].Any=1;Skill[17].Anywhat[1]=2,Skill[17].Anykill[1]=10,Skill[17].Time[1]=10;Skill[17].color=8,Skill[17].Qi=0.8;
    str="重击";for(int i=0;i<strlen(str);i++)Skill[18].Name[i]=str[i];Skill[18].Kill=50,Skill[18].What=1,Skill[18].Any=0;Skill[18].color=4,Skill[18].Qi=1.5;
    str="泰山压顶";for(int i=0;i<strlen(str);i++)Skill[19].Name[i]=str[i];Skill[19].Kill=50,Skill[19].What=2,Skill[19].Any=1;Skill[19].Anywhat[1]=3,Skill[19].Anykill[1]=50,Skill[19].color=4,Skill[19].Qi=2.5;
    str="吸血";for(int i=0;i<strlen(str);i++)Skill[20].Name[i]=str[i];Skill[20].Kill=5,Skill[20].What=1,Skill[20].Any=1;Skill[20].Anywhat[1]=7,Skill[20].color=10,Skill[20].Qi=1;
    str="狩猎号角";for(int i=0;i<strlen(str);i++)Skill[21].Name[i]=str[i];Skill[21].What=3,Skill[21].Any=1;Skill[21].Anywhat[1]=5,Skill[21].Anykill[1]=10,Skill[21].color=9,Skill[21].Qi=0.3;
    str="打狗棒法";for(int i=0;i<strlen(str);i++)Skill[22].Name[i]=str[i];Skill[22].Kill=30,Skill[22].What=1,Skill[22].Any=1,Skill[22].Anywhat[1]=4,Skill[22].Anykill[1]=40,Skill[22].color=11,Skill[22].Qi=1.5;
    str="乞讨";for(int i=0;i<strlen(str);i++)Skill[23].Name[i]=str[i];Skill[23].What=3,Skill[23].Any=1;Skill[23].Anywhat[1]=3,Skill[23].Time[1]=5,Skill[23].Anykill[1]=20;Skill[23].color=12,Skill[23].Qi=2;
    str="江湖义";for(int i=0;i<strlen(str);i++)Skill[24].Name[i]=str[i];Skill[24].What=3,Skill[24].Any=1;Skill[24].Anywhat[1]=5,Skill[24].Anykill[1]=11,Skill[24].color=1,Skill[24].Qi=3;
    str="万箭齐发";for(int i=0;i<strlen(str);i++)Skill[25].Name[i]=str[i];Skill[25].Kill=20,Skill[25].What=2,Skill[25].Any=0,Skill[25].color=11,Skill[25].Qi=1.5;
    str="毒箭";for(int i=0;i<strlen(str);i++)Skill[26].Name[i]=str[i];Skill[26].Kill=20,Skill[26].What=1,Skill[26].Any=1;Skill[26].Anywhat[1]=2,Skill[26].Anykill[1]=10,Skill[26].Time[1]=2;Skill[26].color=8,Skill[26].Qi=0.8;
    str="神偷手";for(int i=0;i<strlen(str);i++)Skill[27].Name[i]=str[i];Skill[27].What=1,Skill[27].Any=1;Skill[27].Anywhat[1]=10,Skill[27].Anykill[1]=30,Skill[27].color=5,Skill[27].Qi=0;
    str="乱拳";for(int i=0;i<strlen(str);i++)Skill[28].Name[i]=str[i];Skill[28].Kill=10,Skill[28].What=1,Skill[28].Any=1,Skill[28].Anywhat[1]=4,Skill[28].Anykill[1]=60,Skill[28].color=1,Skill[28].Qi=1.3;
    str="喝酒";for(int i=0;i<strlen(str);i++)Skill[29].Name[i]=str[i];Skill[29].What=3,Skill[29].Any=1;Skill[29].Anywhat[1]=1,Skill[29].Anykill[1]=20;Skill[29].color=2,Skill[29].Qi=0.8;
    str="火箭炮";for(int i=0;i<strlen(str);i++)Skill[30].Name[i]=str[i];Skill[30].Kill=50,Skill[30].What=1,Skill[30].Any=1,Skill[30].Anywhat[1]=3,Skill[30].Anykill[1]=30;Skill[30].color=4,Skill[30].Qi=2;
    str="榴弹炮";for(int i=0;i<strlen(str);i++)Skill[31].Name[i]=str[i];Skill[31].Kill=40,Skill[31].What=2,Skill[31].Any=1,Skill[31].Anywhat[1]=3,Skill[31].Anykill[1]=30;Skill[31].color=7,Skill[31].Qi=3;
    str="激光炮";for(int i=0;i<strlen(str);i++)Skill[32].Name[i]=str[i];Skill[32].Kill=70,Skill[32].What=1,Skill[32].Any=0,Skill[32].color=5,Skill[32].Qi=3;
}
int main() {srand((unsigned)time(NULL));Start();while(1) Main(); return 0;}

  

愤怒的小胎
最新修改:小问题修复。

#include<bits/stdc++.h>
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
using namespace std;
const double pi=3.1415926536;
int toint(float a){return ((int)(a*10+5))/10;}
void Color(int a)
{
    if(a==0||a==14||a==20) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
    if(a==1||a==12) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
    if(a==2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
    if(a==3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
    if(a==4||a==11) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
    if(a==5||a==13) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
    if(a==7) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_BLUE);
    if(a==15) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);
    if(a==16) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN);
    if(a==17) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);
    if(a==8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
    if(a==6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
    if(a==9) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|BACKGROUND_RED|BACKGROUND_GREEN);
}
void SetPos(float x,float y)
{
    int xx=toint(x),yy=toint(y);
    COORD pos;pos.X=yy*2,pos.Y=xx;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
struct node
{
    int W,W2,S,mS;
    float X,Y;
    float vx,vy;
    float ax,ay;
    bool go,boom;
}blt[100001],pig[100001],boo[100001];
int T,yX,yY,Xy,put,K,K2,Sle,What;
int Bot,Pit,Blt,Pig,Sco,pigk,scok;
int m[41][41];
void Cout(int a,int x,int y)
{
    if(a==1) SetPos(x,y),Color(5),cout<<put<<' ';
    if(y==202)
    {
        SetPos(pig[a].X,pig[a].Y);cout<<"  ";
        if((pig[a].W==2||pig[a].W==3)&&pig[a].X>=2) SetPos(pig[a].X-2,pig[a].Y);cout<<"  ",SetPos(pig[a].X-1,pig[a].Y);cout<<"  ";
        if(pig[a].W==4) SetPos(pig[a].X,pig[a].Y-1),cout<<"  "; 
        if(pig[a].W==5) SetPos(pig[a].X-1,pig[a].Y),cout<<"  ",SetPos(pig[a].X-1,pig[a].Y-1),cout<<"  ";
    }
    if(a==2)
    for(int i=0;i<=40;i++)
    for(int j=0;j<=40;j++)
    {
        if(i<=18&&m[i][j]==1) SetPos(i,j),Color(7),cout<<"■";
        if(m[i][j]>=2&&m[i][j]<=19) SetPos(i,j),Color(5),cout<<"█",m[i][j]++;
        if(m[i][j]>19&&m[i][j]<=29) SetPos(i,j),Color(0),cout<<"█",m[i][j]++;
        if(m[i][j]==30) SetPos(i,j),Color(0),cout<<"  ",m[i][j]=0;
        if(m[i][j]>=31&&m[i][j]<=49) SetPos(i,j),Color(0),cout<<"■",m[i][j]++;
        if(m[i][j]==50) SetPos(i,j),Color(7),cout<<"■",m[i][j]=1;
    }
    if(y==666)
    {
        SetPos(blt[a].X,blt[a].Y);
        Color(10+blt[a].W),cout<<"●";
    }Color(0);
}
void Go(int a)
{
    SetPos(blt[a].X,blt[a].Y);cout<<"  ";
    blt[a].X+=blt[a].vx/2;blt[a].Y+=blt[a].vy/2;blt[a].vx+=blt[a].ax/2;blt[a].vy+=blt[a].ay/2;
    if(blt[a].X>=20) blt[a].X=19;
    if(blt[a].X>20||blt[a].Y>38||blt[a].X<0||blt[a].Y<=0) blt[a].go=1;
    if(blt[a].W2==1&&blt[a].Y>=Xy) blt[a].go=1,Sle=0;//地跑鸟
    if(blt[a].W2==0)
    {
        for(int i=0;i<=blt[a].vx/2+1;i++)
        {
            if(blt[a].vx>0&&m[toint(blt[a].X)+i][toint(blt[a].Y)]==1) //上反弹 
            {
                if(blt[a].W!=5) blt[a].boom=1;
                blt[a].X=toint(blt[a].X)+i-1,blt[a].Y+=blt[a].vy/2,blt[a].vx=-blt[a].vx*0.4,blt[a].vy=blt[a].vy*0.8;
                if(blt[a].W==3) blt[a].ax=0.5;if(blt[a].W==7) blt[a].vx*=2;
                if(blt[a].W==10) blt[a].go=1,Bot++,boo[Bot].X=blt[a].X,boo[Bot].Y=blt[a].Y,boo[Bot].S=1,boo[Bot].mS=4;
            }
            if(blt[a].vx<0&&m[toint(blt[a].X)-i][toint(blt[a].Y)]==1) //下反弹 
            {
                if(blt[a].W!=5) blt[a].boom=1;
                blt[a].X=toint(blt[a].X)+i+1,blt[a].Y+=blt[a].vy/2,blt[a].vx=-blt[a].vx,blt[a].vy=blt[a].vy*0.8;
                if(blt[a].W==3) blt[a].ax=0.5;if(blt[a].W==7) blt[a].vx*=2;
                if(blt[a].W==10) blt[a].go=1,Bot++,boo[Bot].X=blt[a].X,boo[Bot].Y=blt[a].Y,boo[Bot].S=1,boo[Bot].mS=4;
            }
        }
        if(abs(blt[a].vx)<=0.1&&abs(blt[a].vy)<=0.1&&abs(blt[a].ay)<=0.1)
        {
            blt[a].go=1;
            if(blt[a].W==5) Bot++,boo[Bot].X=blt[a].X,boo[Bot].Y=blt[a].Y,boo[Bot].S=1,boo[Bot].mS=4,blt[a].go=1;
        }
    }
    if(blt[a].go==0) Cout(a,0,666);
}
void Kill(int a)
{
    if(pig[a].go==0&&pig[a].W!=2&&pig[a].W!=3&&pig[a].Y<16) Cout(a,202,202),pig[a].Y=16;
    if(pig[a].go==0&&pig[a].W==4&&pig[a].Y<20) pig[a].W=1;
    int R=rand()%50;Cout(a,202,202);
    /////////清除猪猪 
    pig[a].X+=pig[a].vx/2;pig[a].Y+=pig[a].vy/2;pig[a].vx+=pig[a].ax/2;pig[a].vy+=pig[a].ay/2;
    for(int i=-2;i<=pig[a].vx/2+1;i++)
    {
        if(m[toint(pig[a].X)+i][toint(pig[a].Y)]==1) //上反弹 
        pig[a].X=toint(pig[a].X)+i-1,pig[a].Y+=pig[a].vy/2,pig[a].vx=-pig[a].vx*0.5,pig[a].vy=pig[a].vy*0.8;
    }
    for(int i=Blt-10;i<=Blt;i++)
    {
        if(pig[a].W==5&&blt[i].go==0&&abs(pig[a].X-blt[i].X)<=1&&abs(pig[a].Y-blt[i].Y)<=1) {m[toint(pig[a].X)-1][toint(pig[a].Y)]=2,pig[a].W2++;Sco+=2;break;}
        if(pig[a].W==5&&m[toint(pig[a].X)][toint(pig[a].Y)]>=2&&m[toint(pig[a].X)][toint(pig[a].Y)]<30) {m[toint(pig[a].X)-1][toint(pig[a].Y)]=2,pig[a].W2++;Sco+=2;break;}
        if(blt[i].go==0&&abs(pig[a].X-blt[i].X)<=1&&abs(pig[a].Y-blt[i].Y)<=1)
        {
            if(pig[a].W==6) Bot++,boo[Bot].X=pig[a].X,boo[Bot].Y=pig[a].Y,boo[Bot].S=1,boo[Bot].mS=4,blt[i].go=1;
            m[toint(pig[a].X)][toint(pig[a].Y)]=2,pig[a].go=1,Pig--,Sco+=10;break;
        }
        if(m[toint(pig[a].X)][toint(pig[a].Y)]>=2&&m[toint(pig[a].X)][toint(pig[a].Y)]<30)
        {
            if(pig[a].W==6) Bot++,boo[Bot].X=pig[a].X,boo[Bot].Y=pig[a].Y,boo[Bot].S=1,boo[Bot].mS=4;
            pig[a].go=1,Pig--,Sco+=10;break;
        }
        if((pig[a].W==2||pig[a].W==3)&&blt[i].go==0&&abs(pig[a].X-2-blt[i].X)<=1&&abs(pig[a].Y-blt[i].Y)<=1) {m[toint(pig[a].X)][toint(pig[a].Y)]=2,pig[a].go=1,Pig--,Sco+=10;break;}
        if((pig[a].W==2||pig[a].W==3)&&m[toint(pig[a].X-2)][toint(pig[a].Y)]>=2&&m[toint(pig[a].X-2)][toint(pig[a].Y)]<30) {pig[a].go=1,Pig--,Sco+=10;break;}
    }
    /////////弄死猪猪 
    if(pig[a].go==0)
    {
        if(pig[a].go==0&&pig[a].W!=2&&pig[a].W!=3&&pig[a].Y<16) Cout(a,202,202),pig[a].Y=16;
        if(pig[a].go==0&&pig[a].W==4&&pig[a].Y<20) pig[a].W=1;
        int Xx=toint(pig[a].X),Xy=toint(pig[a].Y);
        if(pig[a].W==6) SetPos(pig[a].X,pig[a].Y),Color(9),cout<<"TN",Color(0);
        else{
        SetPos(pig[a].X,pig[a].Y),Color(2),cout<<"●";
        if((pig[a].W==2||pig[a].W==3)&&pig[a].X>=2) SetPos(pig[a].X-2,pig[a].Y),Color(0),cout<<"○",SetPos(pig[a].X-1,pig[a].Y),cout<<"|";
        if(pig[a].W==4) SetPos(pig[a].X,pig[a].Y-1),Color(2),cout<<"﹃";
        if(pig[a].W==5)
        {
            SetPos(pig[a].X-1,pig[a].Y),Color(8);SetPos(pig[a].X-1,pig[a].Y-1),cout<<"▁";
            if(pig[a].W2==0)cout<<"▅";if(pig[a].W2==1)cout<<"▃";if(pig[a].W2==2)cout<<"▂";if(pig[a].W2==3) pig[a].W=1,pig[a].W2=0,SetPos(pig[a].X-1,pig[a].Y-1),cout<<"  ";
        }
        }
        /////////输出猪猪 
        if(pig[a].W==2&&pig[a].X>pig[a].S) pig[a].W=3,pig[a].ax=-0.4,pig[a].vx=1.5;
        else if(pig[a].W==3&&pig[a].X<=pig[a].S) pig[a].W=2,pig[a].ax=0.4,pig[a].vx=-1.5;
        if((pig[a].W==2||pig[a].W==3)&&(pig[a].Y<=10||pig[a].Y>=38)) pig[a].vy*=-1;
        if(pig[a].W==4&&R==0&&pig[a].X==20) pig[a].vx=-((rand()%40)/10);
        if(pig[a].W==4)
        {
            int r=rand()%20;
            for(int i=Blt-10;i<=Blt;i++) if(r<=5&&blt[i].go==0&&pig[a].Y-blt[i].Y<=5&&abs(blt[i].X-pig[a].X)<=1.5&&r<5) r=0;
            if(r==0)
            {
                m[toint(pig[a].X)][toint(pig[a].Y)-2]=10;m[toint(pig[a].X)][toint(pig[a].Y)-3]=2;
                for(int j=toint(pig[a].Y)-1;j>=toint(pig[a].Y)-5;j--)
                {
                    for(int i=Blt-10;i<=Blt;i++) if(blt[i].go==0&&!(blt[i].W==3&&blt[i].boom==1)&&blt[i].W2==0&&toint(blt[i].Y)==j&&abs(blt[i].X-pig[a].X)<=2) blt[i].vy=-2;
                    for(int i=Pit-50;i<=Pit;i++) if(pig[i].go==0&&toint(pig[i].Y)==j&&abs(pig[i].X-pig[a].X)<=2) pig[i].vy=-1;
                }
            }
        }
        /////////移动猪猪 
        if(pig[a].go==0&&pig[a].W!=2&&pig[a].W!=3&&pig[a].Y<16) Cout(a,202,202),pig[a].Y=16;
        if(pig[a].go==0&&pig[a].W==4&&pig[a].Y<20) pig[a].W=1;
        if(pig[a].X>20||pig[a].Y>38||pig[a].X<0||pig[a].Y<=0) pig[a].go=1,Pig--,Cout(a,202,202);
        /////////清除猪猪 
    }
}
void Creat(int a,int p)
{
    if(a==-1&&p==-1)
    {
        Blt++;blt[Blt].W=What;blt[Blt].W2=1;
        blt[Blt].vy=1;blt[Blt].X=19;blt[Blt].Y=0;blt[Blt].boom=1;
    }
    else if(a==0&&p==-1)
    {
        int u=rand()%7+1,U=rand()%30;
        if(u>=5) Pit++,pig[Pit].Y=rand()%15+20,pig[Pit].X=2,pig[Pit].ax=0.5,pig[Pit].W=1;
        if(u==1) Pit++,pig[Pit].Y=rand()%15+20,pig[Pit].X=2,pig[Pit].vy=0.5,pig[Pit].ax=0.5,pig[Pit].S=rand()%5+7,pig[Pit].W=2;
        if(u==2) Pit++,pig[Pit].Y=rand()%15+20,pig[Pit].X=2,pig[Pit].ax=0.5,pig[Pit].W=4;
        if(u==3) Pit++,pig[Pit].Y=rand()%15+20,pig[Pit].X=2,pig[Pit].ax=0.5,pig[Pit].W=5;
        if(u==4) Pit++,pig[Pit].Y=rand()%15+20,pig[Pit].X=2,pig[Pit].ax=0.5,pig[Pit].W=6;
        if(U==1) Bot++,boo[Bot].Y=rand()%13+15,boo[Bot].X=(rand()%4)*3+8,boo[Bot].S=0,boo[Bot].mS=rand()%2+2,boo[Bot].W2=1;
    }
    else
    {
        Blt++;blt[Blt].W=What;
        if(a==1) blt[Blt].X=yX;blt[Blt].Y=yY;blt[Blt].ax=0.5; //抛物线
        blt[Blt].vx=-3.5*sin(p*pi/180);
        blt[Blt].vy=3*cos(p*pi/180);
        if(p<=45) blt[Blt].vy*=1+(0.33-0.01*(45-p));
        if(p>=45) blt[Blt].vy*=1+(0.33-0.01*(p-45));
        if(blt[Blt].W==6) blt[Blt].vy*=1.2,blt[Blt].ax=0.4;
    }
}
void Boom(int a)
{
    if(boo[a].W2==0)
    {
        int ms=boo[a].mS,s=boo[a].S,x=boo[a].X,y=boo[a].Y;
        if(s==ms) return;
        for(int i=x-s;i<=x+s;i++)
        for(int j=y-s;j<=y+s;j++)
        {
            float k=(i-x)*(i-x)+(j-y)*(j-y)-s*s;
            if(k<=s&&k>=-s&&i<=20&&j<=38&&i>=0&&j>0&&m[i][j]!=1) m[i][j]=2;
        }boo[a].S++;
    }
    if(boo[a].W2==1)
    {
        int ms=boo[a].mS,s=boo[a].S,x=boo[a].X,y=boo[a].Y;
        if(s==ms) return;
        if(y-s>10) m[x][y-s]=31-31*(boo[a].W2-1);
        if(y+s<40) m[x][y+s]=31-31*(boo[a].W2-1);
        boo[a].S++;
    }
}
void Move(int a)
{
    Color(5);
    if(a==-2) SetPos(17,Xy),cout<<"        ",SetPos(18,Xy),cout<<"        ",SetPos(19,Xy),cout<<"        ",SetPos(20,Xy),cout<<"       ";
    if(a==-1) SetPos(17,Xy),cout<<"        ",SetPos(18,Xy),cout<<"  ┃  ┃",SetPos(19,Xy),cout<<"  ╰┳╯",SetPos(20,Xy),cout<<"     ▏";
    if(a==0) SetPos(18,Xy),cout<<"  ┃",Color(What+10),cout<<"●",Color(5),cout<<"┃",SetPos(19,Xy),cout<<"  ╰┳╯",SetPos(20,Xy),cout<<"     ▏";
    if(a==1) SetPos(18,Xy),cout<<"  ",Color(What+10),cout<<"●",Color(5),cout<<"  ┃",SetPos(19,Xy),cout<<"  ╰┳╯",SetPos(20,Xy),cout<<"     ▏";
    if(a==2) SetPos(18,Xy),Color(What+10),cout<<"●",Color(5),cout<<"┃  ┃",SetPos(19,Xy),cout<<"  ╰┳╯",SetPos(20,Xy),cout<<"     ▏";
    if(a==3) SetPos(18,Xy),cout<<"  ┃  ┃",SetPos(19,Xy),Color(What+10),cout<<"●",Color(5),cout<<"╰┳╯",SetPos(20,Xy),cout<<"     ▏";
    if(a==4) SetPos(18,Xy),cout<<"  ┃  ┃",SetPos(19,Xy),cout<<"  ╰┳╯",SetPos(20,Xy),Color(What+10),cout<<"●",Color(5),cout<<"   ▏";
    if(a==5) SetPos(18,Xy),cout<<"  ┃  ┃",SetPos(19,Xy),cout<<"  ╰┳╯",SetPos(20,Xy),cout<<"  ",Color(What+10),cout<<"●",Color(5),cout<<" ▏";
    if(a==6) SetPos(18,Xy),cout<<"  ┃  ┃",SetPos(19,Xy),cout<<"  ╰┳╯",SetPos(20,Xy),cout<<"    ",Color(What+10),cout<<"●",Color(5),cout<<" ";
    Color(0);
}
void Start()
{
    char g;Color(5);system("cls");
    SetPos(1,1);cout<<"------- 愤 怒 的 小 胎 -------";Color(0);
    SetPos(3,1);cout<<"空格瞄准,按X触发小胎技能,←→移动弹弓";
    SetPos(5,1);cout<<"猪猪技能自动触发,空中会有墙出现。";
    SetPos(7,1);cout<<"危险值由命中率,猪的存活时间计算!";
    SetPos(9,1);cout<<"危险值点满后失败!1500分通关!";
    SetPos(1,20);cout<<"-------- 小 胎 技 能 --------";
    SetPos(3,20);Color(11),cout<<"●",Color(0),cout<<":无技能";
    SetPos(5,20);Color(12),cout<<"●",Color(0),cout<<":分身!不同分身初速度大小相同,";
    SetPos(6,20);cout<<"        方向不同。";
    SetPos(7,20);Color(13),cout<<"●",Color(0),cout<<":加速!以当前速度做匀速直线运动,";
    SetPos(8,20);cout<<"          且免疫狙击猪的冲击。";
    SetPos(9,20);Color(14),cout<<"●",Color(0),cout<<":投蛋!并获得向上速度做匀速直线";
    SetPos(10,20);cout<<"          运动,快达可以穿墙。";
    SetPos(11,20);Color(15),cout<<"●",Color(0),cout<<":爆炸!";
    SetPos(13,20);Color(16),cout<<"●",Color(0),cout<<":回旋!开始做向左加速运动!发射";
    SetPos(14,20);cout<<"          时获得双倍水平速度。";
    SetPos(15,20);Color(17),cout<<"●",Color(0),cout<<":[被动] 弹跳力为普通鸟三倍。发射";
    SetPos(16,20);cout<<"          时获得1.5倍水平、竖直速度。";
    SetPos(11,1);cout<<"-------- 猪 猪 技 能 --------";
    SetPos(13,2);Color(2),cout<<"●",Color(0),cout<<":无技能";
    SetPos(14,1);Color(8),cout<<"▁▅";
    SetPos(15,2);Color(2),cout<<"●",Color(0),cout<<":防御力为普通猪三倍";
    SetPos(16,2);cout<<"○";
    SetPos(17,2);cout<<"│:做空中简谐运动,受死范围";
    SetPos(18,2);Color(2),cout<<"●",Color(0),cout<<"  为普通猪两倍。";
    SetPos(19,2);cout<<"    有几率跳起或发射冲击波,冲";
    SetPos(20,1);Color(2),cout<<"﹃●",Color(0),cout<<":开小胎与同类,可以引爆TNT!";
    SetPos(18,20);Color(5),cout<<"按 y 开始游戏!";
    A:if(kbhit()) g=_getch();
    if(g!='y') goto A;
}
int main()
{
    system("mode con cols=79 lines=22");
    CONSOLE_CURSOR_INFO cursor_info={1,0};
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
    srand((unsigned)time(NULL));St:Start();system("cls");
    memset(blt,0,sizeof(blt));memset(pig,0,sizeof(pig));
    memset(boo,0,sizeof(boo));memset(m,0,sizeof(m));
    T=put=K=K2=Sle=What=Pig=Sco=0;pigk=scok=-1;
    Xy=4,yX=18,yY=6;Blt=20,Bot=20,Pit=60;Color(7);
    SetPos(19,14);cout<<"■";
    SetPos(20,13);cout<<" █▍";m[19][14]=m[20][13]=m[20][14]=1;
    SetPos(21,0);for(int i=0;i<39;i++) cout<<"■",m[21][i]=1;
    Color(0);What=rand()%5+1;
    while(1)
    {
        if(Sco>=1500) break;
        T++;K=0;Color(0);
        if(Sco!=scok) SetPos(1,1),cout<<"分数:"<<Sco<<' ';
        if(Pig!=pigk){SetPos(3,1);cout<<"危险值:";int aa=min(Sco/100,10);Pig+=aa;
        SetPos(3,5);if(Pig<=2) Color(2);else if(Pig<=4) Color(16);else if(Pig<=6) Color(7);else if(Pig<=9) Color(6);
        else if(Pig<=12) Color(3);else if(Pig<=15) Color(17);else Color(11);
        for(int i=1;i<=Pig;i++) cout<<"■";Color(0);cout<<' '<<Pig;for(int i=1;i<=5;i++) cout<<"  ";
        if(Pig>18) break;Pig-=aa;}
        scok=Sco;pigk=Pig;
        if(GetAsyncKeyState(VK_LEFT)&0x8000&&Xy>0) Move(-2),Xy--,K=1;
        if(GetAsyncKeyState(VK_RIGHT)&0x8000&&Xy<10) Move(-2),Xy++,K=1;
        if(K==1)
        {
            if(put==0&&Sle==0) Move(0);
            else Move(-1);
        }
        if(kbhit())
        {
            char g=_getch();
            if(g=='x'||g=='X')
            {
                for(int i=Blt-10;i<=Blt;i++)
                if(blt[i].go==0&&blt[i].boom==0&&blt[i].W!=1&&blt[i].W!=7)
                {
                    blt[i].boom=1;
                    if(blt[i].W==2)
                    {
                        Blt++;blt[Blt].W=2;blt[Blt].vy=blt[i].vy*1.2;blt[Blt].vx=blt[i].vx+1;
                        blt[Blt].ax=blt[i].ax;blt[Blt].X=blt[i].X;blt[Blt].Y=blt[i].Y;blt[Blt].boom=1;
                        Blt++;blt[Blt].W=2;blt[Blt].vy=blt[i].vy*0.7;blt[Blt].vx=blt[i].vx-1;
                        blt[Blt].ax=blt[i].ax;blt[Blt].X=blt[i].X;blt[Blt].Y=blt[i].Y;blt[Blt].boom=1;
                    }
                    if(blt[i].W==3) blt[i].vy=fmax(blt[i].vy*1.5,2.5),blt[Blt].vx+=1,blt[i].ax=0;
                    if(blt[i].W==4)
                    {
                        blt[i].vx=-3;blt[i].ax=0.1;Blt++;blt[Blt].boom=1;blt[Blt].W=10;
                        blt[Blt].X=blt[i].X;blt[Blt].Y=blt[i].Y;blt[Blt].ax=blt[i].ax,blt[Blt].vx=1;
                    }
                    if(blt[i].W==5) Bot++,boo[Bot].X=blt[i].X,boo[Bot].Y=blt[i].Y,boo[Bot].S=1,boo[Bot].mS=5,blt[i].go=1;
                    if(blt[i].W==6) blt[i].ay=-1,blt[i].ax=0.3,blt[i].vx=min(blt[i].vx/2,(float)0);
                    break;
                }
            }
        }
        if(GetAsyncKeyState(' ')&0x8000&&K==0&&Sle==0)
        {
            if(put<=5) Move(1),yX=18,yY=Xy+1;
            else if(put<=20) Move(2),yX=18,yY=Xy;
            else if(put<=40) Move(3),yX=19,yY=Xy;
            else if(put<=60) Move(4),yX=20,yY=Xy;
            else if(put<=80) Move(5),yX=20,yY=Xy+1;
            else Move(6),yX=20,yY=Xy+2;
            if(put==0) K2=1;if(put==90) K2=-1;
            if(K2==1) put+=min(rand()%7+1,90-put);
            if(K2==-1) put-=min(rand()%7+1,put);
            Cout(1,17,Xy+2);
        }
        if((!(GetAsyncKeyState(' ')&0x8000)&&(put!=0))||(put!=0&&K==1))
        Move(-1),Creat(1,put),put=0,yX=18,yY=5,Sle=1,What=rand()%7+1,Creat(-1,-1),Sco=max(Sco-5,0);
        for(int i=Blt-10;i<=Blt;i++) if(blt[i].go==0) Go(i);
        for(int i=Bot-10;i<=Bot;i++) if(boo[i].go==0) Boom(i),Cout(2,0,0);
        for(int i=Pit-50;i<=Pit;i++) if(pig[i].go==0) Kill(i);
        if(Sle!=0) Move(-1);
        else if(put==0) Move(0);
        if(T%300==0) system("cls"),pigk=scok=-1;
        if(T%100==0)
        {
            Color(7);
            for(int i=0;i<=18;i++)
            for(int j=0;j<=40;j++) if(m[i][j]==1&&T%100==0) SetPos(i,j),cout<<"■";
            SetPos(19,14),cout<<"■",SetPos(20,13),cout<<" █▍";
            SetPos(21,0);for(int i=0;i<39;i++) cout<<"■";Color(0);
        }
        if(T%min(50,(2000-Sco)/30)==0) Pig++,Creat(0,-1);
        Sleep(30);
    }
    if(Sco<1500) {SetPos(9,17);system("color 7F");Color(11);cout<<"YOU DIE !";}
    else {SetPos(9,17);system("color 6E");Color(5);cout<<"YOU WIN !";}
    SetPos(11,16);Sleep(1000);cout<<"play again? (y/n)";Sleep(1000);char g;
    A:if(kbhit()) g=_getch();SetPos(18,0);
    if(g=='n') return 0;
    else if(g!='y') goto A;
    else if(g=='y') goto St;
}

  

抽奖
posted on 2026-01-02 18:02  Green_wang  阅读(0)  评论(0)    收藏  举报