1.题目要求
本次课程设计要求运用面向对象的思维方法,编写一个基于控制台的程序,从以下备选题目中选择一个 完成:
基于规则的机器翻译系统简易Markdown编辑器控制台小游戏
1.1 基于规则的机器翻译系统
1. 题目说明
本题目完成一个从中文到英文的规则翻译系统。规则用于描述如何完成从中文到英文的转换。在本项目 中,处于简化角度考虑,只要求使用词翻译规则。
2. 题目要求
1. 给定一个输入句子,基于词翻译规则的翻译过程为:按照某种顺序(如:从左到右),使用词翻译 规则,翻译句子中每一个词。
2. 每个词翻译规则描述一个中文词将被翻译为怎样的英文词或词组。我们给定了一个词典文件
(ldc_cedict.utf8,采用utf8编码),用来存储中文词到英文词或词组的翻译。词典文件中的每一条即为一个词翻译规则。
3. 对于每条规则,需要决定在何时可以使用(如:字符串匹配即可使用),以及决定如何使用(如: 将当前词语的英文翻译加入翻译结果中)。
4. 请思考上述系统中包含哪些对象,这些对象具备什么样的数据和操作。设计你的系统,利用这些对 象的操作完成系统功能。
5. 我们给定了一个包含简单中英文句子的文件,尝试用你的系统翻译这个文件中的句子(或者其他你 想到的句子),观察和分析你的翻译结果。
3. 题目扩展(不作要求)
很显然,逐词翻译不能得到最够好的翻译结果。至少有以下几个问题需要考虑:
1. 规则的应用是有歧义的(比如: 我:/I/me/myself/ 的:/of/... 我的:/my/mine/),如何更好的决定应该应用哪一条规则?
2. 词典中存在一个中文词对应多个英文翻译结果的情况(比如: 我:/I/me/myself/
是:/is/are/am/yes/be/ ),是否可以在翻译规则中描述如何选择不同的翻译结果?
3. 如何改变单词的顺序?(比如:中国的首都是北京。 The capital of China is Beijing.)
4. 如何处理疑问句(中国有多少人口? What's the population of China?)
上述都是很有趣的问题。考虑定义更多的规则(可能是更复杂的规则),或者通过其他方法加强你的系 统,使其能够在上述某一些方面得到更好的翻译结果。
1.2 简易Markdown编辑器
1. 题目说明
Markdown是一种纯文本格式的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格 式,使编辑者摆脱格式的困扰,专注于内容的编写,并可以导出成PDF,HTML等多种格式,本课设说 明文档采用Markdown编写生成。
本题目需要实现一个简易Markdown编辑器,可以在控制台录入Markdown格式的文本,对其进行解 析,并生成HTML格式的输出。为了简便起见,我们只从Markdown标准语法中选择以下语法进行实 现:
1. 标题: # 后加个空格再加标题, # 个数表示标题级别,最高支持六级标题
2. 字体设置:
加粗: 要加粗的文字左右分别用两个*号包起来斜体:要倾斜的文字左右分别用一个*号包起来
斜体加粗:要倾斜和加粗的文字左右分别用三个*号包起来
3. 列表
无序列表: 即在列表项文本前添加 + 或 - 或 * 以及空格即可,示例如下:
有序列表:即在列表项文本前添加数字和空格即可,示例如下:
4. 超链接:语法格式, [超链接名](超链接地址) , 示例如下
5. 需要注意的是多个语法可以混合使用的,例如:
2. 题目要求
1. 可以从控制台录入Markdown格式的文本(只录入文本即可,本次课设不要求实现自由编辑功能, 在控制台中编辑多行文本稍有些复杂),并保存生成 .md 文件。
2. 载入生成的 .md 文件,根据以上定义的Markdown语法子集进行解析,生成HTML文件(需要保证可以通过浏览器打开,正常展示)。
3. 对于生成的HTML文件,不要求附带CSS样式,只生成基本的标签即可。
4. 请仔细思考该系统中需要包含哪些对象,语法规则,Markdown文本,HTML标签等如何合理表 示。
5. 附件中有Markdown样例以及由其生成的HTML样例文件以作参考(HTML文件由Markdown编辑器Typora生成)
3. 题目扩展(不作要求)
1. 参考Markdown标准语法对语法进行拓展。
2. 编辑器拓展,可自由编辑、修改多行内容,可以载入文件进行编辑,添加语法高亮提示等。
3. 输出带有CSS样式的HTML文件。
1.3 控制台小游戏
1. 题目说明
本题目要求完成经典小游戏“贪吃蛇”或者“吃豆豆”的控制台版本,或者同等难度及以上的其他小游戏。
2. 题目要求
1. 贪吃蛇:以经典贪吃蛇为基础参考
地图可以是全空白(上下、左右可贯穿),也可以四面围墙,也可以自由加入预设的障碍物
玩家用键盘方向键控制蛇移动,每次吃掉一个食物,蛇的长度加一,并在地图上随机产生一 个新食物
每吃掉5个普通食物后,附加多产生一个限时食物,在给定的移动步数(比如30格)之后会自动消失
设计计分规则,游戏结束时显示分数
2. 吃豆豆:以吃豆豆大作战为基础参考
地图可以是系统预设的,也可以随机生成;怪兽数量3~5个即可
玩家用键盘方向键控制移动,目标是吃掉所有豆豆;途中,若玩家撞到怪兽则游戏结束
玩家吃到大豆子会使得所有怪兽停止移动一段时间(比如5秒钟,或者玩家移动30格的时间) 思考并设计一个合理的怪兽移动策略,因为完全随机移动似乎效果不佳
设计计分规则,游戏结束时显示分数
分析各种对象之间应该有哪些交互行为,思考并合理定义类的方法
由于系统中存在行为并发的实体(玩家/限时食物/怪兽),需要想办法处理全局时钟下各对象行为的同步。
3. 题目扩展(不作要求)
1. 增加配置选项,可调整以下参数:移动速度、怪兽数量等等。
2. 记录历史最高分前10排行榜、每次游戏结束后更新并做展示。
3. 可以尝试多线程编程以处理多个对象间的行为同步。
2.说明
1. 本次课程设计必须采用面向对象的方法实现,但对继承、多态、泛型等高级特性的使用不作要求。
2. 需要提交课程设计报告(PDF文档, 不要提交PPT), 课程设计报告请尽量详细,主要描述课程设计的设计实现过程,包括但不限于以下方面:
课程设计的主要内容、目标以及设计思路
主要类的设计,包括类的数据和操作,以及类之间的关系程序的功能特点和运行操作方法
遇到的问题和解决方案
3. 本次课程设计的评分主要参考以下方面:
现场的程序演示。
课程设计报告的书写。
系统的功能设计和代码具体实现。
3.提交方式
提交内容包括:
1. 完整工程项目目录,包括所有的代码文件、头文件。
2. 程序的可执行文件(包含依赖文件), 可以直接运行。
3. 课程设计报告。
将以上内容一起打包成 zip 压缩文件并命名为“学号_姓名_高程课设一.zip”提交。提交时间截止到10月13日 23:55