已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
java五子棋源代码chessClient.java:客户端主程序。chessInterface.java:客户端的界面。chessPad.java:棋盘的绘制。chessServer.java:服务器端。可同时容纳50个人同时在线下棋,聊天。没有加上详细注释,不过绝对可以运行,j2sdk1.4下通过。Java培训/*1.chessClient.java*/import java.awt.*;import java.awt.event.*;import java.io.*;import .*;import java.util.*;class clientThread extends ThreadchessClient 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.removeAll();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);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)trychessclient.chesspad.statusText.setText(不能加入游戏);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无法关闭);chessclient.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 if(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(对方退出,请点放弃游戏退出连接);chessclient.chesspad.isMouseEnabled=false;else if(recMessage.equals(/OK)chessclient.chesspad.statusText.setText(创建游戏成功,等待别人加入.);else if(recMessage.equals(/error)chessclient.chatpad.chatLineArea.append(传输错误:请退出程序,重新加入 n);elsechessclient.chatpad.chatLineArea.append(recMessage+n);chessclient.chatpad.chatLineArea.setCaretPosition(chessclient.chatpad.chatLineArea.getText().length();public void run()String message=;trywhile(true)message=chessclient.in.readUTF();acceptMessage(message);catch(IOException es)public class chessClient extends Frame implements ActionListener,KeyListeneruserPad 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;boolean 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 eastPanel=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.addKeyListener(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);controlpad.joinGameButton.addActionListener(this);controlpad.cancelGameButton.addActionListener(this);controlpad.exitGameButton.addActionListener(this);controlpad.creatGameButton.setEnabled(false);controlpad.joinGameButton.setEnabled(false);controlpad.cancelGameButton.setEnabled(false);southPanel.add(controlpad,BorderLayout.CENTER);southPanel.setBackground(Color.pink);addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)if(isOnChat)trychatSocket.close();catch(Exception ed)if(isOnChess | isGameConnected)trychesspad.chessSocket.close();catch(Exception ee)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 serverPort) throws ExceptiontrychatSocket=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 ex)chatpad.chatLineArea.setText(chessClient:connectServer:无法连接,建议重新启动程序 n);return false;public void actionPerformed(ActionEvent e)if(e.getSource()=controlpad.connectButton)host=chesspad.host=controlpad.inputIP.getText();tryif(connectServer(host,port)chatpad.chatLineArea.setText();controlpad.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.exitGameButton)if(isOnChat)trychatSocket.close();catch(Exception ed)if(isOnChess | isGameConnected)trychesspad.chessSocket.close();catch(Exception ee)System.exit(0);if(e.getSource()=controlpad.joinGameButton)String selectedUser=userpad.userList.getSelectedItem();if(selectedUser=null | selectedUser.startsWith(inchess) |selectedUser.equals(chessClientName)chesspad.statusText.setText(必须先选定一个有效用户);elsetryif(!isGameConnected)if(chesspad.connectServer(chesspad.host,chesspad.port)isGameConnected=true;isOnChess=true;isClient=true;controlpad.creatGameButton.setEnabled(false);controlpad.joinGameButton.setEnabled(false);controlpad.cancelGameButton.setEnabled(true);chesspad.chessthread.sendMessage(/joingame +userpad.userList.getSelectedItem()+ +chessClientName);elseisOnChess=true;isClient=true;controlpad.creatGameButton.setEnabled(false);controlpad.joinGameButton.setEnabled(false);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.setEnabled(true);controlpad.cancelGameButton.setEnabled(false);chatpad.chatLineArea.setText(chesspad.connectServer无法连接 n+ee);if(e.getSource()=controlpad.creatGameButton)tryif(!isGameConnected)if(chesspad.connectServer(chesspad.host,chesspad.port)isGameConnected=true;isOnChess=true;isServer=true;controlpad.creatGameButton.setEnabled(false);controlpad.joinGameButton.setEnabled(false);controlpad.cancelGameButton.setEnabled(true);chesspad.chessthread.sendMessage(/creatgame +inchess+chessClientName);elseisOnChess=true;isServer=true;controlpad.creatGameButton.setEnabled(false);controlpad.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.setEnabled(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*chesspad.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 inputWords=(TextField)e.getSource();if(e.getKeyCode()=KeyEvent.VK_ENTER)if(inputpad.userChoice.getSelectedItem().equals(所有人)tryout.writeUTF(inputWords.getText();inputWords.setText();catch(Exception ea)chatpad.chatLineArea.setText(chessClient:KeyPressed无法连接,建议重新连接 n);userpad.userList.removeAll();inputpad.userChoice.removeAll();inputWords.setText();controlpad.connectButton.setEnabled(true);elsetryout.writeUTF(/+inputpad.userChoice.getSelectedItem()+ +inputWords.getText();inputWords.setText();catch(Exception ea)chatpad.chatLineArea.setText(chessClient:KeyPressed无法连接,建议重新连接 n);userpad.userList.removeAll();inputpad.userChoice.removeAll();inputWords.setText();controlpad.connectButton.setEnabled(true);public void keyTyped(KeyEvent e)public void keyReleased(KeyEvent e)public static void main(String args)chessClient chessClient=new chessClient();/*下面是:chessInteface.java*/import java.awt.*;import java.awt.event.*;import java.io.*;import .*;class userPad extends PanelList userList=new List(10);userPad()setLayout(new BorderLayout();for(int i=0;i50;i+)userList.add(i+.+没有用户);add(userList,BorderLayout.CENTER);class chatPad extends PanelTextArea chatLineArea=new TextArea(,18,30,TextArea.SCROLLBARS_VERTICAL_ONLY);chatPad()setLayout(new BorderLayout();add(chatLineArea,BorderLayout.CENTER);class controlPad extends PanelLabel IPlabel=new Label(IP,Label.LEFT);TextField inputIP=new TextField(localhost,10);Button connectButton=new Button(连接主机);Button creatGameButton=new Button(建立游戏);Button joinGameButton=new Button(加入游戏);Button cancelGameButton=new Button(放弃游戏);Button exitGameButton=new Button(关闭程序);controlPad()setLayout(new FlowLayout(FlowLayout.LEFT);setBackground(Color.pink);add(IPlabel);add(inputIP);add(connectButton);add(creatGameButton);add(joinGameButton);add(cancelGameButton);add(exitGameButton);class inputPad extends PanelTextField inputWords=new TextField(,40);Choice userChoice=new Choice();inputPad()setLayout(new FlowLayout(FlowLayout.LEFT);for(int i=0;i=1 & chessOptNum=3)chessOptchessOptNum-1=chessToken;chessOptNum+;ChessPaint(Integer.parseInt(chessOpt0),Integer.parseInt(chessOpt1),Integer.parseInt(chessOpt2);else if(recMessage.startsWith(/yourname )chesspad.chessSelfName=recMessage.substring(10);else if(recMessage.equals(/error)chesspad.statusText.setText(错误:没有这个用户,请退出程序,重新加入);else/System.out.println(recMessage);public void run()String message=;trywhile(true)message=chesspad.inData.readUTF();acceptMessage(message);catch(IOException es)class chessPad extends Panel implements MouseListener,ActionListenerint chessPoint_x=-1,chessPoint_y=-1,chessColor=1;int chessBlack_x=new int200;int chessBlack_y=new int200;int chessWhite_x=new int200;int chessWhite_y=new int200;int chessBlackCount=0,chessWhiteCount=0;int chessBlackWin=0,chessWhiteWin=0;boolean isMouseEnabled=false,isWin=false,isInGame=false;TextField statusText=new TextField(请先连接服务器);Socket chessSocket;DataInputStream inData;DataOutputStream outData;String chessSelfName=null;String chessPeerName=null;String host=null;int port=4331;chessThread chessthread=new chessThread(this);chessPad()setSize(440,440);setLayout(null);setBackground(Color.pink);addMouseListener(this);add(statusText);statusText.setBounds(40,5,360,24);statusText.setEditable(false);public boolean connectServer(String ServerIP,int ServerPort) throws ExceptiontrychessSocket=new Socket(ServerIP,ServerPort);inData=new DataInputStream(chessSocket.getInputStream();outData=new DataOutputStream(chessSocket.getOutputStream();chessthread.start();return true;catch(IOException ex)statusText.setText(chessPad:connectServer:无法连接 n);return false;public void chessVictory(int chessColorWin)this.removeAll();for(int i=0;i=chessBlackCount;i+)chessBlack_xi=0;chessBlack_yi=0;for(int i=0;i=chessWhiteCount;i+)chessWhite_xi=0;chessWhite_yi=0;chessBlackCount=0;chessWhiteCount=0;add(statusText);statusText.setBounds(40,5,360,24);if(chessColorWin=1) chessBlackWin+;statusText.setText(黑棋胜,黑:白为+chessBlackWin+:+chessWhiteWin+,重新开局,等待白棋下子.);else if(chessColorWin=-1)chessWhiteWin+;statusText.setText(白棋胜,黑:白为+chessBlackWin+:+chessWhiteWin+,重新开局,等待黑棋下子.);public void getLocation(int a,int b,int color)if(color=1)chessBlack_xchessBlackCount=a*20;chessBlack_ychessBlackCount=b*20;chessBlackCount+;else if(color=-1)chessWhite_xchessWhiteCount=a*20;chessWhite_ychessWhiteCount=b*20;chessWhiteCount+;public boolean checkWin(int a,int b,int checkColor)int step=1,chessLink=1,chessLinkTest=1,chessCompare=0;if(checkColor=1)chessLink=1;for(step=1;step=4;step+)for(chessCompare=0;chessCompare=chessBlackCount;chessCompare+)if(a+step)*20=chessBlack_xchessCompare) & (b*20)=chessBlack_ychessCompare)chessLink=chessLink+1;if(chessLink=5)return(true);if(chessLink=(chessLinkTest+1)chessLinkTest+;elsebreak;for(step=1;step=4;step+)for(chessCompare=0;chessCompare=chessBlackCount;chessCompare+)if(a-step)*20=chessBlack_xchessCompare) & (b*20=chessBlack_ychessCompare)chessLink+;if(chessLink=5)return(true);if(chessLink=(chessLinkTest+1)chessLinkTest+;elsebreak;chessLink=1;chessLinkTest=1;for(step=1;step=4;step+)for(chessCompare=0;chessCompare=chessBlackCount;c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程浮雕腻子施工方案设计
- 大门包边施工方案设计
- 路上土石方工程施工方案
- 电缆井卷材防水施工方案
- 四坡屋脊防水施工方案
- 新疆保温房搭建施工方案
- 日光温室夯土施工方案
- 陵城区道路封闭施工方案
- 矿产资源绿色开发策略-洞察及研究
- 延庆户型改造施工方案设计
- 《高分子与食品安全》
- GA 836-2009建设工程消防验收评定规则
- 手术室医院感染风险评估表完整
- 自动化导论全套课件
- 少给父母添麻烦-课件
- 6078三菱帕杰罗v87v97v93维修手册原厂
- 创伤性凝血病课件
- 2022年广西普通高中学业水平合格性考试语文学科试卷结构及参考样卷
- 员工在职证明官方范本标准
- 广东珠海高栏港经济开发区
- 纸箱生产车间风险辨识清单
评论
0/150
提交评论