导读:
  Java语言的简洁和完美,以及java网络功能的优越性是每个java体验者所体会的感受。笔者在闲暇之余,开发出网络中国象棋(以下简称象棋)程序,在此愿与广大java编程爱好者共享,做以介绍供大家参考。如有问题可与我联系:
  网络象棋程序主要功能有象棋室(多象棋桌)功能、观棋功能、悔棋功能、下棋聊天功能、调取残局文件对弈功能、方便的人性化图形界面操作等功能。由象棋服务和客户端Applet组成,Applet实现象棋室的显示,象棋桌的显示和走步判断以及用户的一些操作如悔棋、认输等功能的实现。为考虑资源使用情况和界面美观,象棋桌采用使用高效和优化的双缓冲图形界面处理技术,使用户操作更舒适,更方便。以下依次详细介绍象棋服务和客户端的实现过程。
  首先介绍象棋服务,它是运行在服务器端的用于处理和转发用户登录到象棋室,进入离开游戏桌,走棋,悔棋,认输,退出等等应用。
  1、登录处理:
  //定义登录连接处理类
  package sunstudio.chess.event;
  import java.util.*;
  import java.net.*;
  import java.io.*;
  import sunstudio.util.*;
  import sunstudio.*;
  public class ChessLogin implements Runnable{
  
  ServerSocket ss=null;
  boolean isrunning=true;
  Vector listeners=new Vector();
  int guestid=0;
  
  public ChessLogin(ChessServer s){
  ss=s.ss;
  addLoginListener(s);
  new Thread(this).start();
  }
  public void run(){
  while(isrunning){
  try{
  Socket socket=ss.accept();
  String un=chkLogin(socket.getInputStream());
  if(un!=null)notifyListener(guestid++,un,socket);
  }catch(IOException e){}
  }
  }
  public void addLoginListener(LoginListener l){
  listeners.addElement(l);
  }
  void notifyListener(int userid,String username,Socket sock){
  LoginEvent evt=new LoginEvent(userid,username,sock);
  for(Enumeration enu=listeners.elements();enu.hasMoreElements();){
  ((LoginListener)enu.nextElement()).onLoginEvent(evt);
  }
  }
  public String chkLogin(InputStream is)throws IOException{
  byte[] head=new byte[12];
  HttpInputStream.readBytes(is,12,head);
  int cmdtype=head[0];
  int totalsize=Convert.byteToShort(head[1],head[2]);
  if(totalsize==0)return null;
  byte[] data=new byte[totalsize];
  HttpInputStream.readBytes(is,totalsize,data);
  //System.out.print("type="+cmdtype+",totalsize="+totalsize+",username="+parseLoginData(data));
  return parseLoginData(data);
  }
  public String parseLoginData(byte[] d){
  return new String(d);
  }
  public static int byteToInt(byte j,byte k,byte m,byte n){
  int a =j&0xff;
  int b =k&0xff;
  int c =m&0xff;
  int d =n&0xff;
  return (d<<24|c<<16|b<<8|a);
  }
  }
  //定义登录连接事件类
  package sunstudio.chess.event;
  import java.net.*;
  public class LoginEvent{
  public int userID;
  public String username;
  public Socket socket;
  
  public LoginEvent(int userID,String username,Socket sock){
  this.userID=userID;
  this.username=username;
  this.socket=sock;
  }
  }
  //登录监听接口
  package sunstudio.chess.event;
  public interface LoginListener{
  public void onLoginEvent(LoginEvent evt);
  }
  (待续......)
  
  Java语言的简洁和完美,以及java网络功能的优越性是每个java体验者所体会的感受。笔者在闲暇之余,开发出网络中国象棋(以下简称象棋)程序,在此愿与广大java编程爱好者共享,做以介绍供大家参考。如有问题可与我联系:网络象棋程序主要功能有象棋室(多象棋桌)功能、观棋功能、悔棋功能、下棋聊天功能、调取残局文件对弈功能、方便的人性化图形界面操作等功能。由象棋服务和客户端Applet组成,Applet实现象棋室的显示,象棋桌的显示和走步判断以及用户的一些操作如悔棋、认输等功能的实现。为考虑资源使用情况和界面美观,象棋桌采用使用高效和优化的双缓冲图形界面处理技术,使用户操作更舒适,更方便。以下依次详细介绍象棋服务和客户端的实现过程。 首先介绍象棋服务,它是运行在服务器端的用于处理和转发用户登录到象棋室,进入离开游戏桌,走棋,悔棋,认输,退出等等应用。 1、登录处理://定义登录连接处理类 package sunstudio.chess.event; import java.util.*; import java.net.*; import java.io.*; import sunstudio.util.*; import sunstudio.*; public class ChessLogin implements Runnable{ ServerSocket ss=null; boolean isrunning=true; Vector listeners=new Vector(); int guestid=0; public ChessLogin(ChessServer s){ ss=s.ss; addLoginListener(s); new Thread(this).start(); } public void run(){ while(isrunning){ try{ Socket socket=ss.accept(); String un=chkLogin(socket.getInputStream()); if(un!=null)notifyListener(guestid++,un,socket); }catch(IOException e){} } } public void addLoginListener(LoginListener l){ listeners.addElement(l); } void notifyListener(int userid,String username,Socket sock){ LoginEvent evt=new LoginEvent(userid,username,sock); for(Enumeration enu=listeners.elements();enu.hasMoreElements();){ ((LoginListener)enu.nextElement()).onLoginEvent(evt); } } public String chkLogin(InputStream is)throws IOException{ byte[] head=new byte[12]; HttpInputStream.readBytes(is,12,head); int cmdtype=head[0]; int totalsize=Convert.byteToShort(head[1],head[2]); if(totalsize==0)return null; byte[] data=new byte[totalsize]; HttpInputStream.readBytes(is,totalsize,data); //System.out.print("type="+cmdtype+",totalsize="+totalsize+",username="+parseLoginData(data)); return parseLoginData(data); } public String parseLoginData(byte[] d){ return new String(d); } public static int byteToInt(byte j,byte k,byte m,byte n){ int a =j&0xff; int b =k&0xff; int c =m&0xff; int d =n&0xff; return (d<<24|c<<16|b<<8|a); }}//定义登录连接事件类 package sunstudio.chess.event; import java.net.*; public class LoginEvent{ public int userID; public String username; public Socket socket; public LoginEvent(int userID,String username,Socket sock){ this.userID=userID; this.username=username; this.socket=sock; }}//登录监听接口 package sunstudio.chess.event; public interface LoginListener{ public void onLoginEvent(LoginEvent evt);}(待续......)

本文转自
http://www.cn-java.com/www1/?action-viewnews-itemid-1840

如何用Java实现网络中国象棋室(一)相关推荐

  1. 中国象棋棋盘java_如何用java swing 实现中国象棋的棋盘。棋盘就好。。。

    展开全部 package com.fzhw.app; import java.awt.BorderLayout; import java.awt.Graphics; import java.awt.G ...

  2. java中国象棋网络对弈,java课程设计---中国象棋对弈系统

    java课程设计---中国象棋对弈系统 1 目目 录录 摘要 1 关键字 1 正文 2 1.程序设计说明. 2 1.1 程序的设计及实现 2 1.1.1搜索引擎的实现(engine包) . 2 1.1 ...

  3. 基于Java+Swing实现中国象棋游戏

    基于Java+Swing实现中国象棋游戏 一.系统介绍 二.功能展示 三.其他系统 四.获取源码 前言 中国象棋是起源于中国的一种棋,属于二人对抗性游戏的一种,在中国有着悠久的历史.由于用具简单,趣味 ...

  4. Java课程设计—中国象棋(源代码及视频)

    你好,我是罡罡同学! 代码谱第一页忘掉心上人,最后一页...... 打赏一点钱,帮我买包辣条,继续创作,谢谢大家! 大家关注微信公众号 罡罡同学 回复中国象棋 就可以免费获得压缩包啦!! 压缩包里面内 ...

  5. 基于Java EE的中国象棋网上对战的设计与实现

    技术:Java.JSP等 摘要:中国象棋是一种起源于中国古代的双人对战棋类游戏,广泛的流行在全国各地,是中华文化的典型代表之一,体现着中华文化的智慧和蕴含.为了传承这一重要的传统,理解其中的精髓,以及 ...

  6. java 网络爬虫_如何用Java实现网络爬虫

    原标题:如何用Java实现网络爬虫 微信公众号"书圈"后台回复[Javapachong1],下载本例的PPT和源码 作品描述 本章作品是一个能够抓取指定网站ACM比赛信息的爬虫.A ...

  7. 两人对战网络中国象棋3.1具体实现

    具体开发步骤: 1)新建一个Windows应用程序,项目命名为"象棋".如图5-7设计网络网络中国象棋界面.在Visual Studio .Net集成开发环境中的[解决方案资源管理 ...

  8. 基于python的游戏设计与实现-基于Python的网络中国象棋游戏设计与实现

    基于Python的网络中国象棋游戏设计与实现 摘要中国象棋是一种家喻户晓的棋类游戏,随着互联网时代的到来,人们的娱乐方式也逐渐向PC端和移动端上发展.本文将传统的中国象棋游戏和当下的互联网技术结合作为 ...

  9. Java+Swing实现中国象棋游戏

    目录 一.系统介绍 1.开发环境 2.技术选型 3.系统功能 二.系统展示 1.首页 2.黑棋走 3.红旗走 三.部分代码 ChineseCheseRule.java 四.其他 1.更多系统 Java ...

最新文章

  1. CSS2简写和常用css总结笔记
  2. system.err android.os.NetworkOnmainThreadException 错误解决办法
  3. Window 2000 网络操作命令全释
  4. C标准库和glibc(C运行库)的关系
  5. Python3.x 基础练习题100例(91-100)
  6. linkedin api php,php – 如何使用linkedin api发送消息/通知?
  7. Jira中的BUG导出
  8. java基本数据类型泛型_Java中的泛型
  9. TX2在Turtlebot测试kobuki
  10. 反射注解知识点复习(第一次)
  11. 电脑桌面图标突然不见了
  12. 多媒体视频会议系统的测试方法
  13. untiy2020 与 HubSetup 安装教程
  14. 解决Failed to introspect Class KafkaMetricsAutoConfiguration
  15. 【侠客行】Lombok深度解析
  16. JavaScript中的常用浏览器对象
  17. Guava 系列 - Guava基础
  18. 我的理想计算机作文300字,我的理想作文300字(通用5篇)
  19. Android 文件上传的几种方式
  20. 调试,一项磨炼人的活(一)---《调试九法》

热门文章

  1. 《低代码PaaS驱动集团企业数字化创新白皮书》-平台化加低代码提供破解之道(2)
  2. 计算机技术转让增值税,技术转让及开发的增值税优惠政策梳理
  3. 【开发者工具】开发者必备的火狐插件
  4. 虚拟机winxp纯净_虚拟机 win7系统ghostxp纯净版
  5. VSCO Film 下载及安装教程
  6. cbp格式能用code打开嘛
  7. 制作一款电热水壶的汇总
  8. Win手机安卓程序初体验
  9. 微信电商生态化初现端倪
  10. 新手区题目六:坚持60s