北京科技大学小学期C++实践报告.doc

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北京科技大学小学期C实践报告

北京科技大学 计算机应用实践报告 机房名称????逸夫楼803 时 间?2015年7月6日至7月24日 (下午) 学 院 机械工程 专业班级???? ?? 姓??名???? ?? 学??号????? 指导教师? 成 绩??????? 2015年 7月 计算机应用实践报告 经过大一下学期对 C++语言的学习,我们已经对这种编程语言有了初步的了解。在本次课程设计中,运用 C++语言完成实践设计,不但使我们回顾了从前的学习内容,又让我们了解了 C++语言在现实生活中应用的范例,通过自己的双手编写出游戏程序是一种妙趣横生的过程,让我们对计算机语言增加了兴趣,加深了我们对 C++语言的领悟及运用能力。这次我完成的是“新弹弹堂”游戏本次课程设计总结如下。 一、 问题的提出 刚开始在选题时,没有什么思路。通过对“海底世界”、“黄金矿工”、“拍飞虫”、“打飞碟”、“弹弹堂”和“坦克大战”这些Funcode软件里面的模板的练习.“弹弹堂”给了我启发,所以游戏起名是“新弹弹堂”。顾名思义,这个游戏是根据“弹弹堂”这个游戏模板拓展过来的,休闲娱乐的小游戏。“弹弹堂”的主要的游戏玩法没变,发射炮弹去打石头精灵。然后添加了,“拍飞虫”里面的时间效果,就是在规定的时间内完成游戏中所给的任务。“拍飞虫”游戏对我做的这个游戏的贡献很大,有好多个特色都可以看到“拍飞虫”游戏中的影子。还添加了“坦克大战”中的场景的切换。这个是本游戏的一大特色之一。按空格键时间的长短为发射炮弹力度的大小,但是力度有个极限值为200,而且炮弹的抛物线轨迹会有一条抛物线显现出来。在角度方面有所改进,游戏玩家只需在游戏开始按下“上键”,以后都不需要再次调整角度,角度自动向上调整直到一个极限位置停止,发完炮弹后重新填充再次由下往上旋转。炮弹发射两秒之内更新进入下一轮,如此循环,直至游戏结束。石头精灵有三个,每个精灵要被击打三次才能够被消灭。 与“弹弹堂”相比改进的地方有:1.游戏添加了时间的限制,玩家必须要在规定时间内将所有的石头精灵全部消灭才能获得游戏的胜利。2、改变了“弹弹堂”内传统的石头精灵单层化的模式,“新弹弹堂”把石头精灵分为了上、中、下三层,增加了游戏的多样性。3、炮台改成了自动旋转,游戏开始时玩家只需按一下上键即可。就不需要上下键来控制炮台的方向。4、游戏添加了胜利和失败的标志,增加了游戏的趣味性。5、游戏设置了四个不同的游戏场景,分别由W、A、S、D四个按键来触发。并且,四个场景游戏的难度也有所不同。难度分为简单、中等(两个场景)、困难三个层次,增加了游戏的挑战性。 二、 游戏的整体设计及框架结构 1)整体框架 2)游戏中的细化功能 三、 详细设计 1.主函数模块 main()函数模块  主要功能为完成游戏的计时,并在游戏进程中实时显示得分和剩余时间等不断更新的数据;调用其它函数来完成点击鼠标、按下键盘、精灵与世界边界碰撞时的效果;实现说明文字的显示和隐藏。 步骤详细介绍: 第一步,进入主界面,显示游戏说明的图片; 第二步,根据按下不同的键(S、A、D、W),选择不同的场景(难度)直接开始游戏;    S.太空大战 A.绿野仙踪 D.植物大战僵尸 W.侏罗纪世界 第三步,进入场景后,游戏里面会给定一个游戏的时间。(不同的场景时间不一定相同)     第四步,用炮弹打石头精灵。 第五步,游戏结束显示胜利或是失败,回到初始界面再次开始。 2、准备开炮阶段 步骤一、增加炮台力度 步骤二、改变炮台角度 步骤三、画炮弹发射前半段的抛物线 详细代码如下: void CGameMain::GameRun( float fDeltaTime ) { m_fGameTime -= fDeltaTime; m_pTime-SetTextValue((int)m_fGameTime); if( 0 == m_iFireState ) { if( m_iCalStrength ) { m_fGunStrength += 50.f * fDeltaTime; // 50每秒 if( m_fGunStrength 200.f ) //大炮力度的最大值 m_fGunStrength = 200.f; } } else if( 1 == m_iFireState ) { m_fRoundTi

您可能关注的文档

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档