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

📄 gobang_server.java

📁 可联机对战的五子棋java源代码 包含服务器文件和客户端文件 详细的技术文档和用户手册
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
				}
			});	
		mI[2][4].addActionListener(new ActionListener()
			{
				public void actionPerformed(ActionEvent e)
				{
					JMenuItem mItem = (JMenuItem)e.getSource();
					musicCurrent.stop();
					musicCurrent = music[4];
					musicCurrent.loop();
				}
			});					
		mI[2][5].addActionListener(new ActionListener()
			{
				public void actionPerformed(ActionEvent e)
				{
					JMenuItem mItem = (JMenuItem)e.getSource();
					musicCurrent.stop();
					musicCurrent = music[5];
					musicCurrent.loop();
				}
			});					
		mI[2][6].addActionListener(new ActionListener()
			{
				public void actionPerformed(ActionEvent e)
				{
					JMenuItem mItem = (JMenuItem)e.getSource();
					musicCurrent.stop();
					musicCurrent = music[6];
					musicCurrent.loop();
				}
			});					
		mI[2][7].addActionListener(new ActionListener()
			{
				public void actionPerformed(ActionEvent e)
				{
					JMenuItem mItem = (JMenuItem)e.getSource();
					musicCurrent.stop();
					musicCurrent = music[7];
					musicCurrent.loop();
				}
			});					
		mI[2][8].addActionListener(new ActionListener()
			{
				public void actionPerformed(ActionEvent e)
				{
					JMenuItem mItem = (JMenuItem)e.getSource();
					musicCurrent.stop();
					musicCurrent = music[8];
					musicCurrent.loop();
				}
			});					
		mI[2][9].addActionListener(new ActionListener()
			{
				public void actionPerformed(ActionEvent e)
				{
					JMenuItem mItem = (JMenuItem)e.getSource();
					musicCurrent.stop();
					musicCurrent = music[9];
					musicCurrent.loop();
				}
			});
		mI[2][10].addActionListener(new ActionListener()    //静音
			{
				public void actionPerformed(ActionEvent e)
				{
					JMenuItem mItem = (JMenuItem)e.getSource();
					musicCurrent.stop();
				}
			});
			
		addMouseListener(new MouseListener()                //根据鼠标点击位置确定下棋点
		{
			public void mouseClicked(MouseEvent e)
			{
				int iCurrent = (e.getX()-70+19)/37;
				int jCurrent = (e.getY()-122+19)/37;
				if(iCurrent>=0&&iCurrent<15&&jCurrent>=0&&jCurrent<15&&stoneColor[iCurrent][jCurrent]==0&&connected==true&&(steps_B==steps_W))
				{
					face1.setVisible(true);
					face2.setVisible(false);
					Name1.setVisible(true);
					Name2.setVisible(false);
					stone[iCurrent][jCurrent].setIcon(new ImageIcon("Picture/棋子-黑.png"));
					stoneColor[iCurrent][jCurrent] = 1;	
					if(checkWin(iCurrent,jCurrent)==true) 
					{
						JOptionPane.showMessageDialog(null,"黑棋获胜!");
						try
						{
							z_output.writeObject("blackWin"+" "+iCurrent+" "+jCurrent);
	  					z_output.flush();
	  				}
	  				catch (Exception e1)
	  				{
	  					System.err.println("发生异常:"+e1);
	  					e1.printStackTrace();
	  				}
	  				System.exit(0);
					}
					else
					{
						steps_B++;
						try
						{
							z_output.writeObject("ing"+" "+steps_B+" "+iCurrent+" "+jCurrent);
	  					z_output.flush();
	  				}
	  				catch (Exception e1)
	  				{
	  					System.err.println("发生异常:"+e1);
	  					e1.printStackTrace();	
						}		
					}
					face1.setVisible(false);
					face2.setVisible(true);
					Name1.setVisible(false);
					Name2.setVisible(true);
				}
			}
			public void mousePressed(MouseEvent e)
			{
			}
			public void mouseEntered(MouseEvent e)
			{
			}
			public void mouseExited(MouseEvent e)
			{
			}
			public void mouseReleased(MouseEvent e)
			{
			}
		});
		
	}
	
	public void z_displayAppend(String s)									//向聊天窗口传送消息
	{
		z_display.append(s+"\n");
		z_display.setCaretPosition(z_display.getText().length());
		z_enter.requestFocusInWindow();
	}
		
	public void z_run()                                   //运行
	{	
		try                                                 //连接客户端并完成信息交互
		{
			String m;
			while(true)
			{
				z_displayAppend("等待连接");
				s = server.accept();
				connected = true;
				z_displayAppend("接收到客户端连接,"+"您执黑棋,先行!");
				z_output = new ObjectOutputStream(s.getOutputStream());
				z_input = new ObjectInputStream(s.getInputStream());
				z_output.writeObject("连接成功,您执白棋");
				z_output.flush();
				z_enter.setEnabled(true);
				while(true)	
				{
					m = (String) z_input.readObject();
					StringBuffer mb = new StringBuffer(m);
					if(mb.indexOf("whiteWin")==0)											//如果白棋胜利 
					{
						mb.delete(0,9);
						if(mb.charAt(1)==' ') 
							{
								xTemp = Integer.parseInt(mb.substring(0,1));
								mb.delete(0,2);
							}
						else
							{
								xTemp = Integer.parseInt(mb.substring(0,2));
								mb.delete(0,3);
							}
						yTemp = Integer.parseInt(mb.substring(0));
						stoneColor[xTemp][yTemp] = 1;
						stone[xTemp][yTemp].setIcon(new ImageIcon("Picture/棋子-白.png"));
						JOptionPane.showMessageDialog(this,"白棋获胜!");
						System.exit(1);
					}
					else if(mb.indexOf("ing")==0)                    //处理正常的走棋信息
					{
						mb.delete(0,4);
						if(mb.charAt(1)==' ') 
							{
								steps_W = Integer.parseInt(mb.substring(0,1));
								mb.delete(0,2);
							}
						else
							{
								steps_W = Integer.parseInt(mb.substring(0,2));
								mb.delete(0,3);
							}
						if(mb.charAt(1)==' ') 
							{
								xTemp = Integer.parseInt(mb.substring(0,1));
								mb.delete(0,2);
							}
						else
							{
								xTemp = Integer.parseInt(mb.substring(0,2));
								mb.delete(0,3);
							}
						yTemp = Integer.parseInt(mb.substring(0));
						stoneColor[xTemp][yTemp] = 2;
						stone[xTemp][yTemp].setIcon(new ImageIcon("Picture/棋子-白.png"));
						face1.setVisible(true);
						face2.setVisible(false);
						Name1.setVisible(true);
						Name2.setVisible(false);
					}
					else z_displayAppend("客户端:"+m);                //处理聊天信息
				}
			}
		}
		catch(Exception e)
		{
			System.out.println("发生异常"+e);
			e.printStackTrace();
		}
	}
	
	public boolean checkWin(int x,int y)                       //检测黑棋是否胜利
	{
		int total=0,i;
		//水平方向搜索
		for(i=1;(x-i)>=0&&stoneColor[x-i][y]==1;i++) 
			total++;
		for(i=1;(x+i)<15&&stoneColor[x+i][y]==1;i++) 
			total++;
		if(total>=4) 
			return(true);
		else 
			total = 0;
		//竖直方向搜索
		for(i=1;(y-i)>=0&&stoneColor[x][y-i]==1;i++) 
			total++;
		for(i=1;(y+i)<15&&stoneColor[x][y+i]==1;i++) 
			total++;
		if(total>=4) 
			return(true);
		else 
			total = 0;
		//斜左侧方向搜索
		for(i=1;(x-i)>=0&&(y-i)>=0&&stoneColor[x-i][y-i]==1;i++) 
			total++;
		for(i=1;(x+i)<15&&(y+i)<15&&stoneColor[x+i][y+i]==1;i++) 
			total++;
		if(total>=4) 
			return(true);
		else 
			total = 0;
		//斜右侧方向搜索
		for(i=1;(x-i)>=0&&(y+i)<15&&stoneColor[x-i][y+i]==1;i++) 
			total++;
		for(i=1;(x+i)<15&&(y-i)>=0&&stoneColor[x+i][y-i]==1;i++) 
			total++;
		if(total>=4) 
			return(true);
		else 
			return(false);	
	}	
}


public class Gobang_Server												//服务器端
{
	public static void main(String args[])
	{
		Z_Frame_Server app = new Z_Frame_Server( );
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    app.setSize(1024, 768);
    app.setVisible(true);
    app.setResizable(false);

	  app.z_run();
	}
}

⌨️ 快捷键说明

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