⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 game2dserver.cs

📁 c#网络编程及应用-刘瑞新
💻 CS
📖 第 1 页 / 共 2 页
字号:
			{
				server.SendToAll(string.Format("Win--2{0,1}{1,4}{2,4}",color,BlackGrade,WhiteGrade));
			}
			else
			{
				if(user[0].online)
				{
					server.SendToAll("Win--1"+BlackGrade.ToString("0000"));
				}
				else
				{
					server.SendToAll("Win--1"+WhiteGrade.ToString("0000"));
				}
			}
		}
		private void setDot(int i,int j,int color)
		{
			Grid[i,j].has_dot=true;
			Grid[i,j].color=color;
			SendData server=new SendData(listBox1);
			server.SendToAll("Set--"+i.ToString("00")+j.ToString("00")+color.ToString("0"));
			/*----------以下判断当前行是否有相邻点----------*/
			//k1:循环初值,k2:循环终值
			int k1,k2;
			if(i==0)
			{
				//如果是第0列,只需要判断右边的点
				k1=k2=1;
			}
			else if(i==14)
			{
				//如果是第14列,只需要判断左边的点
				k1=k2=13;
			}
			else
			{
				//如果是中间的列,左右两边的点都要判断
				k1=i-1;k2=i+1;
			}
			for(int x=k1;x<=k2;x+=2)
			{
				if((x==i-1||x==i+1) && Grid[x,j].has_dot && (Grid[x,j]).color==Grid[i,j].color)
				{
					//win=true;
					ShowWin(color);
				}
			}
			/*-------------以下判断当前列是否有相邻点------------------*/
			if(j==0)
			{
				k1=k2=1;
			} 
			else if(j==14)
			{
				k1=k2=13;
			} 
			else
			{
				k1=j-1;k2=j+1;
			}
			for(int y=k1;y<=k2;y+=2)
			{
				if((y==j-1||y==j+1) && Grid[i,y].has_dot && (Grid[i,y]).color==Grid[i,j].color)
				{
					ShowWin(color);
				}
			}
		}
	}

	public class SendData
	{
		private ListBox listbox; 
		public SendData(ListBox listbox)
		{
			this.listbox=listbox;
		}
		public void SendMessage(int userIndex,string str)
		{
			try
			{
				NetworkStream netStream=Game2DServer.user[userIndex].client.GetStream();
				StreamWriter sw=new StreamWriter(netStream,System.Text.Encoding.Unicode);
				sw.WriteLine(str);
				//listbox.Items.Add("send:"+str);
				sw.Flush();
			}
			catch
			{
				listbox.Items.Add("error seading data");
			}
		}

		public void SendToAll(string str)
		{
			for(int i=0;i<Game2DServer.MaxUser;i++)
			{
				if(Game2DServer.user[i].online)
				{
					SendMessage(i,str);
				}
			}
		}
		public void SendToAll(string[] Message)
		{
			for(int i=0;i<Message.Length;i++)
			{
				if(Game2DServer.user[i].online)
				{
					SendMessage(i,Message[i]);
				}
			}
		}
	}
	public class Receive
	{
		private TcpClient client;
		private ListBox listbox;
		public Receive(TcpClient tcpclient,ref ListBox listbox)
		{
			client=tcpclient;
			this.listbox=listbox;
		}

		public void ProcessService()
		{
			SendData server=new SendData(listbox);
			bool exitWhile=false;
			while(exitWhile==false)
			{
				string str="";
				try
				{
					NetworkStream netStream=client.GetStream();
					StreamReader sr=new StreamReader(netStream,System.Text.Encoding.Unicode);
					str=sr.ReadLine();
					//listbox.Items.Add("receive:"+str);
				}
				catch
				{
					listbox.Items.Add("error reading data");
					break;
				}
				//如果玩家退出或者网络故障(此时sr.ReadLine()结果为null),则退出循环
				if(str==null) break;
				if(str.Length<5)
				{
					continue;
				}
				switch(str.Substring(0,5))
				{
					case "Undot":  //客户点击出点
						int xi=Int32.Parse(str.Substring(5,2));
						int xj=Int32.Parse(str.Substring(7,2));
						int color=Int32.Parse(str.Substring(9,1));
						if(client.Equals(Game2DServer.user[0].client))
						{
							UnsetDot(xi,xj,color,0);
						}
						else
						{
							UnsetDot(xi,xj,color,1);
						}
						break;
					case "Time-":  //T--timeSetdotInterval
						Game2DServer.timerSetDot.Interval=(6-Int32.Parse(str.Substring(5)))*200;
						server.SendToAll(str);
						break;
					case "Name-": //用户机器名
						for(int i=0;i<Game2DServer.MaxUser;i++)
						{
							if(client==Game2DServer.user[i].client)
							{
								Game2DServer.user[i].name=str.Substring(5);
								listbox.Items.Add("玩家机器名:"+Game2DServer.user[i].name);
							}
						}
						int nn=0;
						nn=Convert.ToInt32(6-Game2DServer.timerSetDot.Interval/200);
						string[] names=new string[2];
						if(Game2DServer.userNumber==1)
						{
							if(Game2DServer.user[0].online)
							{
								names[0]=string.Format("Name-1{0,1}我方(黑方):{1}"
									,nn,Game2DServer.user[0].name);
								names[1]="";

							}
							if(Game2DServer.user[1].online)
							{
								names[0]="";
								names[1]=string.Format("Name-1{0,1}我方(白方):{1}",
									nn,Game2DServer.user[1].name);
							}
						}
						else
						{
							names[0]=string.Format("Name-2{0,1}敌方(白方):{1}||我方(黑方):{2}"
								,nn,Game2DServer.user[1].name,Game2DServer.user[0].name);
							names[1]=string.Format("Name-2{0,1}敌方(黑方):{1}||我方(白方):{2}"
								,nn,Game2DServer.user[0].name,Game2DServer.user[1].name);
						}
						server.SendToAll(names);
						break;
					case "Start":
						reset();
						if(client.Equals(Game2DServer.user[0].client))
						{
							Game2DServer.user[0].start=true;
							server.SendToAll("@@@@@黑方已开始。");
						}
						if(client.Equals(Game2DServer.user[1].client))
						{
							Game2DServer.user[1].start=true;
							server.SendToAll("@@@@@白方已开始。");
						}
						if(Game2DServer.userNumber==1)
						{
							Game2DServer.isplaying=true;
							Game2DServer.timerSetDot.Enabled=true;
						}
						else //userNumber==2
						{
							if(Game2DServer.user[0].start & Game2DServer.user[1].start)
							{
								Game2DServer.isplaying=true;
								Game2DServer.timerSetDot.Enabled=true;
							}
						}
						break;
					default:
						server.SendToAll(str);
						break;
				}
			}
			Game2DServer.isplaying=false;
			Game2DServer.timerSetDot.Enabled=false;
			Game2DServer.userNumber--;
			if(Game2DServer.user[0].client==client)
			{
				Game2DServer.user[0].start=false;
				Game2DServer.user[0].online=false;
				listbox.Items.Add("玩家0退出。"+"当前在线玩家:"
					+Game2DServer.userNumber.ToString()+"个。");
			}
			if(client.Equals(Game2DServer.user[1].client))
			{
				Game2DServer.user[1].start=false;
				Game2DServer.user[1].online=false;
				listbox.Items.Add("玩家1退出。"+"当前在线玩家:"
					+Game2DServer.userNumber.ToString()+"个。");
			}
			if(Game2DServer.userNumber==1)
			{
				Game2DServer.timerSetDot.Interval*=2;
				server.SendToAll("Only1");
			}
		}

		private void reset()
		{
			//Game2DServer.win=false;
			for( int i = 0; i < 15; i++ )
			{
				for( int j=0; j<15; j++)
				{
					Game2DServer.Grid[i,j].color=Game2DServer.None;
					Game2DServer.Grid[i,j].has_dot=false;
				}
			}
			Game2DServer.player_turn=Game2DServer.Black;  //出黑点
			Game2DServer.BlackGrade=0;
			Game2DServer.WhiteGrade=0;
		}

		private void UnsetDot(int i,int j,int color,int myuser)
		{
			if(Game2DServer.timerSetDot.Enabled==false) return;
			if(Game2DServer.Grid[i,j].has_dot)
			{
				Game2DServer.Grid[i,j].has_dot=false;
				Game2DServer.Grid[i,j].color=Game2DServer.None;
				if(color==Game2DServer.Black) Game2DServer.BlackGrade++;
				if(color==Game2DServer.White)  Game2DServer.WhiteGrade++;
				string[] strs=new string[2];
				strs[0]=string.Format("Undot{0,2}{1,2}{2,4}{3,4}",
					i,j,Game2DServer.BlackGrade,Game2DServer.WhiteGrade);
				strs[1]=string.Format("Undot{0,2}{1,2}{2,4}{3,4}",
					i,j,Game2DServer.WhiteGrade,Game2DServer.BlackGrade);
				SendData server=new SendData(listbox);
				server.SendToAll(strs);
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -