网络五子棋游戏文档 Java 课程设计

时间:2015-03-09 18:06:28
【文件属性】:

文件名称:网络五子棋游戏文档 Java 课程设计

文件大小:14.47MB

文件格式:DOC

更新时间:2015-03-09 18:06:28

五子棋 游戏 Java设计

网络五子棋只需要包含客户端和服务器端两个窗口,规模比较小,而本模块设计的是独立运行的客户端,不需要服务器。从功能上看,网络五子棋涉及两台主机间的通信,相互需要传递棋子信息、控制指令和文本信息,这需要定义一个应用协议来解释数据报,涉及网络开发的许多知识。 /** 实现登录界面的关键技术,使用了GlassPane面板,它位于窗体的最顶层,Swing默认该面板为隐藏模式。本模块继承JPanel类编写了登录面板,其中包含登录信息的文本框和“登录”按钮等信息,然后调用JFrame窗体的setGlassPane()方法将该面板设置为GlassPenel玻璃面板。程序关键代码如下。 loginPanel1 = new com.lzw.gobang.LoginPanel(); // 创建登录面板的实例对象 /** * 主窗体的构造方法 */ public MainFrame() { initComponents(); // 初始化窗体界面 setGlassPane(loginPanel1); // 设置登录面板为玻璃面板 loginPanel1.setVisible(true); // 显示登录面板 ... ... /** * 处理远程命令的方法 * @param messageObj - 命令代码 */ private void oprationHandler(Object messageObj) { int code = (Integer) messageObj; // 获取命令代码 String towards = frame.getTowardsUser().getName(); // 获取对家昵称 int option; switch (code) { case ChessPanel.OPRATION_REPENT: // 如果是悔棋请求 System.out.println("请求悔棋"); // 询问玩家是否同意对方悔棋 option = JOptionPane.showConfirmDialog(frame, towards + "要悔棋,是否同意?", "求你了,我走错了,让我悔棋!!!", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE); // 在聊天面板添加悔棋信息 frame.appendMessage("对方请求悔棋......."); if (option == JOptionPane.YES_OPTION) { // 如果同意悔棋 frame.send(ChessPanel.OPRATION_NODE_REPENT); // 发送同意悔棋的消息 frame.getChessPanel1().repentOperation(); // 执行本地的悔棋操作 frame.appendMessage("接受对方的悔棋请求。"); // 添加悔棋信息到聊天面板 frame.send(frame.getUser().getName() + "接受悔棋请求"); } else { // 如果不同意悔棋 // 添加不同意悔棋的信息到聊天面板 frame.send(frame.getUser().getName() + "拒绝悔棋请求"); frame.appendMessage("拒绝了对方的悔棋请求。"); } break; case ChessPanel.OPRATION_NODE_REPENT: // 如果是同意悔棋命令 System.out.println("同意悔棋命令"); frame.getChessPanel1().repentOperation(); // 执行本地的悔棋操作 frame.appendMessage("悔棋成功"); // 把悔棋成功信息添加到聊天面板 break; case ChessPanel.OPRATION_NODE_DRAW: // 如果是同意和棋命令 System.out.println("同意和棋命令"); frame.getChessPanel1().getGobangPanel1().setDraw(true); // 设置和棋状态为true frame.getChessPanel1().reInit(); // 初始化游戏状态变量 frame.appendMessage("此战平局。"); // 将和棋信息添加到聊天面板 break; case ChessPanel.OPRATION_DRAW: // 如果是和棋请求 System.out.println("请求和棋"); // 询问玩家是否同意和棋 option = JOptionPane.showConfirmDialog(frame, towards + "请求和棋,是否同意?", "大哥,和棋吧!!!", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); frame.appendMessage("对方请求和棋......."); // 添加信息到聊天面板 if (option == JOptionPane.YES_OPTION) { // 如果同意和棋 frame.send(ChessPanel.OPRATION_NODE_DRAW); // 发送接受和棋的消息 frame.getChessPanel1().getGobangPanel1().setDraw(true); // 设置和棋状态为true frame.getChessPanel1().reInit(); // 初始化游戏状态变量 frame.appendMessage("接受对方的和棋请求。"); // 添加信息到聊天面板 frame.send(frame.getUser().getName() + "接受和棋请求"); } else { // 如果不同意和棋 frame.send(frame.getUser().getName() + "拒绝和棋请求"); // 发送拒绝信息 frame.appendMessage("拒绝了对方的和棋请求。"); } break; case ChessPanel.OPRATION_GIVEUP: // 如果是对方认输的请求 System.out.println("对方认输"); // 询问玩家是否同意对方认输 option = JOptionPane.showConfirmDialog(frame, towards + "请求认输,是否同意?", "对方认输", JOptionPane.YES_NO_OPTION); frame.appendMessage("对方请求认输......."); if (option == JOptionPane.YES_OPTION) { // 如果同意对方认输 frame.send(ChessPanel.WIN); // 发送胜利消息 frame.getChessPanel1().getGobangPanel1().setWin(true); // 设置胜利状态为true frame.getChessPanel1().reInit(); // 初始化游戏的状态变量 frame.appendMessage("接受对方的认输请求。"); } else { frame.send(frame.getUser().getName() + "拒绝认输请求"); frame.appendMessage("拒绝了对方的认输请求。"); } break; case ChessPanel.OPRATION_START: // 如果是开始游戏的请求 System.out.println("请求开始"); if (frame.getChessPanel1().getGobangPanel1().isStart()) { // 如果自己已经开始游戏 frame.send((int) ChessPanel.OPRATION_ALL_START);// 发送全部开始命令 frame.getChessPanel1().setTowardsStart(true); // 设置对家游戏开始状态为true } break; case ChessPanel.OPRATION_ALL_START: // 如果是回应开始请求 System.out.println("回应开始请求"); frame.getChessPanel1().setTowardsStart(true); // 设置对家为开始状态 break; case ChessPanel.WIN: // 如果是胜利的命令代码 System.out.println("对方胜利"); // 设置对家胜利状态为true frame.getChessPanel1().getGobangPanel1().setTowardsWin(true); frame.getChessPanel1().reInit(); // 初始化游戏状态变量 break; default: System.out.println("未知操作代码:" + code); } }


网友评论

  • 文档写的超详细...只是是不用服务器的版本》。。
  • 文档写得特别好,方法也很不错,如果有完整的可编译代码就更好了