下载地址

介绍

(具有网络通信功能)

使用Java语言实现的经典中国象棋程序, 带有演讲PPT文档

功能

  • 登录功能
  • 登录与游戏界面之间添加闪屏界面(类似启动页图片)
  • 游戏准备
  • 投降认输
  • 悔棋
  • 聊天沟通
  • 计时
  • 退出等

实现说明与代码

账户密码等是采用文本形式存储,使用认证方法进行统一认证,若是需要采用MySQL等数据库进行用户存储,只需稍微调整认证逻辑即可。
聊天功能的实现是使用Socket进行通信。

主要代码具体代码详见

package com.tarena.server;import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.HashSet;
import com.tarena.dao.UserDAOForGetUser;
import com.tarena.model.ChessMap;
import com.tarena.model.Request;
import com.tarena.model.Respone;
import com.tarena.model.User;public class ServerMain {private ServerSocket ss=null;private Socket s=null;private ArrayList<ChessMap>qipu;private HashSet<Socket> allSockets;private HashSet<ServerThread> allThread;private ArrayList<ServerThread>Threads;private boolean flag=false;public ServerMain(){try {qipu=new ArrayList<ChessMap>();ss=new ServerSocket(8888);allSockets=new HashSet<Socket>();allThread=new HashSet<ServerThread>();Threads=new ArrayList<ServerThread>();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public void startServer(){try {while (true) {s = ss.accept();allSockets.add(s);ServerThread t=new ServerThread(s);allThread.add(t);Threads.add(t);t.start();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public void init(){startServer();}class ServerThread extends Thread{private Socket s;private ObjectInputStream ois;private ObjectOutputStream oos;boolean isok=true;public ServerThread(Socket s){this.s=s;try {ois=new ObjectInputStream(s.getInputStream());oos=new ObjectOutputStream(s.getOutputStream());} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public void run(){while(isok){Request req;if(allSockets.size()==0){flag=false;}try {req = (Request)ois.readObject();switch(req.getType()){case Request.LOGIN_REQUEST:login(req);break;case Request.READY_REQUEST:ready(req);break;case Request.START_REQUEST:start(req);break;case Request.END_REQUEST:;break;case Request.MOVE_REQUEST:move(req);break;case Request.CHART_REQUEST:chart(req);break;}  } catch (Exception e) {e.printStackTrace();}}}private void start(Request req) {if(flag==false){flag=true;String str=(String)req.getData("start");Respone res=new Respone(Respone.START_RESPONE);res.addData("start", str);sendMapToAllClient(res);}}private void login(Request req) {UserDAOForGetUser getuser=new UserDAOForGetUser();String id=(String)req.getData("id");String passwd=(String)req.getData("passwd");User user=(User)getuser.getUser(id, passwd);Respone res=new Respone(Respone.LOGIN_RESPONE);res.addData("user",user);try {oos.writeObject(res);oos.flush();} catch (IOException e) {e.printStackTrace();}}private void move(Request req){//TODOChessMap map;map=(ChessMap)req.getData("move");if(map.getMap().length==11){qipu.remove(qipu.size()-1);qipu.remove(qipu.size()-1);map=qipu.get(qipu.size()-1);Respone res=new Respone(Respone.MOVE_RESPONE);res.addData("move", map);sendMapToAllClient(res);}else{qipu.add(map);Respone res=new Respone(Respone.MOVE_RESPONE);res.addData("move", map);sendMapToAllClient(res);}}private void chart(Request req){String str=(String)req.getData("chart");if(str.equals("@#$EXIT!@#$")){isok=false;try {allSockets.remove(s);allThread.remove(this);s.close();Respone res=new Respone(Respone.CHART_RESPONE);res.addData("chart", str);sendMessageAllClient(res);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
//          else if(str.equals("对方请求悔棋,是否同意")
//                  ){//@#$对手请求悔棋,是否同意
//
//
//              Respone res=new Respone(Respone.MOVE_RESPONE);
//              qipu.remove(qipu.size()-1);
//              qipu.remove(qipu.size()-1);
//              ChessMap map=qipu.get(qipu.size()-1);
//
//
//
//
//              res.addData("move", map);
//              sendMessageAllClient(res);
//          }else{Respone res=new Respone(Respone.CHART_RESPONE);res.addData("chart", str);sendMessageAllClient(res);    }}}public void sendMessageAllClient(Respone res){for(ServerThread t:allThread){try {t.oos.writeObject(res); t.oos.flush();} catch (Exception e) {e.printStackTrace();}}}public void sendMapToAllClient(Respone res){for(ServerThread t:allThread){try {t.oos.writeObject(res);  t.oos.flush();} catch (Exception e) {e.printStackTrace();}}}private void ready(Request req){if(allSockets.size()==2){Respone res=new Respone(Respone.READY_RESPONE);res.addData("ready",true);try {Threads.get(0).oos.writeObject(res);Threads.get(0).oos.flush();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public static void main(String[] args) {new ServerMain().init();}}

展示




基于Java的图形化中国象棋游戏+PPT文档相关推荐

  1. 团队-中国象棋游戏-设计文档

    http://www.cnblogs.com/zhanghongjian/p/7574218.html 成员:赵建辉 张明成 张洪剑 张鸿程 徐宏璇 喻政博 目标:1.绘制象棋棋盘 2.在指定位置绘制 ...

  2. java象棋游戏用户特点_基于Java Swing的《中国象棋》游戏的设计与实现

    60 开发经验 3基金项目: 江西省自然科学基金资助项目(编号: 0411046); 江西省高性能计算技术重点实验室资助基金项目(No. JXHC20052003) ). 基于 Java Swing ...

  3. 基于JAVA疗养院管理计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA疗养院管理计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA疗养院管理计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java ...

  4. 基于Java毕业设计知识库系统源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计知识库系统源码+系统+mysql+lw文档+部署软件 基于Java毕业设计知识库系统源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

  5. 基于JAVA合同管理计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA合同管理计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA合同管理计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 ...

  6. [源码和文档分享]基于Win32 API实现的中国象棋游戏

    一.选题 在<实践:程序设计实践>中选中了"中国象棋"为最后作业的题目. 中国象棋是一种交互性的.在固定大小的棋盘上进行的游戏,具有一定的规则来约束棋子的行走规律,同时 ...

  7. 团队-象棋游戏-设计文档

    项目名称:象棋游戏 项目参加人员:李一轩.程吉.刘泽宇.苑旺.李瑞鹏.周建伟 项目所需环境及工具:HBuilder.Google浏览器 页面设计:在网页中使用,并由图片来进行棋盘的显示 游戏功能设计: ...

  8. 结对-象棋游戏-设计文档

    项目名称:象棋游戏 项目所需环境及工具:HBuilder.Google浏览器 页面设计:在网页中使用,并由图片来进行棋盘的显示 游戏功能设计:棋子分为红棋子和黑棋子,点击棋盘点格即可下子(预计设计不能 ...

  9. 基于Java web的旅游网站(源码+文档)

    源码编号:B-E57点击查看(分类规则) 项目类型:Java web项目/Java EE项目(非开源) 项目名称:基于java web的旅游网站 [travel] 当前版本:V1.0.0版本 用户类型 ...

最新文章

  1. MongoDB记录操作日志的Base类实现
  2. 解读Cardinality Estimation算法(第二部分:Linear Counting)
  3. 可口的JAVA-并发控制之CountDownLatch
  4. keySet和Map.Entry的理解
  5. 韩嫕:坚持coding
  6. docker 修改阿里镜像源_Jetson Nano 修改源镜像
  7. 《构建之法》--阅读(第13章-第17章)
  8. 特斯拉维权车主发声:方式会变,维权不会变,绝不妥协!
  9. 【转载】Python中numpy 数组的切片操作
  10. ios安全机制不支持antofocus
  11. 爬虫抓取百度指数思路总结
  12. LT8618SXB-HDMI发射器,运行功率小于100mA播放24bit 1080P内容,待机功率小于2mA
  13. 出场、入场动画大全,基于NineOldAndroids轻松实现动画效果
  14. 二级计算机c语言解题技巧,2010年全国计算机等级考试二级C语言考试题型解题技巧...
  15. ASEMI代理AD5934YRSZ-REEL7原装ADI车规级AD5934YRSZ-REEL7
  16. Latex中的%问题(文本变成灰色)
  17. HTML5+Downloader文件下载
  18. 用for循环求零到一百的偶数和
  19. arch linux安装_安装Arch Linux如何使我的旧笔记本电脑重获新生
  20. dio java,Flutter基础(十一)网络请求(Dio)与JSON数据解析

热门文章

  1. 报关单货物重量填写错误-跨境知道
  2. 快速打开windows任务管理器
  3. Jetson TX1 设置SSD硬盘启动,SWAP(20221115亲测)
  4. 基于QT开发的多媒体播放器
  5. kali linux 信息收集(Kismet)
  6. 通过Python实现4字节32位二进制转换为十进制单精度浮点数
  7. 消防设施操作员考试真题、模拟练习题库(4)
  8. url scheme Linux,自定义URL Scheme完全指南
  9. Android内部存储权限
  10. linux手机如何支付宝购物,Ubuntu 9.04下使用支付宝最简单方法[多图]