基于Java的图形化中国象棋游戏+PPT文档
下载地址
介绍
(具有网络通信功能)
使用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文档相关推荐
- 团队-中国象棋游戏-设计文档
http://www.cnblogs.com/zhanghongjian/p/7574218.html 成员:赵建辉 张明成 张洪剑 张鸿程 徐宏璇 喻政博 目标:1.绘制象棋棋盘 2.在指定位置绘制 ...
- java象棋游戏用户特点_基于Java Swing的《中国象棋》游戏的设计与实现
60 开发经验 3基金项目: 江西省自然科学基金资助项目(编号: 0411046); 江西省高性能计算技术重点实验室资助基金项目(No. JXHC20052003) ). 基于 Java Swing ...
- 基于JAVA疗养院管理计算机毕业设计源码+数据库+lw文档+系统+部署
基于JAVA疗养院管理计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA疗养院管理计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java ...
- 基于Java毕业设计知识库系统源码+系统+mysql+lw文档+部署软件
基于Java毕业设计知识库系统源码+系统+mysql+lw文档+部署软件 基于Java毕业设计知识库系统源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...
- 基于JAVA合同管理计算机毕业设计源码+数据库+lw文档+系统+部署
基于JAVA合同管理计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA合同管理计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 ...
- [源码和文档分享]基于Win32 API实现的中国象棋游戏
一.选题 在<实践:程序设计实践>中选中了"中国象棋"为最后作业的题目. 中国象棋是一种交互性的.在固定大小的棋盘上进行的游戏,具有一定的规则来约束棋子的行走规律,同时 ...
- 团队-象棋游戏-设计文档
项目名称:象棋游戏 项目参加人员:李一轩.程吉.刘泽宇.苑旺.李瑞鹏.周建伟 项目所需环境及工具:HBuilder.Google浏览器 页面设计:在网页中使用,并由图片来进行棋盘的显示 游戏功能设计: ...
- 结对-象棋游戏-设计文档
项目名称:象棋游戏 项目所需环境及工具:HBuilder.Google浏览器 页面设计:在网页中使用,并由图片来进行棋盘的显示 游戏功能设计:棋子分为红棋子和黑棋子,点击棋盘点格即可下子(预计设计不能 ...
- 基于Java web的旅游网站(源码+文档)
源码编号:B-E57点击查看(分类规则) 项目类型:Java web项目/Java EE项目(非开源) 项目名称:基于java web的旅游网站 [travel] 当前版本:V1.0.0版本 用户类型 ...
最新文章
- MongoDB记录操作日志的Base类实现
- 解读Cardinality Estimation算法(第二部分:Linear Counting)
- 可口的JAVA-并发控制之CountDownLatch
- keySet和Map.Entry的理解
- 韩嫕:坚持coding
- docker 修改阿里镜像源_Jetson Nano 修改源镜像
- 《构建之法》--阅读(第13章-第17章)
- 特斯拉维权车主发声:方式会变,维权不会变,绝不妥协!
- 【转载】Python中numpy 数组的切片操作
- ios安全机制不支持antofocus
- 爬虫抓取百度指数思路总结
- LT8618SXB-HDMI发射器,运行功率小于100mA播放24bit 1080P内容,待机功率小于2mA
- 出场、入场动画大全,基于NineOldAndroids轻松实现动画效果
- 二级计算机c语言解题技巧,2010年全国计算机等级考试二级C语言考试题型解题技巧...
- ASEMI代理AD5934YRSZ-REEL7原装ADI车规级AD5934YRSZ-REEL7
- Latex中的%问题(文本变成灰色)
- HTML5+Downloader文件下载
- 用for循环求零到一百的偶数和
- arch linux安装_安装Arch Linux如何使我的旧笔记本电脑重获新生
- dio java,Flutter基础(十一)网络请求(Dio)与JSON数据解析