1、 数据结构课程设计 题题 目:五子棋目:五子棋 学生姓名:学生姓名: 学学 号:号: 专专 业:计算机科学与技术业:计算机科学与技术 班班 级:级: 指导教师姓名及职称:指导教师姓名及职称: 起止时间:起止时间:2013 年年 2 月月2013 年年 5 月月 - 1 - 1 1 需求分析需求分析 1.1 五子棋基本规则 1.五子棋行棋时,黑棋先下第一子,由天元开始,后白棋在黑棋周围的交 叉点的落子。接着黑方再以天元中心的 25 个交叉点的范围内落盘面的第三子, 之后黑白双方相互顺序子。 2.最先在棋盘线交点横向,纵向,斜向形成已方的五个棋子连续的一方为 胜。 3.出现禁手对方指出后将判负,其
2、中包括两个或两个以上的活三,活四, 长连均称之为禁手。 4.禁手只对黑棋有效,白棋无禁手。 5.黑方禁手形成时,白方需立即指出,黑方将被判负。若白方未发现黑方 禁手存在而继续应子,其后指出黑方禁手不能判黑方负。 6.黑方连五与禁手同时形成,因黑方已连成五即黑方已获胜,故禁手规则 失效。 7.在对局中,在盘上落下的子又拿起来,此动作称为拔子,若拔子将被判 为负。 8.在对局中棋子掉落在棋盘上将被判负。若推子或蹭子,以盘面第一落点 为准。用手将棋子推正不算违犯规则。 9.在对局中,一方自行中止比赛如:中途退场,将被判负。 10.在对局中对方宣布认输,本局获胜。 11.超过比赛规定所用时间限制,将被
3、判为负:正式比赛期间,迟到时间超 过比赛容许时间将被判负。 12.如下至最终一子仍不分胜负则定为平局。 13.中盘期间双方 同意和局提议,判定为平局。 1.2 课程设计的目 1.通过课程设计把课堂上讲的内容融会贯通,学会设计程序、开发应用软 件、开发系统软件等各项工作。 2.通过实习掌握语言的语法结构,理解类和对象的概念,准确的使用各种 数据类型,对面向对象中的继承和多态的概念要理解、会使用,在程序中提高代 - 2 - 码的重用性,使设计的程序结构清晰、易于维护。 1.3 游戏需求 1画出棋盘的大小; 2画棋子并确定棋子的大小; 3判断模 4根据不同的模式下棋,判断鼠标移动或是单击键执行操作;
4、 式,是人机对弈,人人对弈; 5判断赢家。 本程序要实现五子棋的游戏功能,必须先有一个棋盘,所以,通过继承 JPanel, 然后在 JPanel 上画出一个 20*20 的棋盘,另外还有三个按钮:开局、请黑方下 子和请白方下子,提醒用户进行相应的操作。当然,JPanel 必须放在 JFrame 中, 所以,又通过继承 JFrame 得到一个实例; 2 2 概要设计概要设计 - 3 - 2.1 功能模块图 图 a .功能模块图 五 子 棋 游 戏 开始游戏 执棋子颜色 黑子先行 判断胜负 游戏结束 选择模式 - 4 - 2 2.2 .2 流程图流程图 Yes Yes NoNo Yes Yes N
5、o No 图 b 流程图 3 3 详细设计详细设计 3.1 定义全局变量 1. private String strmode = “人机对弈“ , “人人对弈“;表示两种 模式 2. . public static boolean iscomputer = false , checkcomputer = false; 开始 显示 2020 棋盘 选择模式 黑棋(先)下棋 判断输赢 游戏结束 白子下棋子 判断输赢 - 5 - 3. . private ChessModel cm; 4. . private MainPanel mp; 3.2 主要类的介绍: 3.2.1 class ChessFr
6、ame extends JFrame implements ActionListener 类ChessFrame继承JFrame类和ActionListener接口,主要功能是创建五子棋 游戏主窗体和菜单 3.2.2 class ChessModel 类ChessModel实现整个五子棋程序算法的核心(实现构造棋盘,实现判断某 一点是否可以下棋子,实现人人博弈、人机博弈,实现判断胜负,实现输、赢之 后的提示输出等等。) 3.2.3 class MainPanel extends JPanel implements MouseListener,MouseMotionListener 类MainPanel继承JPanel类和MouseListener,MouseMotionListener接口,主