📄 gobang_client.java
字号:
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 + -