1、java五子棋报告全程完整版下面的源代码分为4个文件; (1)chessClient.java:客户端主程序。 (2)chessInterface.java:客户端的界面。 (3)chessPad.java:棋盘的绘制。 (4)chessServer.java:服务器端。 可同时容纳50个人同时在线下棋,聊天。 /* 1.chessClient.java */ import java.awt.*; import java.awt.event.*; import java.io.*; import .*; import java.util.*; class clientThread extend
2、s Thread chessClient chessclient; clientThread(chessClient chessclient) this.chessclient=chessclient; public void acceptMessage(String recMessage) if(recMessage.startsWith(/userlist ) StringTokenizer userToken=new StringTokenizer(recMessage, ); int userNumber=0; chessclient.userpad.userList.removeAl
3、l(); chessclient.inputpad.userChoice.removeAll(); chessclient.inputpad.userChoice.addItem(所有人); while(userToken.hasMoreTokens() String user=(String)userToken.nextToken( ); if(userNumber0 & !user.startsWith(inchess) chessclient.userpad.userList.add(user); chessclient.inputpad.userChoice.addItem(user)
4、; userNumber+; chessclient.inputpad.userChoice.select(所有人); else if(recMessage.startsWith(/yourname ) chessclient.chessClientName=recMessage.substring(10); chessclient.setTitle(Java五子棋客户端 +用户名:+chessclient.chessClientName); else if(recMessage.equals(/reject) try chessclient.chesspad.statusText.setTe
5、xt(不能加入游戏); chessclient.controlpad.cancelGameButton.setEnabled(false); chessclient.controlpad.joinGameButton.setEnabled(true); chessclient.controlpad.creatGameButton.setEnabled(true); catch(Exception ef) chessclient.chatpad.chatLineArea.setText(chessclient.chesspad.chessSocket.close无法关闭); chessclien
6、t.controlpad.joinGameButton.setEnabled(true); else if(recMessage.startsWith(/peer ) chessclient.chesspad.chessPeerName=recMessage.substring(6); if(chessclient.isServer) chessclient.chesspad.chessColor=1; chessclient.chesspad.isMouseEnabled=true; chessclient.chesspad.statusText.setText(请黑棋下子); else i
7、f(chessclient.isClient) chessclient.chesspad.chessColor=-1; chessclient.chesspad.statusText.setText(已加入游戏,等待对方下子.); else if(recMessage.equals(/youwin) chessclient.isOnChess=false; chessclient.chesspad.chessVictory(chessclient.chesspad.chessColor); chessclient.chesspad.statusText.setText(对方退出,请点放弃游戏退
8、出连接); chessclient.chesspad.isMouseEnabled=false; else if(recMessage.equals(/OK) chessclient.chesspad.statusText.setText(创建游戏成功,等待别人加入.); else if(recMessage.equals(/error) chessclient.chatpad.chatLineArea.append(传输错误:请退出程序,重新加入 n); else chessclient.chatpad.chatLineArea.append(recMessage+n); chessclie
9、nt.chatpad.chatLineArea.setCaretPosition( chessclient.chatpad.chatLineArea.getText().length(); public void run() String message=; try while(true) message=chessclient.in.readUTF(); acceptMessage(message); catch(IOException es) public class chessClient extends Frame implements ActionListener,KeyListen
10、er userPad userpad=new userPad(); chatPad chatpad=new chatPad(); controlPad controlpad=new controlPad(); chessPad chesspad=new chessPad(); inputPad inputpad=new inputPad(); Socket chatSocket; DataInputStream in; DataOutputStream out; String chessClientName=null; String host=null; int port=4331; bool
11、ean isOnChat=false; /在聊天? boolean isOnChess=false; /在下棋? boolean isGameConnected=false; /下棋的客户端连接? boolean isServer=false; /如果是下棋的主机 boolean isClient=false; /如果是下棋的客户端 Panel southPanel=new Panel(); Panel northPanel=new Panel(); Panel centerPanel=new Panel(); Panel westPanel=new Panel(); Panel eastPa
12、nel=new Panel(); chessClient() super(Java五子棋客户端); setLayout(new BorderLayout(); host=controlpad.inputIP.getText(); westPanel.setLayout(new BorderLayout(); westPanel.add(userpad,BorderLayout.NORTH); westPanel.add(chatpad,BorderLayout.CENTER); westPanel.setBackground(Color.pink); inputpad.inputwords.a
13、ddKeyListener(this); chesspad.host=controlpad.inputIP.getText(); centerPanel.add(chesspad,BorderLayout.CENTER); centerPanel.add(inputpad,BorderLayout.SOUTH); centerPanel.setBackground(Color.pink); controlpad.connectButton.addActionListener(this); controlpad.creatGameButton.addActionListener(this); c
14、ontrolpad.joinGameButton.addActionListener(this); controlpad.cancelGameButton.addActionListener(this); controlpad.exitGameButton.addActionListener(this); controlpad.creatGameButton.setEnabled(false); controlpad.joinGameButton.setEnabled(false); controlpad.cancelGameButton.setEnabled(false); southPan
15、el.add(controlpad,BorderLayout.CENTER); southPanel.setBackground(Color.pink); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) if(isOnChat) try chatSocket.close(); catch(Exception ed) if(isOnChess | isGameConnected) try chesspad.chessSocket.close(); catch(Exception ee)
16、System.exit(0); public void windowActivated(WindowEvent ea) ); add(westPanel,BorderLayout.WEST); add(centerPanel,BorderLayout.CENTER); add(southPanel,BorderLayout.SOUTH); pack(); setSize(670,548); setVisible(true); setResizable(false); validate(); public boolean connectServer(String serverIP,int ser
17、verPort) throws Exception try chatSocket=new Socket(serverIP,serverPort); in=new DataInputStream(chatSocket.getInputStream(); out=new DataOutputStream(chatSocket.getOutputStream(); clientThread clientthread=new clientThread(this); clientthread.start(); isOnChat=true; return true; catch(IOException e
18、x) chatpad.chatLineArea.setText(chessClient:connectServer:无法连接,建议重新启动程序 n); return false; public void actionPerformed(ActionEvent e) if(e.getSource()=controlpad.connectButton) host=chesspad.host=controlpad.inputIP.getText(); try if(connectServer(host,port) chatpad.chatLineArea.setText(); controlpad.
19、connectButton.setEnabled(false); controlpad.creatGameButton.setEnabled(true); controlpad.joinGameButton.setEnabled(true); chesspad.statusText.setText(连接成功,请创建游戏或加入游戏); catch(Exception ei) chatpad.chatLineArea.setText(controlpad.connectButton:无法连接,建议重新启动程序 n); if(e.getSource()=controlpad.exitGameButt
20、on) if(isOnChat) try chatSocket.close(); catch(Exception ed) if(isOnChess | isGameConnected) try chesspad.chessSocket.close(); catch(Exception ee) System.exit(0); if(e.getSource()=controlpad.joinGameButton) String selectedUser=userpad.userList.getSelectedItem(); if(selectedUser=null | selectedUser.s
21、tartsWith(inchess) | selectedUser.equals(chessClientName) chesspad.statusText.setText(必须先选定一个有效用户); else try if(!isGameConnected) if(chesspad.connectServer(chesspad.host,chesspad.port) isGameConnected=true; isOnChess=true; isClient=true; controlpad.creatGameButton.setEnabled(false); controlpad.joinG
22、ameButton.setEnabled(false); controlpad.cancelGameButton.setEnabled(true); chesspad.chessthread.sendMessage(/joingame +userpad.userList.getSelectedItem()+ +chessClientName); else isOnChess=true; isClient=true; controlpad.creatGameButton.setEnabled(false); controlpad.joinGameButton.setEnabled(false);
23、 controlpad.cancelGameButton.setEnabled(true); chesspad.chessthread.sendMessage(/joingame +userpad.userList.getSelectedItem()+ +chessClientName); catch(Exception ee) isGameConnected=false; isOnChess=false; isClient=false; controlpad.creatGameButton.setEnabled(true); controlpad.joinGameButton.setEnab
24、led(true); controlpad.cancelGameButton.setEnabled(false); chatpad.chatLineArea.setText(chesspad.connectServer无法连接 n+ee); if(e.getSource()=controlpad.creatGameButton) try if(!isGameConnected) if(chesspad.connectServer(chesspad.host,chesspad.port) isGameConnected=true; isOnChess=true; isServer=true; c
25、ontrolpad.creatGameButton.setEnabled(false); controlpad.joinGameButton.setEnabled(false); controlpad.cancelGameButton.setEnabled(true); chesspad.chessthread.sendMessage(/creatgame +inchess+chessClientName); else isOnChess=true; isServer=true; controlpad.creatGameButton.setEnabled(false); controlpad.
26、joinGameButton.setEnabled(false); controlpad.cancelGameButton.setEnabled(true); chesspad.chessthread.sendMessage(/creatgame +inchess+chessClientName); catch(Exception ec) isGameConnected=false; isOnChess=false; isServer=false; controlpad.creatGameButton.setEnabled(true); controlpad.joinGameButton.se
27、tEnabled(true); controlpad.cancelGameButton.setEnabled(false); ec.printStackTrace(); chatpad.chatLineArea.setText(chesspad.connectServer无法连接 n+ec); if(e.getSource()=controlpad.cancelGameButton) if(isOnChess) chesspad.chessthread.sendMessage(/giveup +chessClientName); chesspad.chessVictory(-1*chesspa
28、d.chessColor); controlpad.creatGameButton.setEnabled(true); controlpad.joinGameButton.setEnabled(true); controlpad.cancelGameButton.setEnabled(false); chesspad.statusText.setText(请建立游戏或者加入游戏); if(!isOnChess) controlpad.creatGameButton.setEnabled(true); controlpad.joinGameButton.setEnabled(true); controlpad.cancelGameButton.setEnabled(false); chesspad.statusText.setText(请建立游戏或者加入游戏); isClient=isServer=false; public void keyPressed(KeyEvent e) TextField inputWo