判断将军和结束代码暂未写好求调
查看原帖
判断将军和结束代码暂未写好求调
711031
suyi1111楼主2024/9/7 19:47

移动有问题:

#include<bits/stdc++.h>
using namespace std;
string muqian="red";
bool hefa;
struct maps{
	string co,qi;
}mp[20][30];
void init(){
	char kklklkll[10][20]={
		"rrrrrrrrr",
		"         ",
		"r       r",
		"r r r r r",
		"         ",
		"         ",
		"b b b b b",
		"b       b",
		"         ",
		"bbbbbbbbb"
	};
	char kfcmdl[10][20]={
		"123454321",
		"         ",
		"6       6",
		"7 7 7 7 7",
		"         ",
		"         ",
		"7 7 7 7 7",
		"6       6",
		"         ",
		"123454321"
	};
	for(int i=0;i<10;i++){
		for(int j=0;j<9;j++){
			if(kklklkll[i][j]=='r'){
				mp[i][j].co="red";
			}else if(kklklkll[i][j]=='b')mp[i][j].co="blue";
		}
	}
	for(int i=0;i<10;i++){
		for(int j=0;j<9;j++){
			if(kfcmdl[i][j]=='1')mp[i][j].qi="car";
			if(kfcmdl[i][j]=='2')mp[i][j].qi="horse";
			if(kfcmdl[i][j]=='3')mp[i][j].qi="elephant";
			if(kfcmdl[i][j]=='4')mp[i][j].qi="guard";
			if(kfcmdl[i][j]=='5')mp[i][j].qi="captain";
			if(kfcmdl[i][j]=='6')mp[i][j].qi="duck";
			if(kfcmdl[i][j]=='7')mp[i][j].qi="soldier";
		}
	}
}
bool kong(int sas,int sbs)
{
	return mp[sas][sbs].co=="";
}
void yidong(int sx,int sy,int tx,int ty){
	if(mp[sx][sy].qi=="captain"){//王 
		if(sx-tx==1&&sy-ty==0||sx-tx==-1&&sy-ty==0||sx-tx==0&&sy-ty==1||sx-tx==0&&sy-ty==-1){
			mp[tx][ty]=mp[sx][sy];
			mp[sx][sy].co=mp[tx][ty].qi="";
		}else hefa=1;
		return;
	}
	if(mp[sx][sy].qi=="car"){
		hefa=1;
	}
	if(mp[sx][sy].qi=="guard"){//士 
		if(sx-tx==1&&sy-ty==1||sx-tx==-1&&sy-ty==1||sx-tx==-1&&sy-ty==-1||sx-tx==1&&sy-ty==-1){
			mp[tx][ty]=mp[sx][sy];
			mp[sx][sy].co=mp[tx][ty].qi="";
		}else hefa=1;
		return;
	}
	if(mp[sx][sy].qi=="horse"){
		bool sfhy=0;
		for(int i=-1;i<=1;i+=2){
			for(int j=-1;j<=1;j+=2){
				if(tx==sx+i&&ty==sy+j*2&&kong(sx,sy+j))sfhy=1;
				if(tx==sx+i*2&&ty==sy+j&&kong(sx+i,sy))sfhy=1;
			}
		} 
		if(sfhy){
			mp[tx][ty]=mp[sx][sy];
			mp[sx][sy].co=mp[tx][ty].qi="";
		} 
		if(!sfhy)hefa=1;
		return;
	}
	if(mp[sx][sy].qi=="duck"){//鸭子
		bool sfhy=0;
		for(int i=-1;i<=1;i+=2){
			for(int j=-1;j<=1;j+=2){
				if(tx==sx+i*3&&ty==sy+j*2&&kong(sx+i*2,sy+j)&&kong(sx+i,sy))sfhy=1;
				if(tx==sx+i*2&&ty==sy+j*3&&kong(sx+i,sy+j*2)&&kong(sx,sy+j))sfhy=1;
			}
		} 
		if(sfhy){
			mp[tx][ty]=mp[sx][sy];
			mp[sx][sy].co=mp[tx][ty].qi="";
		} 
		if(!sfhy)hefa=1;
		return;
	} 
	if(mp[sx][sy].qi=="soldier"){//兵 
		if(abs(sx-tx)<=1&&abs(ty-sy)<=1) {
			mp[tx][ty]=mp[sx][sy];
			mp[sx][sy].co=mp[tx][ty].qi="";
		}else hefa=1;
		return;
	}
}
bool jiangjun(){
}
bool jieshu(){
	return 0;
}
int main(){
	int bushushizheyangde;
	bool shifouyijingjieshu=0;
	for(int i=0;i<=9;i++){
		for(int j=0;j<=8;j++){
			mp[i][j].co=mp[i][j].qi="";
		}
	}
	init();
	cin>>bushushizheyangde;
	while(bushushizheyangde--){
		if(shifouyijingjieshu){cout<<"Invalid command\n";continue;}
		int xxxxx1,yyyyy1,xxxxx2,yyyyy2;
		hefa=0;
		cin>>xxxxx1>>yyyyy1>>xxxxx2>>yyyyy2;
		if(mp[xxxxx1][yyyyy1].co!=muqian||mp[xxxxx2][yyyyy2].co==muqian){
			cout<<"Invalid command\n";
			continue;
		}
		string qishiqizi=mp[xxxxx1][yyyyy1].co+" "+mp[xxxxx1][yyyyy1].qi;
		string zhongdianqizi=mp[xxxxx2][yyyyy2].co+" "+mp[xxxxx2][yyyyy2].qi;
		yidong(xxxxx1,yyyyy1,xxxxx2,yyyyy2);
		if(hefa){
			cout<<"Invalid command\n";
			continue;
		}else {
			if(muqian=="blue")muqian="red";
			else if(muqian=="red") muqian="blue";
			cout<<qishiqizi<<":"<<(zhongdianqizi==" "?"NA":zhongdianqizi)<<":";
			if(jiangjun()){
				cout<<"yes:";
			}else cout<<"no:";
			if(jieshu()){
				cout<<"yes\n";
				shifouyijingjieshu=1;
			}else cout<<"no\n";
		}
	}
	return 0;
}
2024/9/7 19:47
加载中...