求助
  • 板块灌水区
  • 楼主LX_cpp
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/11/15 18:55
  • 上次更新2023/11/15 20:19:59
查看原帖
求助
902058
LX_cpp楼主2023/11/15 18:55

代码不知道怎么打了,帮我看看吧

(一个纯游戏的,不喜划走)


/*
图例
#——土地
^——sea
.——沙漠 
O——首都 
R——城市 
$——金矿 
*/
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
char mp[120][60];
int bh; 
int zl[120][60];
int sdx[5][2],sdy[5][2];
int my[5];
bool ch[10];
string p;
int n; 
int r;
void mapdownload(int x){
	if(x<1||x>3){
		cout<<"这不是正确的地图编号!"<<endl;
		int r;
		cin>>r;
		mapdownload(r); 
	}
	if(x==1){
		for(int i=1;i<=23;i++){
			for(int j=1;j<=46;j++){
				mp[i][j]='^';
				
			}
		}
		for(int i=2;i<=5;i++){
			for(int j=3;j<=8;j++){
				mp[i][j]='#';
			}
		}
		for(int i=3;i<=17;i++){
			for(int j=4;j<=10;j++){
				mp[i][j]='#';
			}
		}
		for(int i=20;i<=23;i++){
			for(int j=4;j<=7;j++){
				mp[i][j]='#';
			}
		}
		for(int i=3;i<=9;i++){
			for(int j=3;j<=20;j++){
				mp[i][j]='#';
			}
		}
		for(int i=3;i<=9;i++){
			for(int j=23;j<=40;j++){
				mp[i][j]='#';
			}
		}
		for(int i=17;i<=23;i++){
			for(int j=34;j<=46;j++){
				mp[i][j]='#';
			}
		}
		
		for(int i=1;i<=9;i++){
			for(int j=2;j<=14;j++){
				mp[i][j]='#';
			}
		}
		mp[5][17]='$';
		mp[3][19]='$';
		mp[6][23]='$';
		mp[3][41]='$';
		mp[19][32]='$';
		mp[24][18]='$';
		mp[13][23]='$';
		mp[14][38]='$';
		mp[4][9]='$';
		mp[38][0x0a]='$';
		mp[3][15]='$';
		mp[4][1]='$';
		mp[2][12]='$';
		mp[5][1]='$';
		mp[2][9]='$';
		mp[23][12]='$';
		mp[12][23]='$';
		mp[4][9]='$';
		mp[3][14]='$';
		mp[8][0x0a]='$';
	}
	if(x==2){
		for(int i=1;i<=23;i++){
			for(int j=1;j<=46;j++){
				mp[i][j]='.';
				
			}
		}
		mp[15][17]='$';
		mp[13][19]='$';
		mp[2*6][2*3]='$';
		mp[3][21]='$';
		mp[19][3*2]='$';
		mp[2+4][1+8]='$';
		mp[1*3][3+4]='$';
		mp[45][8]='$';
		mp[14][29]='$';
		mp[8][10]='$';
		mp[13][15]='$';
		mp[14][41]='$';
		mp[32][2]='$';
		mp[15][16]='$';
		mp[23][39]='$';
		mp[23][2]='$';
		mp[12][23]='$';
		mp[20][9]='$';
		mp[3][4]='$';
		mp[8][0x0a]='$';
	}
	if(x==3){
		for(int i=1;i<=23;i++){
			for(int j=1;j<=46;j++){
				mp[i][j]='#';
				
			}
		}
		for(int i=5;i<=17;i++){
			for(int j=1;j<=46;j++){
				mp[i][j]='^';
			}
		}
		mp[15][17]='$';
		mp[13][19]='$';
		mp[2*6][2*3]='$';
		mp[3][21]='$';
		mp[19][3*2]='$';
		mp[2+4][1+8]='$';
		mp[1*3][3+4]='$';
		mp[45][8]='$';
		mp[14][29]='$';
		mp[8][10]='$';
		mp[13][15]='$';
		mp[14][41]='$';
		mp[32][2]='$';
		mp[15][16]='$';
		mp[23][39]='$';
		mp[23][2]='$';
		mp[12][23]='$';
		mp[20][9]='$';
		mp[3][4]='$';
		mp[8][0x0a]='$';
	}
}
void check(int x,int y,int s){
	bool r=false;
    for(int i=x-2;i<=x+2;i++){
		for(int j=y-2;j<=y+2;j++){
			if(zl[i][j]==s){
				r=true;
			}
		}
    }
    if(r){
		cout<<"操作成功!!!"<<endl; 
		for(int i=x-1;i<=x+1;i++){
			for(int j=y-1;j<=y+1;j++){
				zl[i][j]=s;
			}
		}
    }else{
		cout<<"操作不合法,请再试一遍"<<endl;
		int h,l;
		cin>>h>>l;
		check(h,l,s);
    }
}
int main(){
	srand(0);
	cout<<"载入中……"<<endl;
	for(int i=0;i<=15;i++){
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),i);
		cout<<i<<" ";
	} 
	cout<<endl;
//	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x04);

	cout<<"欢迎来到《领土游戏》!请输入参战国人数(1-4):"<<endl;
	cin>>n;
	cout<<"请输入地图类型:"<<endl;
	cout<<"1、大海岛屿"<<endl;
	cout<<"2、沙漠地带"<<endl;
	cout<<"3、 巨大海峡(适合单挑)"<<endl;
	cout<<"请输入地图编号……"<<endl;
	cin>>bh;
	mapdownload(bh);
	 
	/*cout<<"地图载入中……"<<endl ;
	int c=1;
	if(c==1){
		int x1=rand()%22+1;
		
		;
		Sleep(500);
		int x2=rand()%22+x1;
		;
		int y1=rand()%45+1;
		;
		Sleep(500);
		int y2=rand()%45+y1;
		;
		for(int i=x1;i<=x2;i++){
			for(int j=y1;j<=y2;j++){
				mp[i][j]='^';
			}
		}//海洋 
		x1=rand()%22+1;
		;
		x2=rand()%22+x1;
		;
		y1=rand()%45+1;
		;
		y2=rand()%45+y1;
		for(int i=x1;i<=x2;i++){
			for(int j=y1;j<=y2;j++){
				mp[i][j]='.';
			}
		}//沙漠 
		for(int i=1;i<=5;i++){
		    x1=rand()%22+1;
			;
			y1=rand()%45+1;
			;
			mp[x1][y1]='$';
		}//金矿 
		for(int i=1;i<=20;i++){
		    x1=rand()%22+1;
			;
			y1=rand()%45+1;
			;
			mp[x1][y1]='%';
		}//铁矿 
		/*for(int i=1;i<=200+1;i++){
		    x1=rand()%22+1;
			;
			y1=rand()%45+1;
			;
			if(mp[x1][y1]!='^') mp[x1][y1]='&';
			
		}//城市 
	} */
	
	for(int i=1;i<=23;i++){
		cout<<"       "; 
		for(int j=1;j<=46;j++){
		
		    cout<<mp[i][j]; 
		}
		cout<<endl;
	}
	cout<<"请各国选择首都(输入x,y坐标):"<<endl;
	int i=1;
	while(i!=n+1){
		
		cout<<i<<":";
		cin>>sdx[i][1]>>sdy[i][1];
		mp[sdx[i][1]][sdy[i][1]]='O';
		zl[sdx[i][1]][sdy[i][1]]=i;
		cout<<endl;
		ch[i]=true;
		i++;
	} 
	cout<<"基础局势打印中……"<<endl; 
	for(int i=1;i<=23;i++){
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15);
		cout<<"       "; 
		for(int j=1;j<=46;j++){
		    
		    if(zl[i][j]){
				SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),  2*zl[i][j]+1);
		    }
		    cout<<mp[i][j]; 
		    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15);
		}
		cout<<endl;
	}
	cout<<"按任意键+enter继续"<<endl; 
	string eruuuwreurwio;
	cin>>eruuuwreurwio;
	int r=n;
	while(r>0){
		cout<<"时局:"<<endl;
			for(int i=1;i<=23;i++){
				SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15);
				cout<<"       "; 
			for(int j=1;j<=46;j++){
		    
		    	if(!zl[i][j]){
					SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15);
		    	}else{
		    		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 2*zl[i][j]+1); 
				}
		    	cout<<mp[i][j]; 
			}
		         cout<<endl;
	} 
		for(int i=1;i<=n;i++){
			if(!ch[i]){
				continue;
			}
		    int cho;
		    cout<<"请玩家"<<i<<"进行操作:"<<endl; 
		    cout<<"1、扩张"<<endl;
		    cout<<"2、建设"<<endl;
		    cout<<"3、割地"<<endl;
		    cin>>cho;
			if(cho==1){	
				int x,y;
		        cout<<"请输入扩张区域的x,y边界:"<<endl;
		        cin>>x>>y;
		        check(x,y,i);
			} 
		}
	}
}
2023/11/15 18:55
加载中...