`
isiqi
  • 浏览: 16494592 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

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

阅读更多
导读:
  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  }
  }
  //////////////////定义登录连接事件类
  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
本文转自
http://www.cn-java.com/www1/?action-viewnews-itemid-1840
分享到:
评论

相关推荐

    JAVA 实现《中国象棋》游戏-全部源码

    被“照将”的一方必须立即“应将”,即用自己的着法去化解被“将”的状态。如果被“照将”而无法“应将”,就算被“将死”。 11、特别设计了人机对弈,人人对弈,还有AI对AI对弈 需要技术指导,写项目程序,等更多...

    Java,实现中国象棋

    8. **网络编程**:如果要实现网络对战功能,还需要涉及网络编程知识,如Socket编程,用于连接客户端和服务器,交换玩家的每一步操作。 9. **数据持久化**:为了保存游戏进度或用户数据,可能需要实现数据的存储和...

    中国象棋联机版完整源码及素材(Java实现)

    本资源包含了一个使用Java语言实现的中国象棋联机版游戏的完整源码和相关素材,对于学习Java编程,特别是对游戏开发感兴趣的朋友来说,这是一个非常有价值的参考资料。下面将详细解析这个项目的主要技术点和组成部分...

    java课程设计 中国象棋

    在本Java课程设计中,我们将深入探讨如何利用Java编程语言实现一个中国象棋游戏。这个项目不仅涵盖了基础的编程概念,还涉及到了网络编程和图形用户界面(GUI)的设计,使其成为一个综合性的学习实践。 首先,我们...

    用java写的中国象棋源码

    在本项目中,开发者使用Java语言实现了中国象棋的桌面版,利用了Java的Swing库来构建用户界面,提供了一个单机版的游戏环境。 Java是一种广泛使用的面向对象的编程语言,其跨平台的特性使得开发的软件可以在多种...

    用Java实现中国象棋游戏-局域网络对战

    中国象棋 java中国象棋游戏 ...使用Java Socket编写,实现无线内联网对战 先启动server:ChineseChess/src/com/ylw/main/server/Server.java 重新启动client : ChineseChess/src/com/ylw/main/client/Xiangqi.java

    javaGUI网络版象棋

    Java GUI(图形用户界面)网络版象棋是一款基于Java编程语言开发的桌面应用程序,它允许玩家在局域网内进行在线对战。这款程序结合了中国传统的象棋游戏规则与现代计算机技术,为用户提供了一种便捷的、实时的对弈...

    java中国象棋源代码

    Java中国象棋是一款基于Java编程语言开发的桌面游戏,它实现了中国传统的象棋规则,让玩家可以在计算机上进行对弈。本项目旨在通过源代码分析,帮助开发者理解如何利用Java进行游戏开发,以及如何实现象棋游戏的逻辑...

    java版网络中国象棋

    《Java版网络中国象棋:构建多人对战平台的技术解析》 中国象棋,作为深受中国人民喜爱的传统棋类游戏,其在网络化的今天也焕发了新的生机。本项目以Java技术为核心,实现了网络版的中国象棋,允许玩家通过互联网...

    中国象棋网络游戏(java 实现)

    【标题】"中国象棋网络游戏(java 实现)"揭示了这个项目是使用Java编程语言来创建一个在线的中国象棋游戏。Java是一种广泛使用的面向对象的编程语言,以其跨平台性和高性能而闻名,尤其适合开发网络应用。在这个...

    中国象棋联机版源码及素材java实现 下载

    【标题】"中国象棋联机版源码及素材java实现 下载"涉及的主要知识点是基于Java编程语言开发的中国象棋在线游戏平台。在这个项目中,开发者利用Java的网络编程能力,创建了一个可以让玩家在网络上对弈的中国象棋应用...

    中国象棋 java实现

    在中国象棋的Java实现中,我们探讨的是如何利用编程语言来设计并开发一款基于规则的电子版中国象棋游戏。这个项目不仅包含了游戏的基本逻辑,还涉及到用户界面的设计以及图像资源的处理,使得游戏体验更加贴近真实的...

    JAVA编写的网络中国象棋对战(附原代码)

    【标题】"JAVA编写的网络中国象棋对战"是一个基于JAVA编程语言开发的网络棋类游戏项目,它实现了让玩家能够在线上进行实时的中国象棋对决。这个项目的核心功能包括创建游戏主机、客户端连接、棋局同步以及棋子移动的...

    这是一个用JAVA编程的网络中国象棋

    【Java编程实现网络中国象棋】 Java是一种广泛使用的面向对象的编程语言,具有跨平台、高性能和丰富的类库等特性,使得它非常适合用于开发网络应用,包括网络中国象棋这样的多用户在线游戏。在这个项目中,开发者...

    用java编写的中国象棋

    《用Java编写的中国象棋》是一款基于Java编程语言实现的桌面游戏,它将传统的中国象棋规则与现代计算机技术相结合,为玩家提供了一个在数字平台上体验象棋乐趣的平台。下面将详细介绍这款游戏的实现原理、核心功能...

    java编写网络版中国象棋

    在"java编写网络版中国象棋"这个项目中,核心知识点是Java的网络编程。Java提供了一套丰富的API来处理网络通信,主要包括`java.net`和`java.nio`这两个包。`java.net`包含了Socket、ServerSocket、URL等类,用于实现...

    java applet 类中国象棋游戏

    本项目是一个简单的Java Applet实现的中国象棋游戏,尽管开发者自认为改装效果不尽人意,但对于初学者来说,这是一个不错的学习起点。 首先,我们要了解Java Applet的基本概念。Applet是Java平台的一部分,它可以...

    中国象棋java实现源码.rar

    《中国象棋Java实现源码解析》 中国象棋,作为我国传统的棋类游戏,深受广大人民群众的喜爱。而将这种游戏用计算机编程语言实现,无疑是对传统智慧与...总之,“中国象棋Java实现”是一个充满挑战和乐趣的编程课题。

Global site tag (gtag.js) - Google Analytics