儿童围棋入门学习软件的设计与实现——设计模块---毕业论文_第1页
儿童围棋入门学习软件的设计与实现——设计模块---毕业论文_第2页
儿童围棋入门学习软件的设计与实现——设计模块---毕业论文_第3页
儿童围棋入门学习软件的设计与实现——设计模块---毕业论文_第4页
儿童围棋入门学习软件的设计与实现——设计模块---毕业论文_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本本 科科 毕毕 业业 论论 文文 儿童围棋入门学习软件的设计与实现儿童围棋入门学习软件的设计与实现 设计模块设计模块 The Design and Implementation of Go Learning Software for Children Design Module 姓 名: 学 号: 学 院:软件学院 系:软件工程 专 业:软件工程 年 级: 指导教师: 年年 月月 摘摘 要要 作为传统的古代艺术之一,围棋在中国已有 2000 多年的历史了。它可以开 发智力,启迪思维,锻炼头脑,陶冶情操。我国提倡大家学习围棋,特别是希 望少年儿童学习围棋,通过围棋来培养他们的竞争意识,从而达到提高全民族 文化素养的目的。 但是现在市面上关于儿童围棋入门这方面的软件还不多,所以很有必要设计 这样的一套软件来专门给儿童来学习围棋知识。儿童围棋入门软件就是为了让 孩子们有个更好的学习围棋的工具而开发的。而由于学习围棋相对来说较为枯 燥辛苦,因此为了激发兴趣,应当根据儿童特色,将界面做的友好,突出学习 性、趣味性和娱乐性。 本文论述了儿童围棋软件的分析与设计,并采用面向对象的可视化开发工具 VC来具体实现。系统分为围棋基本知识,围棋测验,以及用户自定义这三 大模块。围棋基本知识在软件中模拟棋盘,实现吃子,打劫,悔棋,棋子统计 等功能。软件的主要功能是让儿童学习到一些围棋的入门知识、初级理论、定 式、官子等部分,并有相关的测验。 关键词:关键词:儿童软件;围棋入门 Abstract As a traditional Chinese game,Go has a history over 2000 years。Go can maximize the development of intelligence and enlightenment thinking, exercise our minds, to cultivate virtue. We encourage everyone to learn Go,especially children,expect that it can bring up their Sense of competition,than gain the goal of improve the quality of national culture. But now, theres few Software about Go learning of children,Its necessary to design a software to teach children about knowledge of Go. Go learning software for children is to let the kids have a better learning tool. Because learning Go is a Boring process,its necessary to cultivate an interest to make the children convert from passive learning to active learning,thus,according to childrens characteristics, we should make the interface of the software friendly, and give prominence to the study, as well as the interesting and entertaining. System is divided into three Modules, Go basic knowledge module, Go test module, as well as the user-defined module. Go basic knowledge in the software simulation of the board, to achieve take, KO, take back, statistical features such as a pawn. The main functions of the software is to enable children to learn Go to the entry of some knowledge, the primary theory, pattern, son and some other officials, as well as the relevant test. Key words: Software for Children; Go Portal 目录 第一章 引言.1 1.1项目背景与开发意义.1 1.1.1项目背景1 1.1.2开发意义1 1.2课题的需求说明.2 1.3论文的主要工作和结构.2 第二章 系统总体设计.3 2.1相关工具介绍.3 2.1.1Visual C+ 6.0 概述 .3 2.1.2MFC 概述4 2.1.3Total Video Converter 概述5 2.2围棋常识.6 2.2.1围棋的棋盘6 2.2.2气和提子6 2.2.3自尽7 2.2.4块棋7 2.2.5死活7 2.2.6基本战术7 2.3系统概述.8 2.3.1目标8 2.3.2整体设计图8 2.3.3一般约束9 2.4具体需求.9 2.4.1功能需求9 2.4.2性能需求.10 2.4.3设计约束条件.11 2.4.4接口需求.11 2.4.5属性.11 2.4.6支持软件与设备及需求注释.12 2.4.7数据及算法的要求.12 2.5功能实现.12 2.5.1实现约束.12 2.5.2运行环境.14 2.5.3性能需求.14 2.5.4界面设计.15 2.6系统方案的确定与评价.18 第三章 系统详细设计.19 3.1程序系统的结构.19 3.2重要数据结构.20 3.2.1数组.20 3.2.2栈.20 3.3基本功能实现.21 3.3.1落子.21 3.3.2提子.21 3.3.3悔棋.23 3.3.4退出.23 3.3.5棋局的保存.23 3.4围棋基本知识模块功能实现.24 3.4.1系统自动演示.24 3.4.2视频演示功能.24 3.5围棋测验模块功能实现.25 第四章 系统运行与测试结果.27 4.1程序主界面.27 4.2菜单功能介绍.27 4.3自动提子的实现.28 4.4悔棋.30 4.5禁手.33 4.6保存.35 4.7读取.37 4.8棋局自动演示.39 4.9视频演示.42 4.10系统测试.43 4.10.1系统测试的目的与意义43 4.10.2测试的方法43 4.10.3测试结果44 第五章 结束语.45 参考文献46 致谢47 CONTENTS CHAPTER 1 INTRODUCTION1 1.1Background and Significance of The Subject.1 1.1.1 Project Background .1 1.1.2 Significance of The Subject.1 1.2Requirements issues2 1.3The payers Main Work and the Structure2 CHAPTER 2 SYSTEM OVERALL DESIGN3 2.1Tools Introduction.3 2.1.1 Visual C+ 6.0 Description 3 2.1.2 MFC Description.4 2.1.3 Total Video Converter Description.5 2.2Go knowledge .6 2.2.1 Go board6 2.2.2 Breath and Ate.6 2.2.3 Suicide.7 2.2.4 Block.7 2.2.5 Death or Alive.7 2.2.6 The basic tactical.7 2.3System Overview8 2.3.1 Target 8 2.3.2 The overall design.8 2.3.3 Constraints.9 2.4Requirements Details9 2.4.1 Requirements of Function.9 2.4.2 Requirements of Performance.10 2.4.3 Constraints of Design11 2.4.4 Requirements of Interface.11 2.4.5 Properties.11 2.4.6 Necessary Software and Devices12 2.4.7 Requirements of Data and Algorithm.12 2.5Implementation of Function12 2.5.1 Constraints of Function.12 2.5.2 Operating Environment.14 2.5.3 Requirements of Performance.14 2.5.4 Design of Interface15 2.6Identification and Evaluation of System Program18 CHAPTER 3 SYSTEM DETAILED DESIGN.19 3.1Structure of System.19 3.2Important Data Structure.20 3.2.1 Arrays20 3.2.2 Stack20 3.3Implementation of Basic Function21 3.3.1 Put .21 3.3.2 Ate.21 3.3.3 Take Back23 3.3.4 Exit23 3.3.5 Save.23 3.4Implementation of Basic Go Knowledge Module 24 3.4.1 Game Auto Demonstration .24 3.4.2 Video Display24 3.5Implementation of Go Test Module.25 CHAPTER 4 SYSTEM OPERATION AND TESTING RESULTS27 4.1Main Interface.27 4.2Menu Features.27 4.3Implementation of Ate 28 4.4Take Back30 4.5Restricted move.33 4.6Save.35 4.7Load.37 4.8Game Auto demonstration 39 4.9Video Display42 4.10 System Testing43 4.10.1The Purpose and Significance of System Testing43 4.10.2Testing Method 43 4.10.3Results of Testing.44 CHAPTER 5 SUMMARY.45 REFERENCES46 THANKS.47 儿童围棋入门学习软件 1 第一章第一章 引言引言 1.1 项目背景与开发意义项目背景与开发意义 1.1.1 项目背景项目背景 当前,父母大多很重视子女的素质教育,围棋作为我国具有悠久历史的传 统游戏之一,自然也为很多父母所重视。但市场上很少有针对儿童学习围棋的 软件,如果父母不希望将子女投入繁重的各种“兴趣班”中,儿童围棋的入门 主要还是依靠父母教导和根据书籍自学。但是一方面,大部分的父母都对围棋 知之甚少,很难亲身来教导子女,另一方面,儿童用来学习的书籍通常对他们 来说太过艰深晦涩,难以激起他们的兴趣。因此,为了激发儿童学习围棋的兴 趣,根据儿童的特色,设计一套专门用于儿童入门的,界面友好,能够突出学 习性、趣味性和娱乐性的围棋学习软件,是很有必要的。 1.1.2 开发意义开发意义 童年时代可以说是每个人一生中智力发展最重要的阶段,如果能在这段时 间内对其进行适当有效的锻炼和培养,将对其一生发展产生莫大的帮助。围棋 对弈是一个重复着提出问题与解决问题的过程,可以帮助孩子在成长的到路上 走得更快、更稳。 学围棋可以培养孩子心静能力和认真的学习态度,可以培养孩子的逻辑思 维能力和记忆力,可以完善和提高孩子的判断能力和大局观念,可以培养孩子 的集中力、计算力、记忆力、思考力、创造力。 而儿童围棋入门软件,界面友好,互动性强,趣味突出,更可以通过多媒 体的方式演示各种规则,使得学习过程更加容易,因此更容易能够激发儿童的 兴趣,使得他们学会并爱好围棋,从而提高他们的素质。 儿童围棋入门学习软件 2 1.2 课题的需求说明课题的需求说明 在开发儿童围棋入门软件之前,首先要对软件系统进行需求分析,明确软 件系统的设计目标及其要实现的功能。儿童围棋入门软件主要是儿童学习围棋 入门的平台,提供给用户友好的界面以达到寓教于乐的效果。所以主要设计目 标如下: (1)将围棋棋盘和棋子做成可视化界面,让下棋者能清楚的看到真实的 棋盘和棋子。 (2)实现如悔棋、自动提子、点目等围棋软件的基本功能。 (3)作为儿童围棋入门软件,还应当实现围棋教学的功能。 1.3 论文的主要工作和结构论文的主要工作和结构 本文在对整个软件的课题背景和开发意义进行简要介绍之后,对儿童围棋 入门软件的设计进行详细阐述。本文先介绍了所使用的工具和围棋的基本规则, 让读者对系统的开发环境有了基本的认识;之后,介绍了系统应当实现的功能, 并详细阐述了为了实现这些功能而做出的设计;最后,展示了实现后的设计成 果,让读者可以明确的了解到工作的成果。 本论文分为六章。 第一章 引言。本章介绍课题背景,研究意义和论文的组织结构。 第二章 系统总体设计。本章简单介绍了开发系统所需的环境,围棋的基本 知识,系统的基本需求及总体设计。 第三章 系统详细设计。本章介绍了系统的重要数据结构,并详细阐述了系 统关键功能的设计。 第四章 系统运行结果。本章详细介绍了系统的主要功能。 第五章 系统测试。本章介绍了系统测试的意义和本次测试采用的方法,并 给出了测试的结果。 第六章 结束语。本章对论文进行了总结,还加入了作者在设计过程中的一 儿童围棋入门学习软件 3 些感悟。 儿童围棋入门学习软件 4 第二章第二章 系统总体设计系统总体设计 2.1相关工具介绍相关工具介绍 2.1.1 Visual C+ 6.0 概述概述 一、 Visual C+的介绍 Microsoft Visual C+, (简称 Visual C+、MSVC、VC+或 VC)微软公司的 C+开发工具,具有集成开发环境,可提供编辑 C 语言,C+以及 C+/CLI 等编 程语言。VC+整合了便利的除错工具,特别是整合了微软视窗程式设计 (Windows API) 、三维动画 DirectX API,Microsoft .NET 框架。目前最新的版本 是 Microsoft Visual C+ 2008。 Visual C+以拥有“语法高亮” ,IntelliSense(自动编译功能)以及高级除错 功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在 调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及 建置系统以预编译头文件、最小重建功能及累加连结著称。这些特征明显缩短 程式编辑、编译及连结的时间花费,在大型软件计划上尤其显著。 二、 Visual C+的特点 Visual C+的源程序要求用 C+语言编写,它支持面向对象设计方法,并可 以使用功能强大的 MFC。 利用 Visual C+可以编制各种类型的 Windows 应用程序,从最简单的单文档 和对话框程序到复杂的多文档和组合界面程序。并且 Visual C+作为 Visual Studio 可视化组件家族中最重要的一个成员,与其他可视化开发工具如 Visual Basic、Visual J+及 Visual C#紧密集成在一起,可进行不同类型的程序开发工作, 适用于特殊/复杂和综合软件项目的开发及系统软件的设计。 Visual C+6.0 源代码编辑器提供了自动语句完成功能,编辑输入源程序时, 它能自动显示当前对象的成员变量和成员函数,并指明函数的参数类型。Visual C+6.0 的编译器增加了新的编译参数,改进了对 ANSI C+标准的支持,并采用 儿童围棋入门学习软件 5 Microsoft 的代码优化技术,使生成的目标代码更短小,应用程序运行的速度更 快。Visual C+6.0 程序调试器功能更强大,它提供了诊断映射机制、无需重编 译的调试、远程调试和实施调试等功能。 Visual C+6.0 的联机帮助系统 MSDN Library 采用当今流行的 HTML 格式。它 既能与集成开发环境有机地结合在一起,使得用户在编程时随机查询需要的内 容,又能脱离集成开发环境而独立地运行。并且用户还可以通过互联网获取实 时的帮助信息和实例。 2.1.2 MFC 概述概述 一、 MFC 的介绍 Microsoft Foundation Classes, 简称 MFC,是一个微软公司提供的类库 (class libraries) ,以 C+类的形式封装了 Windows 的 API,并且包含一个应用程 序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量 Windows 句柄封装类和很多 Windows 的内建控件和组件的封装类。 二、 MFC 的特点 MFC 的主要优点是可以用面向对象的方法来调用 Windows API,以及应用程 序开发的便捷。MFC 将很多应用程序开发中常用的功能自动化,并且提供了文 档框架视图结构和活动文档这样的便于自定义的应用程序框架。同时,在 Visual C+内部也内建了很多对 MFC 的例如类向导这样的支持以减少软件开发的 时间,使用类向导可以生成从 hello world 这样的简单程序到活动文档服务器这 样的复杂程序。MFC 的消息映射机制也避免了使用性能较低的庞大虚函数表。 虽然 MFC 的源代码对用户是完全开放的,但是 MFC 的一些封装过程过于复 杂,以至于新用户很难迅速掌握 MFC 的应用程序框架,以及在调试中定位问题 的位置。同时,很多 MFC 对象不是线程安全的,致使在跨线程访问 MFC 对象 时需要编写额外的代码。另外,MFC 的很多类依赖于应用程序向导生成的代码, 使得在使用 Visual C+中其他类型的应用程序向导生成的工程中添加 MFC 支持 的难度大大增加。 儿童围棋入门学习软件 6 2.1.3 Total Video Converter 概述概述 一、 Total Video Converter 的介绍 Total Video Converter 能够读取和播放各种视频和音频文件,并且将它们转 换为流行的媒体文件格式。它内置一个强大的转换引擎,所以能快速的进行文 件格式转换。可以把各种视频格式转换成手机、PDA、PSP、iPOD 使用的便携视 频、音频格式(mp4、3gp、xvid、divx mpeg4 avi、amr/awb audio);高度兼容导 入 RMVB 和 RM 格式;把各种视频转换成标准的 DVD/SVCD/VCD;制作 DVD rip;从各种视频中抽取音频,转换成各种音频格式(mp3、ac3、ogg、wav、aac); 从 CD 转换成各种音频。 二、 Total Video Converter 的特点 1 自动侦测 TS, M2TS, MTS, MKV 和其他高清视频中的隔行扫描信息,从而 在转换时自动去隔行扫描; 2 支持 AVCHD M2TS, AVCHD MTS 视频导入; 3 支持输出 H264 flv; 4 支持输出 高质量 GIF 动画, 黑枚手机视频, MP3 AMV 视频; 5 自动拷贝转换后的视频到 PSP, iTunes for iPod and iPhone; 6 多视频,音频文件合并功能更稳定。 7.转换任意格式视频到移动视频和音频(mp4, 3gp, xvid, divx mpeg4 avi, amr audio 等格式) ,包括手机, PDA, 游戏机 PSP, Xbox360, PS3,苹果 iPod, 苹果 iPhone, MP3 播放器等;; 8.照片转视频功能多达 300 个照片切换效果; 9.高速,稳定转换 RMVB 和 RM 格式视频; 10.转换时支持导入字幕文件 11.转换任意视频到 MPEG 视频,可以兼容 DVD/SVCD/VCD; 11.刻录转换后的 MPEG 视频到 DVD/SVCD/VCD; 12.提取 DVD 视频到任意其他格式视频; 13.从任意视频提取和转换成任意格式声音文件(mp3, ac3, ogg, wav, aac); 儿童围棋入门学习软件 7 14.提取和转换音乐 CD 成任意格式声音文件; 15.专业版本支持命令行; 16.合并多文件并转换成任意格式; 17.解服用提取视频和音频; 18.复用视频和文件成一个文件。 2.2 围棋常识围棋常识 由于面对的用户是儿童,且其父母不一定了解围棋,因此对围棋规则作出 简介,如果有围棋的相关知识可以忽略这一部分。 下棋时,由持黑棋的一方先下子,以后双方轮流下子,每次只能下一个子, 棋子落在棋盘的点上,棋子下定以后,不得向其他点移动。这就是落子的规则。 2.2.1 围棋的棋盘围棋的棋盘 围棋盘是由 19*19 的纵横垂直的平行线交叉而成的,这些线在棋盘上形成 了 361 个交叉点。为了便于识别棋盘上棋子的位置,盘上有九个小圆点,就叫 做星星。棋盘分为角,边和中腹三部分,有 4 个角,4 条边,中央部分就是中腹。 盘面有四个角星,4 个边星,中腹正中央的星有个特殊的名字“天元天元”。 围棋最外一条线叫做边线,也叫一线,向里依次叫二线,三线,四线等。 一般以四线为边和中腹的分界线。 2.2.2 气和提子气和提子 与棋子相邻的空点称该棋子的气(如图 2-1A 标 L 的点)。没有气的棋子将被 从棋盘上提起,称为提子(如图 2-1B 中的白子)。提子又称吃棋。 A B C D 儿童围棋入门学习软件 8 图图 2-1 气、提子、自尽气、提子、自尽 2.2.3 自尽自尽 如果棋子落下后即处于没有气的状态,即要被提子,如果此时对方的子也 处于没气的状态,则可以先提对方的棋子(落的棋子则有了气)否则称为自尽。这 是围棋规则所不允许的(如图 2-1C 中的 X)。(在应氏规则中允许块棋自尽) 2.2.4 块棋块棋 同色的棋子在经线或纬线上相邻,称为连接。连接在一起的棋子组成了一 块棋,当然单一的一颗棋子也可以称一块棋。块棋的气是组成它的所有棋子的 气的总和;有两眼的块棋是永远不可能被提掉的,(如图-22 中标 E 的点),因为对 方不可能同时落下两颗棋子填眼,而单在一眼中填子不能提子就是被禁止的自 尽了。 图图 2-2 已经活化的棋块已经活化的棋块 2.2.5 死活死活 终局时,经双方确认,不能避免被提取的棋,都是死棋;不能被提取的棋, 都是活棋。通常而言,如果即使对方先行也不能被提掉的就是活棋;而即使己方 先行也不可能避免被提掉的就是死棋。 2.2.6 基本战术基本战术 围棋有三种基本的进攻手段“断” 、 “打” 、 “提” ,和两种基本的防御手段 “长” 、 “接” 。 使对方的棋子暂时或永远不能形成整体的手段叫断。 下了一手棋以后,如果下一手就要提掉对方的棋子,那么这手棋就叫打。 儿童围棋入门学习软件 9 提就是基本规则中的提子。 长是在己方棋子直线紧邻处的点上下子。 接就是为了防止己方被提子而增加气的长。 2.3 系统概述系统概述 本软件是专门针对初习围棋的儿童设计的,用于儿童入门的,界面友好, 能够突出学习性、趣味性和娱乐性的围棋学习软件。 2.3.1 目标目标 一、开发意图 开发此软件,通过互动的方式来教习围棋的入门知识,在达到教学目的的 同时,还能激发儿童对围棋的兴趣。 二、应用目标 本软件的目标是开发出一套围棋入门软件,这款工具软件在具备围棋对弈 较完善功能的同时为用户创造一个互动性强,突出学习性和趣味性的环境,娱 乐和方便用户,从而达到进一步推广围棋的目的。本系统完全是由 Visual C+进 行设计开发,Visual C+是一个功能非常强大的可视化应用程序开发工具。开发 出的软件界面友好、方便,易被接受和采纳,是一个实用性强的围棋入门软件, 易于初学儿童上手,应该能为围棋这项活动的推广壮大起到一定的推动作用。 三、作用及范围 能够教导使用者围棋的基本知识,以及提供以固定残局进行的测验,同时 用户也能自定义进行棋局。 四、背景 系统名称“儿童围棋入门软件” 。 工具环境采用 Visual C+。 儿童围棋入门学习软件 10 2.3.2 整体设计图整体设计图 一、通过开发环境的用户接口使用开发环境。 二、程序员对开发环境进行操作。 三、系统分析员负责应用系统需求分析和规范说明,确定开发环境的软硬 件配置并参与概要设计。 图图 2-3 软件设计整体图软件设计整体图 2.3.3 一般约束一般约束 一、硬件的限制:现行产品与 Visual C+ 及 WINDOWS 操作平台下。 二、需要的高级语言系统运行环境在 WINDOWS 操作平台下,应用 Visual C+ 程序语言。 三、开发实践忽视硬件设备,结果显示于显示屏。 2.4 具体需求具体需求 2.4.1 功能需求功能需求 需要的按钮:用户自定义棋局:保存,读取,围棋基本知识,围棋测验。 显示窗体:棋盘显示;棋子位置显示;步数显示;黑白子显示。 具体功能需求如下: A图像(棋盘,棋子, )显示: 将围棋棋盘和棋子做成可视化界面,让下棋者能清楚的看到真实的棋盘和棋 子。 儿童围棋入门学习软件 11 B. 悔棋: 用户在围棋对局的过程中,一些失误不可避免,一些用户希望能够悔棋, 重新落子。当需要悔棋时,点击悔棋按钮,将该下的棋子从棋盘上刷新掉,这 样就实现了悔棋功能。 C. 自动提子: 该程序的功能就是完成清除棋盘上死子的工作。在对局过程中,当有棋子 被完全包围,也就是围棋术语里的没气的时候,这些棋子要从棋盘上提掉。在 实际的围棋对局中,当一片棋子没希望活时,对弈者不会再在这个位置下子而 把所有空填满来吃对方的棋子。所以一般要等到终局时,清掉棋盘死子。本程 序在填满所有空时才能清子。 D. 算目和胜负判断: 该程序的功能就是当终局时,计算出白方所围的空加上白棋个数和计算黑 方所围的空加上黑棋个数并且记录显示给用户知道,然后对双方目数进行比较, 谁大就谁获胜,完成胜负判断。 E. 棋局的保存; 对于有保存意义的棋局,把它保存在一个文件中。当想回顾棋局时,可以 把存档从文件中调出来。 F. 教学功能: 通过多媒体的方式,实现围棋基本知识的教学。用户可观看视频与程序中 棋局的演示来学习围棋的基本知识。 G. 测验功能: 通过固定下法的残局来实现围棋测验,只有当用户的落子与棋局中存储的 落子位置相同时,才可通过测验。 2.4.2 性能需求性能需求 一、静态数值需求 系统分析原始数据:每下一枚棋子系统初始得到的只是棋子的位置坐标 儿童围棋入门学习软件 12 (i,j) ,然后系统自动起用算法判别棋局情况决定是否提子、自杀等,并将相关 数据送入栈、数组等。 处理的文件及记录:对由对手发过来的数据包及棋子位置等各种数据文件 信息进行处理并记录于定义的栈、数组等中。 二、精度需求 要求鼠标左键点击棋盘正确下子处的范围控制。 三、时间特性需求 在软件方面,响应时间、更新处理时间、数据传送和转换时间、处理和解 决问题时间,都比较迅速,完全满足用户要求。 2.4.3 设计约束条件设计约束条件 一、技术约束 要求使用 Visual C+ 程序设计语言编程,掌握软件工程设计思想,在 WINDOWS 平台下,如果要修改内容须用 Visual C+。 二、环境约束 本软件依靠计算机管理控制实现,运行于 WINDOWS 环境下,外部环境的 约束不高。 三、标准约束 本工程设计时所必须遵从的约束软件系统的界面要求美观,布局要合理, 窗口的内容尽量简单明了,提供的信息语言要通俗易懂,要有层次感,分类要 清晰。 四、硬件限制 386 以上 PC 机运行于 WINDOWS 操作系统下有 Visual C+ 开发工具。 2.4.4 接口需求接口需求 软件接口:在 WINDOWS 操作系统下安装 Visual C+ 程序设计开发环境。 儿童围棋入门学习软件 13 2.4.5 属性属性 一、可用性 本软件使儿童脱离棋盘,轻松实现电脑学习围棋知识,方便灵活,可用性 较高。 二、安全性 本软件用于单人使用和教学,未考虑安全性问题。 三、可维护性 本软件由 Visual C+ 编写,内部结构主要涉及的是提子算法的实现,其他 基本功能都是建立于前面的数据及原理基础之上的,所以相对其他复杂的软件 而言是比较方便维护的。 四、可转移,可转换性 本软件可转移的环境是 WINXP/VISTA 系统;可转换性体现在可用向下兼容高版 本的 Visual C+开发工具。 2.4.6 支持软件与设备及需求注释支持软件与设备及需求注释 利用 Visual C+ 程序设计语言作为系统的支持软件。386 以上 PC 机均可。 本围棋入门软件是以 Visual C+ 程序设计语言操作系统来控制软件运行。 对于该围棋入门软件,它的功能需求、性能需求、接口需求等,在稳定性、 必要性的等级上都达到了一定的标准。 2.4.7 数据及算法的要求数据及算法的要求 一、数据结构 二维数组以及顺序栈的定义与使用;深度优先搜索算法。 a. 栈(stack)是限制插入和删除只能在一个位置上进行的表,该位置是 表的末端,叫做栈的顶(top) 。对栈的基本操作有 Push(进栈)和 Pop(出栈) , 前者相当于插入,后者则是删除最后插入的元素。 儿童围棋入门学习软件 14 b. 深度优先搜索(depth-first search)遍历类似于树的先根遍历,是树的 先根遍历的推广。我们从某个顶点 开始处理 ,然后递归地遍历所有与 邻 接的顶点,标记访问过的顶点,并且对于未被标记的所有邻接顶点递归调用深 度优先搜索。 二、数据库 由于该软件规模较小,数据较少无数据库的问题。 三、场合的适用性 给定的场合是 Visual C+ 程序设计开发环境。 2.5 功能实现功能实现 2.5.1 实现约束实现约束 一般约束 硬件的限制:现行产品与 Visual C+ 及 WINDOWS 操作平台下; 需要的高级语言系统运行环境在 WINDOWS 操作平台下,应用 Visual C+ 程序语言; 开发实践忽视硬件设备,结果显示于显示屏。 围棋入门软件 菜 单 控 制 窗 口 外部 功能 内部 功能 图图 2-4 系统功能描述图系统功能描述图 由系统功能的需求决定将系统功能划分为悔棋、棋局的保存、点目和胜负 儿童围棋入门学习软件 15 判断、自动提子、交谈。系统功能中悔棋、棋局的保存点目可直接由操作界面 看到实现,而点目和胜负判断、自动提子是系统内部的算法实现过程,不可能 做成可视的信息显示在用户眼前。 具体的系统功能划分如图 2-5 所示: 外 部 功 能内 部 功 能 功能 名称 悔 棋 围棋基 本知识 围棋 测验 棋局的 保存 点目和 胜负判断 自动 提子 用 户通 过 应 用 界 面通 过 应 用 程 序 图图 2-5 系统功能划分表系统功能划分表 具体的系统处理流程如图 2-6 所示: 围棋入门软件 外部功能内部功能 悔 棋 棋局 保存 自动 提子 点 目 基本 知识 围棋 测验 图图 2-6 围棋入门软件功能图围棋入门软件功能图 2.5.2 运行环境运行环境 一、支持软件:利用 Visual C+ 程序设计语言作为系统的支持软件。 二、设备:386 以上 PC 机均可。 三、控制:本围棋入门软件是以 Visual C+ 程序设计语言操作系统来控制 儿童围棋入门学习软件 16 软件运行。 2.5.3 性能需求性能需求 一、静态数值需求 系统分析原始数据:每下一枚棋子系统初始得到的只是棋子的位置坐标 (i,j) ,然后系统自动起用算法判别棋局情况决定是否提子、自杀等,并将相关 数据送入栈、数组等。 处理的文件及记录:对由对手发过来的数据包及棋子位置等各种数据文件 信息进行处理并记录于定义的栈、数组等中。 二、精度需求 要求鼠标左键点击棋盘交叉点的范围控制在范围以内。 三、时间特性需求 在软件方面,响应时间、更新处理时间、数据传送和转换时间、处理和解 决问题时间,都比较迅速,完全满足用户要求。 四、灵活性 当操作方式、数据结构、与其它软件接口等发生变化时,设计的软件要做 一些适当调整,灵活性大。 2.5.4 界面设计界面设计 1、 为界面添加控件并设置界面。 图图 2-7 控件位置图控件位置图 儿童围棋入门学习软件 17 2、 图像的显示(棋盘,棋子, ) 。 Windows 提供显示设备环境定义了逻辑画面,而 GDI 则提供用于在 DC 上画 图的绘图工具。MFC 定义若干种对应于 Windows 的会同工具的图形对象。包括: 画笔,画刷,字体,位图,调色板,绘图区域。这些绘图工具封装在 MFC 图形 对象类中。这些类的派生关系如图 2-8。 图图 2-8 图形对象的层次结构图形对象的层次结构 图形对象的操作步骤: (1) 定义一个图形对象,并用对应的 Creat()方法初始化对象。例如,若 要创建 CPen 对象,使用 CreatPen()方法。 (2) 一般使用 CDC:SelectObject()方法,选定新对象,该方法返回一个指针, 指向被替换掉的原绘画对象,该返回对象要进行保存。 (3) 完成绘画後,再次使用 CDC:SelectObject()方法,将上一步保存的原来的 绘画对象恢复,使所有一切恢复原样。 CPen 类 创建方法的原型如下:BOOL CreatPen(int nPenStyle,int nWidth,COLORREF crColor); 其中 ,nPenStyle 参数可选项为: PS_SOLID 创建一个实线画笔 PS_DASH 创建一个虚线画笔 PS_DOT 创建一个点线画笔 PS_DASHDOT 创建一个虚线双点线画笔 PS_DASHDOTDOT 创建一个虚线双点线画笔 儿童围棋入门学习软件 18 nWidth 参数是画笔的宽度,crColor 参数用于设置画笔使用颜色。 CBrush 类 使用创建器(构造函数)可最方便的创建 Windows 画刷,并将它附加给 CBrush 对象,创建器方法的原型如下: CBrush(); CBrush(COLORREF crColor); CBrush(int nIndex,COLORREF crColor); CBrush(CBitmap *pBitmap);位图做画刷图案 其中,crColor 参数用于设定画刷的颜色。nIndex 参数用于设定画刷的图案, 可选项: HS_BDIAGONAL 45 度角向下影线 HS_CROSS 水平垂直交叉影线 HS_DIAGCROSS 45 度交叉影线 HS_FDIAGONAL 45 度向上影线 HS_HORLZONTAL 水平影线 HS_VERILCAL 垂直影线 CFont 类 CBitmap 类 CPalette 类(调色板) CRgn 类(区域) 区域是个 Windows GDI 对象,用于存放关于显示设备上的区域的多边形或 椭圆的消息。 GDI 坐标系 GDI 支持两种坐标系,即物理坐标系和逻辑坐标系。 物理坐标系以窗口显示左上角为原点,位置为(0,0),X 轴向右逐步递增, Y 轴向下递增。X,Y 轴的长度取决于当前的视频分辨率,如(640,480), (800,600)(1024,768) 逻辑坐标分为不同类型,Windows 将当前显示屏的坐标变换成物理坐标, 儿童围棋入门学习软件 19 然后显示图形输出。GDI 函数以及 CDC 类中的 MFC 包装方法均使用了逻辑坐标。 逻辑坐标映射方式 逻辑窗口的原点定义了窗口的左上角,所有其他点均以原点为参照点。映 射方式定义了将逻辑单位转换成物理设备单位时用的逻辑计量单位。还规定了 X,Y 轴的方向。Windows 支持的逻辑映射方式: MM_ANISOTROPIC X 轴正向向右,Y 轴正向向上.标尺刻度可变的坐标轴 MM_HIENGLISH X 轴正向向右,Y 轴正向向上.单位刻度为:0.001 inch MM_HTMETRIC X 轴正向向右,Y 轴正向向上.单位刻度为:0.01 mm MM_ISOTROPIC MM_LOENGLISH MM_TEXT MM_TWIPS 矢量图形 Win32 GDI 提供了许多可以使用的矢量图形输出函数。分为两种类型: (1) 线条和曲线 (2) 闭合图形 绘图模式:规定了当前的画笔与显示画面已经存在的对象之间的颜色是如何组 合的。绘图模式代表了两个变量之间的所有可能布尔组合。采用二进制运算符 AND、OR、XOR、NOT。 2.6 系统方案的确定与评价系统方案的确定与评价 根据前面所做的分析,从技术角度和时间限制等多方面考虑,我们认为该 围棋入门软件应该从实用、简便、灵活、智能的角度来整体规划,使得该围棋 入门软件达到如下目的和效果: 一、用户感觉简单易学,易于接受,系统提供简洁、友好以及个性化的界 面; 二、能真正的方便儿童,使得他们如同使用真正的围棋一般使用本软件, 从而摆脱棋盘,在电脑上研究围棋。 三、复盘在现实中一直是各令人头疼的问题,而在电脑上下棋则完全解决 儿童围棋入门学习软件 20 了这个问题,用户在棋局开始到棋局结束过程中可以随时保存棋局,在棋局结 束后,用户可以读取存盘,就象书本一页一页的阅读,再方便不过。 四、由于本软件使用 Visual C+ 编写,因此代码简洁明了,对于以后需要 增加功能,完善各种算法提供了可能,因此它的可维护性可塑性强。 儿童围棋入门学习软件 21 第三章第三章 系统详细设计系统详细设计 系统描述: 为实现围棋入门软件的功能,采用 Visual C+ 编程完成围棋入门软件应用 程序,它是一种具有方便性、明显性和可视性及视界友好性的围棋入门程序软 件,因在引导上的直接性与自身所具有的独到的特点,所以易被接受和采纳。 一、相关关系 利用 Visual C+编程的应用程序是建立在 WINDOWS 操作系统中,现在产品与 Visual C+编程系统及 WINDOWS 操作平台下,且全部内容自含。 二、子集说明 利用 Visual C+编制的围棋入门软件开发环境由程序、文件操作命和系统内部执 行命令组成。 3.1 程序系统的结构程序系统的结构 内部 功能 外部 功能 悔 棋 棋局保存 基本知识 胜负判断 自动提子 点目 图图 3-1 程序系统的结构程序系统的结构 根据前面所做的分析,从技术角度和时间限制等多方面考虑,我们认为这 个围棋入门软件应该从实用、简便、灵活、智能的角度来整体规划。用户可以 自定义棋局,并通过围棋基本知识功能了解围棋的基本规则,还可以在固定的 残局上进行测验。在下棋的过程中用户可以悔棋,并可将棋局保存方便以后翻 阅。下子后的自动提子、胜负判断及点目都是通过内部算法的调用实现的。 儿童围棋入门学习软件 22 3.2 重要数据结构重要数据结构 3.2.1 数组数组 bmp3: 其中 bmp0为棋盘,bmp1为黑方棋子,bmp3为白方棋子。 stateNN: 该二维数组用来表示棋局,其中 N 为 19,棋盘有 19 行、19 列。初始时候数组全为 0,如果棋盘的 i 行 j 列放置了黑方的棋子,则令 statei j=1,如果棋盘的 i 行 j 列放置了白方的棋子,则令 stateij=-1。 state0NN: 该二维数组用来提掉死子,其中 N 为 19,代表棋盘 19 行 19 列。初始时候数组全为 0,当棋盘上有棋子被围死,我们要把它从棋盘清掉, 那么令该棋子所在位置 state0ij=1。这个数组专为清子而设的。 recordNN: 该二维数组用来记录已被遍历的位置,其中 N 为 19。初始 是全为 0。因为我们采用深度遍历算法来寻找死子,那么我们要给一遍历过的 棋子作个记号,这样就不会重复遍历,从而提高了运行速度。当某个棋子所在 位置已被遍历过,我们就令 recordij=1。 3.2.2 栈栈 在我们定义的栈(stack)中,所有栈的成员函数都是共有的,其他类的成 员都可以使用这些函数。然而栈的存储表示和成员函数的实现对其他类的成员 来说是隐蔽的。表示和实现栈的抽象数据类型有两种典型的方式:顺序方式和 连接方式。我们这里采用较简单的顺序方式。 栈的存储结构封装在类的私有部分,栈数组的头指针为*elements,该数组 的最大允许存放元素个数为 max,当前栈顶位置有数组下标指针 top 指示。如 果栈不为空时 elements0是栈中的第一个元素。它的成员函数如下: Cstack(int); /构造函数 Cstack(); /构造函数 Cstack(); /析构函数 void push(CPoint); /若栈不满,则将元素插入到栈顶,否则出错处理 CPoint pop(); /若栈不空,则返回栈顶元素的地址,然后栈顶指针退 儿童围棋入门学习软件 23 1 void makeempty();/置空栈 bool IsEmpty(); /栈为空 3.3 基本功能基本功能实现实现 3.3.1 落子落子 依围棋原理,落子为黑先白后,黑白交替。在计算机中,则设立一个布尔 型变量,用来判断当前应该谁来落子,落子是黑是白。 当鼠标点下时,得到鼠标点击坐标,取整后得到落子坐标,然后进行判断, 欲落子的地方是否已经有棋子?若有,则不落子,重新选择落子点。若没有, 则再判断,该点是否在棋盘外。若在棋盘外,亦重新选择落子点。 3.3.2 提子提子 自动提子的算法是:在棋盘上落一颗子后,判断周围相邻子有无同色子。 若有同色子即选定周边不同色子,然后判断是否有气。若棋子无气,则提掉该 子,刷新棋盘信息。若有气,则选定相邻的同色棋子群,判断同色棋子群的气, 无气则提掉棋子群,否则刷新棋盘信息。若一开始判断就有不同色子,则直接 选定落子判断,后面的处理与有同色子的情况类似。 儿童围棋入门学习软件 24 自

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论