收藏 分享(赏)

中国象棋设计.ppt

上传人:精品资料 文档编号:11259642 上传时间:2020-03-05 格式:PPT 页数:40 大小:2.38MB
下载 相关 举报
中国象棋设计.ppt_第1页
第1页 / 共40页
中国象棋设计.ppt_第2页
第2页 / 共40页
中国象棋设计.ppt_第3页
第3页 / 共40页
中国象棋设计.ppt_第4页
第4页 / 共40页
中国象棋设计.ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

1、中国象棋软件设计中国象棋软件设计姓名:姓名: 胡云鹏、王义道,宋玉,余松涛胡云鹏、王义道,宋玉,余松涛班级:班级: 08计科计科学号:学号: 084947024、 084947020, 084947011 ,084947035学院:学院: 人文管理学院人文管理学院主标题主标题问题定义阶段问题定义阶段可行性研究阶段可行性研究阶段需求分析需求分析详细设计详细设计总体设计总体设计编码编码测试测试问题定义阶段问题定义阶段 功能简要描述功能简要描述这是一个单机版中国象棋。该游戏严格按照这是一个单机版中国象棋。该游戏严格按照象棋的游戏规则进行游戏。用鼠标拖动棋子象棋的游戏规则进行游戏。用鼠标拖动棋子到指定

2、位置,即可进行交替象棋对战。在游到指定位置,即可进行交替象棋对战。在游戏界面中还可进行新游戏、悔棋、退出等功戏界面中还可进行新游戏、悔棋、退出等功能型操作。能型操作。问题定义阶段问题定义阶段 用例图用例图红棋黑棋进入界面悔棋结束玩家可行性研究阶段可行性研究阶段由于该单机版中国象棋是为了学习交流因此由于该单机版中国象棋是为了学习交流因此经济可行,又现有条件可满足技术和操作的经济可行,又现有条件可满足技术和操作的可行性,故该项目具有可行性。可行性,故该项目具有可行性。需求分析需求分析1.1-数据流图数据流图1.2-数据字典数据字典1.2.1-外部实体外部实体1.2.2-数据元素数据元素1.2.3-

3、数据流数据流1.2.4-存储文件存储文件1.2.5-加工加工2-状态转换图状态转换图数据流图数据流图玩家操作资源信息游戏事件处理 显示鼠标事件消息显示信息资源数据顶层数据流图主控模块游戏处理棋盘格局原子数据流图1 2游戏处理棋盘格局1生成棋盘及棋子2.12.1.1棋子处理空白落子2.3是否开始新游戏2.4交替下子2.5提示信息判断胜负2.22.1.2吃子2.1.3越界数据字典数据字典 外部实体外部实体编编 号号 名称名称 内部名内部名 输输 入入数据流数据流输输 出出数据流数据流备备 注注W01 玩家玩家 JLabel play 数据字典数据字典 数据元素数据元素编编 号号 数据元素数据元素名

4、名内部名内部名 类类 型型 备备 注注E01 棋棋 盘盘 Main GIFE02 棋子 *.png pngE03 窗格 Container con JLabelE04 工具 栏 JToolBar jmain JToolBarE05 重新开始 JButton anew Button数据字典数据字典 数据元素数据元素编编 号号 数据元素数据元素名名内部名内部名 类类 型型 备备 注注E06 悔棋 JButton repent ButtonE07 退出 JButton exit ButtonE08 当前信息 JLabel text JLabelE09 保存当前操作 Vector Var classE

5、10 棋子横坐标Ex char数据字典数据字典 数据元素数据元素编编 号号 数据元素数据元素名名内部名内部名 类类 型型 备备 注注E11 棋子 纵 坐标 Ey charE12 鼠 标单击mouseClicked classE13E14E15数据字典数据字典 数据流数据流编编 号号 数据流数据流名名内部名内部名 组组 成成 备备 注注L01 资资 源数源数据据in E1+E2L02 显显 示信示信息息drawChessManE1E8L03 鼠鼠 标标 事事件消息件消息chessManClick E10+E11+E12数据字典数据字典 存储文件存储文件编编 号号 文件名文件名 内部内部名名组组

6、成成 备备 注注F01 图图 片文件片文件 jif E01+E02F02 记录记录 文件文件 String.valueOf E09+E10+E11数据字典数据字典 加工加工编编 号号 名称名称 内部名内部名 输输 入数入数据据输输 出数出数据据加工加工 逻逻辑辑备备 注注P1 生成生成棋棋 盘盘棋子棋子ChessMainFrame F01+E03+E04+E05P2.1 棋子棋子处处 理理run() E10+E11+E12L02数据字典数据字典 加工加工编编 号号 名称名称 内部名内部名 输输 入数入数据据输输 出数出数据据加工加工 逻逻辑辑备备 注注P2.2 胜负胜负判断判断playTake

7、 E10+E11P2.3 新游新游戏戏actionPerformed E05+E12P01状态转换图状态转换图s0 q1 s1 s2q2红方黑方s2n q2n+1 S2n+1 q2n+2sF详细设计详细设计 -数据结构设计数据结构设计开始游戏红方行棋判断输赢绘制画面是否结束?是否结束?黑方行棋绘制画面判断输赢YNYY系统流程图详细设计详细设计 算法设计算法设计本系统主要有以下本系统主要有以下 4个模块,每个模块对应一个模块,每个模块对应一个程序包:个程序包:1、 engine:搜索引擎包,系统的核心部分。:搜索引擎包,系统的核心部分。2、 message:网络对战过程中各种消息及其:网络对战过

8、程中各种消息及其传递机制的类实现包。传递机制的类实现包。3、 main:主界面实现包。:主界面实现包。4、 pieces:棋子及其相关类实现包:棋子及其相关类实现包具体实现方法见编码具体实现方法见编码总体设计总体设计象棋界面模块 事件处理棋盘、棋子布局窗口菜单模块 对弈处理 菜单处理提示事件编码编码 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; import java.io.*; public class Chess public static void main(St

9、ring args) new ChessMainFrame(“中国象棋:观棋不语真君子,棋死无悔大中国象棋:观棋不语真君子,棋死无悔大丈夫丈夫 “); class ChessMainFrame extends JFrame implements ActionListener,MouseListener,Runnable /玩家玩家 JLabel play = new JLabel32; /棋盘棋盘 JLabel image; /窗格窗格 Container con; /工具栏工具栏 JToolBar jmain; /重新开始重新开始 JButton anew; /悔棋悔棋 JButton re

10、pent; /退出退出 JButton exit; /当前信息当前信息 JLabel text; /保存当前操作保存当前操作 Vector Var; /规则类对象规则类对象 (使于调用方法使于调用方法 ) ChessRule rule; /* * 单击棋子单击棋子 * chessManClick = true 闪烁棋子闪烁棋子 并并给线程响应给线程响应 * chessManClick = false 吃棋子吃棋子 停止停止闪烁闪烁 并给线程响应并给线程响应 */ boolean chessManClick; /* * 控制玩家走棋控制玩家走棋 * chessPlayClick=1 黑棋走棋黑棋

11、走棋 * chessPlayClick=2 红棋走棋红棋走棋 默认红默认红棋棋 * chessPlayClick=3 双方都不能走棋双方都不能走棋 */ int chessPlayClick=2; /控制棋子闪烁的线程控制棋子闪烁的线程 Thread tmain; /把第一次的单击棋子给线程响应把第一次的单击棋子给线程响应 static int Man,i; ChessMainFrame() new ChessMainFrame(“中中国象棋国象棋 “); /* * 构造函数构造函数 * 初始化图形用户界面初始化图形用户界面 */ ChessMainFrame(String Title) /获

12、行客格引用获行客格引用 con = this.getContentPane(); con.setLayout(null); /实例化规则类实例化规则类 rule = new ChessRule(); Var = new Vector(); /创建工具栏创建工具栏 jmain = new JToolBar(); text = new JLabel(“欢迎使欢迎使用象棋对弈系统用象棋对弈系统 “); /当鼠标放上显示信息当鼠标放上显示信息 text.setToolTipText(“信息信息提示提示 “); anew = new JButton(“ 新新 游游 戏戏 “); anew.setTool

13、TipText(“重新重新开始新的一局开始新的一局 “); anew.addActionListener(this); repent.addActionListener(this); exit = new JButton(“ 退退 出出 “); exit.setToolTipText(“退出象退出象棋程序程序棋程序程序 “); repent = new JButton(“ 悔悔 棋棋 “); repent.setToolTipText(“返返回到上次走棋的位置回到上次走棋的位置 “); /把组件添加到工具栏把组件添加到工具栏 jmain.setLayout(new GridLayout(0,4

14、); jmain.add(anew); jmain.add(repent); jmain.add(exit); jmain.add(text); jmain.setBounds(0,0,558,30); con.add(jmain); /添加棋子标签添加棋子标签 drawChessMan(); /注册按扭监听注册按扭监听 exit.addActionListener(this); /注册棋子移动监听注册棋子移动监听 for (int i=0;i screenSize.height) frameSize.height = screenSize.height; if (frameSize.widt

15、h screenSize.width) frameSize.width = screenSize.width; this.setLocation(screenSize.width - frameSize.width) / 2 - 280 ,(screenSize.height - frameSize.height ) / 2 - 350); /设置设置 this.setIconImage(new ImageIcon(“image红将红将.GIF“).getImage(); this.setResizable(false); this.setTitle(Title); this.setSize(558,670); this.show(); /* * 添加棋子方法添加棋子方法 */ public void drawChessMan() /流程控制流程控制 int i,k; /图标图标 Icon in; /黑色棋子黑色棋子 /车车 in = new ImageIcon(“image黑车黑车 .GIF“); for (i=0,k=24;i 15 /移动移动将、帅将、帅 else if (Man = 30 | Man = 31) rule.willRule(Man,playMan,play,me);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报