悬关
  • 板块灌水区
  • 楼主fuchenghao1208
  • 当前回复2
  • 已保存回复2
  • 发布时间2025/1/17 20:58
  • 上次更新2025/1/18 09:53:43
查看原帖
悬关
1043387
fuchenghao1208楼主2025/1/17 20:58
#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");”,所以特别“闪”,有什么方法禁止或大幅减少闪的频率?

2025/1/17 20:58
加载中...