




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、桂林电子科技大学面向对象程序设计课程设计(论文)题目: 教学游戏 院 (系): 数学与计算科学学院 专业班级: 信息与计算科学专业 学 号: 1200710222 学生姓名: 李卫康 指导教师: 宁黎华 教师职称: 讲 师 目 录第1章课程设计目的与要求11.1 课程设计目的11.2 课程设计的实验环境11.3 课程设计的预备知识11.4 课程设计要求1第2章设计思路与算法22.1题目分析4a)使用的库函数4b)类的设计5c)算法设计62.2程序源代码7第3章运行结果以及分析153.1)等级1测试3.2)等级2测试3.3)等级3测试3.4)等级4测试第4章 课设总结16第一章 课程设计的目的与
2、要求1.1课程设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:(1) 进一步巩固、加深学生专业课程面向对象的程序设计的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。(2) 熟练掌握C+语言的基本语法,灵活运用各种数据类型(3) 利用所学知识,开发小型应用系统,掌握运用C+语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。1.2课程设计的实验环境Windows操作系统下Dev-c+下运行代码
3、1.3课程设计的预备知识熟悉使用C语言,熟悉c+面向对象的基本知识以及会使用Dev-c+软件的方法,可以使用其进行编译运行调试等操作1.4课程设计题目以及要求编写一个教学游戏,教授学生学习算术计算。程序将对加法和减法进行测试。程序共有三个难度级别,第1级测试两个小于10并且和也小于10的数字加法;第2级进行任何两个1位数字的加法;第3级是差为非负的两个1位数的减法。程序将随机产生问题并读取游戏参与者输入的答案。对于每一个问题,游戏参与者都有两次回答问题的机会。在得到5分后游戏进入下一级。利用CRC卡片设计类和类中的方法,同时给出UML类图并实现该程序。(参考附录C.1源代码)(1人/组)扩展功
4、能:1)增加第四个难度级别,执行一个两位数的加法2)能够查询游戏参与者的等级。第二章 设计思路与算法2.1题目分析a) 使用的库函数:因为要系统随机产生数字,所以这里需要引入相应的类库函数#include(不同的软件类库都是不相同的)参考相应的被给的代码需要使用的是两个随机函数crand()和rand()函数:srand初始化随机种子,rand产生随机数b)类的设计:玩家类(Player)的设计: 属性:名字 String name; 玩游戏获得的分数 int score 玩家所处的等级 int level构造函数:空参数的构造方法用于初始化参数Player()有参的构造方法用于获得玩家的姓名
5、,等级Player(name,level)方法:玩家自定义姓名 string get_name() 玩家获得的分数 get_score() 玩家玩的过程奖励的分数(两次机会回答正确) increment_score(); 玩家玩的过程所处的等级 get_level() 游戏类(Game)的设计:属性:具体的玩家类 Player player构造函数:用于建立一个玩家player = Player();方法:玩的方法:play()读取玩家的信息:read_player_information()电脑为玩家随机产生随机数; play_round();c)算法设计:根据题目要求添加第四个难度设计:i
6、f (player.get_level() = 1)/等级一 do i1 = rand_int(1,9); i2 = rand_int(1,9); answer = i1 + i2; while (answer 9); else if (player.get_level() = 2)/等级二 i1 = rand_int(1,9); i2 = rand_int(1,9); answer = i1 + i2; else if (player.get_level() = 3)/等级三 do i1 = rand_int(1,9); i2 = rand_int(1,9); answer = i1 - i
7、2; while (answer 0); else if (player.get_level() = 4)/等级四 i1 = rand_int(10,99); i2 = rand_int(10,99); answer = i1 + i2; 2.2程序源代码#include #include #include #include using namespace std; void rand_seed() int seed = static_cast(time(0); srand(seed);int rand_int(int a, int b) return a + rand() % (b - a
8、+ 1); class Playerpublic: Player(); Player(string player_name, int initial_level); void increment_score(); int get_score() const; int get_level() const; string get_name() const;private: string name; int score; int level;Player:Player() name = ; score = 0; level = 1;Player:Player(string player_name,
9、int initial_level) name = player_name; score = 0; level = initial_level;void Player:increment_score() score+; if (score % 5 = 0 & level 4) /等级为4了 level+;int Player:get_level() const return level;int Player:get_score() const return score;string Player:get_name() const return name;class Gamepublic: Ga
10、me(); void play(); void read_player_information(); void play_round(); int get_guess(int v1, int v2, int answer, string operation);private: Player player;Game:Game() player = Player();void Game:play() read_player_information(); string response; do play_round(); cout response; while (response = y);voi
11、d Game:read_player_information() cout name; int initial_level = 0; do cout initial_level; while (initial_level 4); player = Player(name, initial_level);void Game:play_round() int i1 = 0; int i2 = 0; int answer = 0; if (player.get_level() = 1) do i1 = rand_int(1,9); i2 = rand_int(1,9);/产生1到10的随机数 ans
12、wer = i1 + i2; while (answer 9); else if (player.get_level() = 2) i1 = rand_int(1,9); i2 = rand_int(1,9); answer = i1 + i2; else if (player.get_level() = 3) do i1 = rand_int(1,9); i2 = rand_int(1,9); answer = i1 - i2; while (answer 0); else if (player.get_level() = 4) i1 = rand_int(10,99); i2 = rand
13、_int(10,99); answer = i1 + i2; int guess; if (player.get_level() != 3) /改为不等于3 guess = get_guess(i1, i2, answer, +); else if (player.get_level() =3) guess = get_guess(i1, i2, answer, difference); else guess = get_guess(i1, i2, answer, sum); if (answer = guess) player.increment_score(); cout Congratu
14、lations, player.get_name() ! That is correct. n; else cout Sorry, player.get_name() . The correct answer is answer .n; cout Your score is player.get_score() n; coutYour level is player.get_level()endl;/输出当前等级int Game:get_guess(int v1, int v2, int answer, string operation) int guess; int tries = 2; d
15、o cout Please enter the operation of v1 and v2 guess; if (answer = guess) return guess; else cout 0); return guess;int main() Game mathquiz; rand_seed(); mathquiz.play(); return 0;第3章运行结果以及分析点击运行按钮,输入玩家姓名3.1等级一难度测试如果你的回答正确:运行结果如下:倘若回答错误:3.2等级2进行测试当你的分数超过5的时候发现等级level变为了23.3等级三进行测试3.4等级四进行测试第四章 课设总结经
16、过一个学期对c+面向对象程序设计的学习,我学习到了基本的理论知识,了解到了c+面向对象程序设计的面向对象的程序设计思想,这些知识的学习为我的课程实践和进一步的学习打下了坚实的基础。在近期的课设设计中,我体会很多,学习到了很多的东西。加强了我对c+面向对象程序设计的思想,这使得我对计算机语言有了跟深刻的认识。总之,通过这次课程设计我有很大的收获。我选择的题目是第一个题目即是教授学生算数问题,在老师原有的代码基础上我又新增添了一些级别的难度。这次课设中使用了连个方法srand()和rand()方法虽然很陌生,不了解他们的用法,但是通过Google等手段使得我对这个类有了新的认识,学习到了新的库函数。我认真的分析了某个类的属性,构造方法,以及普通方法。待分析好各个类之后,我就开始画UML类图,在这个过程我遇到了麻烦,因为之前很少画这个图,但是通过网络各种手段,我通过startUML这个软件设计了UML类图。因为之前没有接触过,因此花了好长时间去深入了解,最终我终于完成了UML类图的设计的一瞬间是我深刻的体会到了:你不熟悉的东西甚至不曾听说的东西,只要耐心的去深入了解,你早晚会弄明白的。虽然这次程序设计是在参
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 渝北石纹地板施工方案
- 碑林区高一联考数学试卷
- 鼓楼区楼道出新施工方案
- 电厂排灰委托运行施工方案
- 楼梯间踢脚线粉墙施工方案
- 2025年大数据展现平台合作协议书
- 数控加工工艺与编程技术基础 教案 模块二 项目二 综合件的加工(3-4)
- 加强农田基础设施建设实施方案
- 挥发性有机物排放控制的法律法规及政策要求
- 强化基本医疗卫生服务的策略及实施路径
- 中建钢筋精益管理实施指南
- 被执行人生活费申请书范文
- 手卫生七步洗手法
- 保健酒项目运营方案
- 《言语治疗技术》期末考试复习题库(含新题)
- 退役军人就业创业培训承训机构申报表
- 妇幼保健院课件
- 《妇产科-胎心监护》课件
- 中建办公商业楼有限空间作业专项施工方案
- 药物制剂技术中职PPT完整全套教学课件
- 挡渣墙及竖墙施工方案
评论
0/150
提交评论