网站大量收购独家精品文档,联系QQ:2885784924

《C语言创新实验》课程设计报告.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《C语言创新实验》 课程设计报告 题目: 坦克大战 班级: 10软件技术 姓名: 李海飞 指导老师:张红霞 一、功能模块 1. 模块A 功能描述 开场动画 实现效果:先是四个切屏效果,然后一滴蓝色的水滴从上面落下,荡开了水波,接着画了两个同心圆,然后让两个同心圆缩小,这时四条直线从上面画下来,然后变短,坦克的上部从上面落下来,坦克的下部从下面飘上来,最后是闪字效果。 编程思路与技术:首先是四个切屏效果,前两个用的条形图函数bar,在for循环里,变量是终止点的坐标,后两个用的直线函数line,在for循环里,变量是x坐标,用delay函数延时;蓝色雨滴是画了一个半径为一的圆,在for循环里,变量是圆心的纵坐标,每次画圆时,先用背景色把上次画的圆擦掉;水波效果和同心圆缩小类似,在for循环里,变量是圆的半径,每次画圆时用背景色把上一次画的圆擦掉;画同心圆时用的是arc函数,在for循环里,变量是终止角的角度;坦克的上下部分运动也相似,在for循环里,变量是y的坐标,先用背景色把上次画的填充掉,再画出新的图形;闪字效果,在while循环里,条件是任意键终止循环“!kbhit()”,变量是颜色值,在同一位置一直输出字。 问题与对策:图像太快,一闪而过,加入了delay函数;坦克的上部分运动时没有到达应该到达地方,改变了循环结束条件;闪字部分,一开始下面的字是普通字,不闪,但没有出现,就全改成了闪字。 2. 模块B 功能描述 控制游戏过程 实现效果:控制整个游戏的流程。 编程思路与技术:定义一个二维数组来表示地图,每一个数组元素的值代表一种物体,如坦克和地形;key函数来接收键盘按键;num是循环次数变量,记录判断炮弹运动的循环执行了多少次;最外面的while循环是一个始终为真的循环,在里面,有一个任意键终止的循环,这个循环是用来判断炮弹运动及游戏结束条件的,在这个循环里面,先判断敌人数量和玩家生命,如果为0,用goto语句退出到整个play函数的最下面,如果不为0,循环判断每发炮弹,如果炮弹状态为生,则调用炮弹运动时判断炮弹方向函数,当num为30时,调用控制敌人运动函数,然后使num的值变为0;如果键盘有按键,则接收按键,然后调用判断己方坦克运动函数。 问题与对策:这个函数是整个游戏中最重要的函数,一开始,其他两个重要的函数和它是一体的,我把他们分开了;一开始,炮弹和坦克同时运动我始终想不出来怎么实现,后来用来一个任意键终止的循环,在外面又套了一个循环;游戏按esc终止在开始时我没想到,后来用来goto语句,直接跳出所有循环。 3. 模块C 功能描述 初始化地图 实现效果:在游戏开始时,画出所有的地形,所有己方的坦克。 编程思路与技术:接收地图数组,定义变量i,j来分别判断地图的行和列,通过两个变量的改变来判断到地图中的每一个区域,判断出区域和区域中应该画什么后,调用画各种地形的函数,然后单独调用两个画坦克函数来画出己方的坦克。 问题与对策:各种物体的坐标是个大问题,最终我用i和j来代表数组中的位置,x和y来代表实际屏幕中的位置,找到了他们之间的转换关系。 4. 模块D 功能描述 判断己方坦克运动 实现效果:判断己方坦克的运动并在屏幕上画出来 编程思路与技术:接收地图数组以及键盘中断的值,根据值的不同来进行不同的判断,以向上为例。接收到的键如果代表向上键的话,就通过坦克在地图数组中的位置判断坦克上方是否有物体。如果有物体,调用画空白函数填充掉那块区域,再调用画向上的坦克函数画一个向上的坦克,让坦克的方向(tank.way)为上;如果没有物体,就判断坦克的方向,若坦克的方向是向上,就调用画空白函数填充掉原来的位置,调用画向上的坦克函数在新的位置画出向上的坦克,并且把坦克在数组中的位置改了,原来位置改为空白,如果坦克方向不为上,擦掉原来的坦克,调用画向上的坦克函数在原来的位置画出向上的坦克,使坦克的方向为上。 问题与对策:坦克不会转身,加了一些关于坦克方向的判断。 5. 模块E 功能描述 控制敌人运动 实现效果:游戏过程中敌方坦克的运动 编程思路与技术:主要用到了随机数函数,产生一定范围内的数字,然后通过不同范围内的数字来代表坦克的不同动作。具体实现和己方坦克有些类似。 6. 模块F 功能描述 炮弹打中物体时判断方向 实现效果:炮弹打中物体时判断炮弹的方向 编程思路与技术:通过switch语句来判断情况。以向上为例,让地图数组中上方为空白,并且调用画空白函数填充掉上方。 7. 模块G 功能描述 画图 实现效果:所有的图,包括地图还有坦克以及空白填充函数 编程思路与技术:用了画线函数l

文档评论(0)

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

教师资格证持证人

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

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档