#include<bits/stdc++.h>
#include<windows.h>
#pragma GCC optimize(3,"Ofast","inline")
#include<conio.h>
#define elif else if
using namespace std;
int x,y,blondr=20,blondb=20,redz=5,bluez=5,siz=12,xx=siz-1,yy=siz-1,rz=40,bz=40;
char ch,a[14][14];
void changecolor(int color) {
HANDLE hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsoleOutput, color);
}//changecolor(FOREGROUND_BLUE);
void ddd(int x,int y,int xx,int yy){
for(int i=0;i<siz;i++) for(int j=0;j<siz;j++) if((a[i][j]=='*'&&j==siz-1)||(a[i][j]=='+'&&j==0)) a[i][j]=' ';
elif(a[i][j]=='*'&&a[i][j+1]=='+') a[i][j]=a[i][j+1]=' ';
elif(a[i][j]=='*'&&a[i][j+2]=='+') a[i][j]=a[i][j+2]=' ';
elif(a[i][j]=='*'&&xx==i&&(yy==j+1||yy==j)){
a[i][j]=' ';
blondb-=1;
}
elif(a[i][j]=='+'&&x==i&&(y==j-1||y==j)){
a[i][j]=' ';
blondr-=1;
}
for(int i=0;i<siz;i++) for(int j=0;j<siz;j++) if(a[i][j]=='+') swap(a[i][j-1],a[i][j]);
for(int i=siz-1;i>=0;i--) for(int j=siz-1;j>=0;j--) if(a[i][j]=='*') swap(a[i][j],a[i][j+1]);
system("cls");
for(int i=0;i<siz;i++,cout<<endl) for(int j=0;j<=siz;j++) if(x==i&&y==j){
changecolor(FOREGROUND_RED);
cout<<(char)1<<' ';
changecolor(FOREGROUND_GREEN);
}
elif(xx==i&&yy==j){
changecolor(FOREGROUND_BLUE);
cout<<(char)1<<' ';
changecolor(FOREGROUND_GREEN);
}
elif(j==siz) cout<<'|'<<' ';
elif(a[i][j]=='*'){
changecolor(FOREGROUND_RED);
cout<<'*'<<' ';
changecolor(FOREGROUND_GREEN);
}
elif(a[i][j]=='+'){
changecolor(FOREGROUND_BLUE);
cout<<'+'<<' ';
changecolor(FOREGROUND_GREEN);
}
else cout<<" ";
for(int i=0;i<siz*2+1;i++) cout<<'-';
changecolor(FOREGROUND_RED);
cout<<endl<<endl<<endl<<endl<<" "<<"red血量:"<<blondr<<" "<<"red子弹:"<<redz<<endl<<endl;
changecolor(FOREGROUND_BLUE);
cout<<" "<<"blue血量:"<<blondb<<" "<<"blue子弹:"<<bluez<<endl;
changecolor(FOREGROUND_GREEN);
}//红*蓝+
int sum;
signed main(){
cout<<"双人大战:"<<endl<<"红方:WASD,E开炮。"<<endl<<"蓝方:5123,4开炮。";
system("pause");
changecolor(FOREGROUND_GREEN);
ddd(x,y,xx,yy);
while(1){
rz++;bz++;
if(_kbhit()){
ch=_getch();
if(ch=='w'&&!(xx==x-1&&yy==y)) x=max(0,x-1);
elif(ch=='s'&&!(xx==x+1&&yy==y)) x=min(siz-1,x+1);
elif(ch=='a'&&!(xx==x&&yy==y-1)) y=max(0,y-1);
elif(ch=='d'&&!(xx==x&&yy==y+1)) y=min(siz-1,y+1);
elif(ch=='5'&&!(xx==x+1&&yy==y)) xx=max(0,xx-1);
elif(ch=='2'&&!(xx==x-1&&yy==y)) xx=min(siz-1,xx+1);
elif(ch=='1'&&!(xx==x&&yy==y+1)) yy=max(0,yy-1);
elif(ch=='3'&&!(xx==x&&yy==y-1)) yy=min(siz-1,yy+1);
elif(ch=='e'&&redz>0){
rz-=8;
if(y<siz-1) a[x][y]='*';
}
elif(ch=='4'&&bluez>0){
bz-=8;
if(yy>0) a[xx][yy]='+';
}
}
ddd(x,y,xx,yy);
if(blondr==0||blondb==0) break;
rz=min(400,rz);
bz=min(400,bz);
redz=rz/8;
bluez=bz/8;
// Sleep(20);
}
system("cls");
if(blondr==0) changecolor(FOREGROUND_BLUE);
else changecolor(FOREGROUND_RED);
cout<<(blondr ? "RED":"BLUE");
changecolor(FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
cout<<" WIN!"<<endl;
Sleep(2500);
return 0;
}
此程序因为有“system("cls");”,所以特别“闪”,有什么方法禁止或大幅减少闪的频率?