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

本文介绍如何使用Java开发网络中国象棋程序,包括象棋服务和客户端Applet的实现,涉及登录处理、图形界面优化及事件处理等技术。
摘要由CSDN通过智能技术生成

一起学习

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实现网络中国象棋室(一)如何用Java实现网络中国象棋室(一)如何用Java实现网络中国象棋室(一)如何用Java实现网络中国象棋室(一)如何用Java实现网络中国象棋室(一)如何用Java实现网络中国象棋室(一)如何用Java实现网络中国象棋室(一)如何用Java实现网络中国象棋室(一)如何用Java实现网络中国象棋室(一)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值