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

📄 clientchess.java

📁 这是一个Java编写的手机象棋游戏
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			for(int i = 0; i < remoteDeviceNumber; i++)
				transIds[i] = discoveryAgent.searchServices(null,uuidSet,remoteDevice[i], this);
		}
		catch(BluetoothStateException e)
		{
			//System.out.println("搜索设备上的服务时出现异常");
			//提示用户,蓝牙连接出现问题,退出程序
			Alert alert=new Alert("Message","搜索设备上的服务时发生异常",null,AlertType.WARNING);
			Chess.dis.setCurrent(alert);
			//Chess.quitApp();
		}
		try
		{//阻塞,由serviceSearchCompleted()回调方法在所有设备都搜索完的情况下唤醒 
			wait();
		}
		catch (InterruptedException e)
		{
			
		}
		if(serviceRecordNumber == 0)
		{
			if(clientType == 4)
			{
				//System.out.println("没有搜索到服务");
				viewerCanvas.initViewerAcceptThread();
				return;
			}
			else
			{
				//System.out.println("没有搜索到服务");
				Chess.quitApp();
			}
		}
		else if(serviceRecordNumber > 1 &&  clientType != 4 && clientType != 5)
		{
			//System.out.println("搜索到服务到了超过一个的服务,所以有问题");
			//System.out.println("clientType的值是:" + clientType);
			Chess.quitApp();
		}
		String url = null;
		StreamConnection conn = null;
		for(int d = 0; d < serviceRecordNumber; d++)
		{
			try
			{
				url = service[d].getConnectionURL( ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false); 
				//System.out.println("一、客户端获取设备的URL:"+url);
				//System.out.println("客户端开始创建连接");
				conn = (StreamConnection)Connector.open(url);
				//System.out.println("客户端连接创建成功");
			}
			catch(IOException ie)
			{
				//System.out.println("客户端连接创建失败");
				//System.out.println("二、客户端获取设备的URL:"+url);
				//退出程序或者重试
				//Alert alert=new Alert("Message","创建连接失败",null,AlertType.WARNING);
				//Chess.dis.setCurrent(alert);
				//Chess.quitApp();
				return;
			}
			DataOutputStream dos = null;
			DataInputStream dis = null;
			try
			{
				dos=conn.openDataOutputStream(); 
				dis=conn.openDataInputStream(); 
			}
			catch (IOException ie)
			{
				//System.out.println("客户端打开流失败");
				//重试或者退出程序
				Alert alert=new Alert("Message","ClientChess#4",null,AlertType.WARNING);
				Chess.dis.setCurrent(alert);
				//Chess.quitApp();
				return;
			}
			try
			{
				discoveryAgent = null;
				//System.out.println("客户端打开流成功"+dis);
				if(clientType == 0)
				{
					//如果有的话读入服务端选择的来源
					ifSelect = dis.readBoolean();
					//System.out.println("客户端读到boolean值:"+ifSelect);
					if(ifSelect)
					{
						String	initString = dis.readUTF();
						int		n = 0;
						chess = new int[10][9];
						for(int i=9;i>=0;i--)
						{
							for(int j=8;j>=0;j--)
							{
								chess[i][j]=initString.charAt(n);
								if(chess[i][j] < 16)
									chess[i][j] = chess[i][j] + 16;
								else if(chess[i][j] != 32)
									chess[i][j] = chess[i][j] - 16;
								n=n+1;
								//System.out.println("成功取得一个棋盘初始化数据:"+chess[i][j]);
							}
						}
					}
					dis.close();
					dos.close();
					conn.close();
					flash.createOk();
					//System.out.println("开始创建打擂客户");
					ChessCanvas chessCanvas=new ChessCanvas(mainSelect,1,selectedSaveIndex,ifSelect,chess, musicIndex, soundIndex);
					flash.stopFlash();
					//System.out.println("打擂客户创建成功");
					Chess.dis.setCurrent(chessCanvas);
				}
				//向对方发送棋盘变化
				else if(clientType == 1)
				{
					if(chessCanvas.ifHaveViewer())
					{//接收到看擂者,将此信息传送给对方
						dos.writeBoolean(true);
					}
					else
						dos.writeBoolean(false);
					for(int i = 0; i < 4; i++)
					{
						dos.writeInt(chance[i]);
						//System.out.println("向对方发送棋盘变化:"+chance[i]);
					}
					//System.out.println("向对方发送棋盘变化完成");
					dis.close();
					dos.close();
					conn.close();
					//若是没有看擂者,直接向对方发送完数据后启动用来接收对方数据的监听器
					//若是有看擂者存在,先向对方发送数据,再向看擂者发送数据,最后再启动用来接收对方数据的监听器
					if(chessCanvas.ifHaveViewer())
					{
						//System.out.println("有看擂者存在,开始向看擂者发送数据");
						if(serverOrClient)
							new ClientChess(chance, chessCanvas, 0);
						else
							new ClientChess(chance, chessCanvas, 1);
					}
					else
						chessCanvas.initAcceptThread();
				}
				//向看擂者发送棋盘变化数据
				else if(clientType == 2)
				{
					if(serverOrClient)
					{
						for(int i = 0; i < 4; i++)
						{
							dos.writeInt(chance[i]);
							//System.out.println("向看擂者发送:"+chance[i]);
						}
					}
					else
					{
						dos.writeInt(9 - chance[0]);
						//System.out.print("向看擂者发送:");
						//System.out.print(9 - chance[0]);
						dos.writeInt(8 - chance[1]);
						//System.out.print("向看擂者发送:");
						//System.out.print(8 - chance[1]);
						dos.writeInt(9 - chance[2]);
						//System.out.print("向看擂者发送:");
						//System.out.print(9 - chance[2]);
						dos.writeInt(8 - chance[3]);
						//System.out.print("向看擂者发送:");
						//System.out.print(8 - chance[3]);
					}
					dis.close();
					dos.close();
					conn.close();
					chessCanvas.initAcceptThread();
				}
				//看擂者接收棋盘初始数据
				else if(clientType == 3)
				{	
					for(int i = 0; i < 10; i++)
					{	for(int j = 0; j < 9; j++)
						{
							chess[i][j] = dis.readInt();
						}
					}
					//System.out.println("看擂者接收初始棋盘数组成功");
					dis.close();
					dos.close();
					conn.close();
					viewerCanvas.setInitChess(chess);
					return;
				}
				else if(clientType == 4)
				{
					boolean isFirst = dis.readBoolean();
					//System.out.println("电台:接收的boolean值是:"+isFirst);
					if(isFirst)
					{
						for(int i = 0; i < 10; i++)
						{
							for(int j = 0; j < 9; j++)
							{
								dos.writeInt(chess[i][j]);
							}
						}
					}
					else
					{
						for(int i = 0; i < 4; i++)
						{
							dos.writeInt(chance[i]);
						}
					}
					dis.close();
					dos.close();
					conn.close();
					viewerSendNumber++;
					if(viewerSendNumber == serviceRecordNumber)
					{
						viewerCanvas.initViewerAcceptThread();
					}
					//System.out.println("电台:数据发送完毕");
				}
				else if(clientType == 5)
				{
					dos.writeBoolean(isPhase);
					for(int i = 0; i < 10; i++)
					{
						for(int j = 0; j < 9; j++)
						{
							dos.writeInt(chess[i][j]);
						}
					}
					if(isPhase)
					{
						//已经完成
					}
					else
					{
						dos.writeInt(reset.length);
						for(int i = 0; i < reset.length; i++)
						{
							for(int j = 0; j < 4; j++)
							{
								dos.writeInt(reset[i][j]);
							}
						}
					}
					Chess.dis.setCurrent(form);
					flash.stopFlash();
					dis.close();
					dos.close();
					conn.close();
				}
			}
			catch (Exception e)
			{
				//System.out.println("数据发送过程中出现异常");
				//退出程序
				//errorDeal.push("ClientChess#3", "创新连接并发送初始棋盘数据时发生未知错误");
				Alert alert=new Alert("Message","发送数据过程中出现异常",null,AlertType.WARNING);
				Chess.dis.setCurrent(alert);
				//Chess.quitApp();
			}
		}
	}
};

⌨️ 快捷键说明

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