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

📄 gobang_client.java

📁 可联机对战的五子棋java源代码 包含服务器文件和客户端文件 详细的技术文档和用户手册
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
					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==1))
				{
					face1.setVisible(false);
					face2.setVisible(true);
					Name1.setVisible(false);
					Name2.setVisible(true);
					stone[iCurrent][jCurrent].setIcon(new ImageIcon("Picture/棋子-白.png"));
					stoneColor[iCurrent][jCurrent] = 2;
					if(checkWin(iCurrent,jCurrent)==true)
					{ 
						JOptionPane.showMessageDialog(null,"白棋获胜!");
						try
						{
							z_output.writeObject("whiteWin"+" "+iCurrent+" "+jCurrent);
  						z_output.flush();
  					}
  					catch (Exception e1)
  					{
  						System.err.println("发生异常:"+e1);
  						e1.printStackTrace();
  					}
  					System.exit(0);
					}
					else
					{
						steps_W++;
						try
						{
							z_output.writeObject("ing"+" "+steps_W+" "+iCurrent+" "+jCurrent);
  						z_output.flush();
  					}
  					catch (Exception e1)
  					{
  						System.err.println("发生异常:"+e1);
  						e1.printStackTrace();	
						}		
					}
					face1.setVisible(true);
					face2.setVisible(false);
					Name1.setVisible(true);
					Name2.setVisible(false);		
				}
			}
			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(String host)                               //运行 需要服务器端的IP地址作参数
	{
		try
		{
				z_displayAppend("尝试连接");
				s = new Socket(host,5000);
				String m;
				z_output = new ObjectOutputStream(s.getOutputStream());
				z_input = new ObjectInputStream(s.getInputStream());
				z_enter.setEnabled(true);
				while(true)
				{
					connected = true;
					m = (String) z_input.readObject();
					StringBuffer mb = new StringBuffer(m);
					if(mb.indexOf("blackWin")==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(0);
					}
					else if(mb.indexOf("ing")==0)                              //处理正常的走棋信息
					{
						mb.delete(0,4);
						if(mb.charAt(1)==' ') 
							{
								steps_B = Integer.parseInt(mb.substring(0,1));
								mb.delete(0,2);
							}
						else
							{
								steps_B = 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] = 1;
						stone[xTemp][yTemp].setIcon(new ImageIcon("Picture/棋子-黑.png"));
						face1.setVisible(false);
						face2.setVisible(true);
						Name1.setVisible(false);
						Name2.setVisible(true);
					}
					else z_displayAppend("服务器端: "+m);                      //处理聊天信息
				}
		}
		catch(Exception e)
		{
			System.out.println("发生异常"+e);
			e.printStackTrace();
			z_displayAppend("发生异常");
		}
	}
	
	public boolean checkWin(int x,int y)                              //检测白棋是否胜利
	{
		int total=0,i;
		//水平方向搜索
		for(i=1;(x-i)>=0&&stoneColor[x-i][y]==2;i++) 
			total++;
		for(i=1;(x+i)<15&&stoneColor[x+i][y]==2;i++) 
			total++;
		if(total>=4) 
			return(true);
		else 
			total = 0;
		//竖直方向搜索
		for(i=1;(y-i)>=0&&stoneColor[x][y-i]==2;i++) 
			total++;
		for(i=1;(y+i)<15&&stoneColor[x][y+i]==2;i++) 
			total++;
		if(total>=4) 
			return(true);
		else 
			total = 0;
		//斜左侧方向搜索
		for(i=1;(x-i)>=0&&(y-i)>=0&&stoneColor[x-i][y-i]==2;i++) 
			total++;
		for(i=1;(x+i)<15&&(y+i)<15&&stoneColor[x+i][y+i]==2;i++) 
			total++;
		if(total>=4) 
			return(true);
		else 
			total = 0;
		//斜右侧方向搜索
		for(i=1;(x-i)>=0&&(y+i)<15&&stoneColor[x-i][y+i]==2;i++) 
			total++;
		for(i=1;(x+i)<15&&(y-i)>=0&&stoneColor[x+i][y-i]==2;i++) 
			total++;
		if(total>=4) 
			return(true);
		else 
			return(false);	
	}	
}

public class Gobang_Client                                   //服务器端
{
		
	public static String getString(Object o)                   //以对话框的形式获取字符串
	{
		return JOptionPane.showInputDialog(o);
	}
	
	public static void main(String args[])
	{
		Z_Frame_Client app = new Z_Frame_Client( );

    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    app.setSize(1024, 768);
    app.setVisible(true);
    app.setResizable(false);
    String host = getString("请输入要连接的主机名:");         //以对话框的形式获取服务器端IP地址
    app.z_run(host);
	}
}

⌨️ 快捷键说明

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