- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c学生选课系统程序设计
学号 《》课程设计报告 学生选课系统 专业: 网络工程(对口) 班级: 16(3)班 姓名: 代应豪 指导教师: 代美丽 成绩:
计算机学院
2017 年 4月 25 日
目 录
一 需求分析
二 详细设计
三 设计总结
四 参考文献
五 源程序
一 需求分析
1.基本要求 能够实现如下功能: ? 首先用蓝色清屏 ? 在屏幕中央显示由字符串“-============#”组成的黄色的小球,#为球, 按下方向键可以控制上述小球球行方式在屏幕上行走 ? 在行进过程中,球只能左转、右转或继续前进,不能掉转 180 度 2.鼓励实现完整的彩球滚动游戏,鼓励有新的创意 3.提示 ①通过调用 INT 16H 的 0 号功能可以读取光标控制键的扩展码 光标控制键: ↑ ↓ ← → 扩展码(十进制): 72 80 75 77 ②在指定位置用指定属性显示字符的方法有两种:一是直接写显示缓冲区,二是利用 BIOS 屏显功能调用。解: 功能描述(基本上是全部功能):本程序有以下功能 共分为7关,可以手工选择关卡(带有输入异常处理)。走完一关后,如果后面还有关, 直接跳到下一关。否则,结束游戏。各个关之间的差别是速度不同。 按下方向键,球能够按照题的要求在屏幕上行走。按下 ESC 键,退出游戏,按下其他键, 程序不理会。 长时间不按键,球会自动前进。 能够产生随机数,作为蛋。球的初始大小为 14,当大小为 20 时,此关结束。 如果球运动到了边界,球死亡。游戏结束。 ① 设计思路 程序开始时,由用户指定一个关卡,进入游戏。 每次用清屏加显示字符的方式重新显示球和蛋。 当检测到有键子按下时,判断是什么键子,如果是 esc,退出游戏,如果是方向键,按 正确的方向走(如果方向键与球运动方向相反,不理会按键),如果按下的时其它键,
不理会。 设置一个等待时间,如果超过等待时间仍没有按键,球自动前行一步。否则,重新比较 时间。 每次球运动或有键子被按下时,判断是否撞到了自身和边界。 如果吃到了一个蛋,更新完球的位置后,将原球的位置加入球中。 如果球的长度达到了 20(设置的球的最大大小),判断后面是否还有关,没有了,就结 束程序,还有,就跳到下一关卡。 ② 算法说明 设置两个标记变量,分别记录球的大小 ssize 和球上次的大小 befor。设置标记变量, 分别记录蛋的横纵座标 xlabel 和 ylabel,设置标记变量,记录球的位置 tailx 和 taily。设置 snake 记录球各个部分的位置,设置球的最大大小为 20。设置变量 TIME 为等待按键时间。 关卡的选择:程序开始时,从键盘读入一个数字,当作关卡,根据读入的数据,设置等 待时间,也就实现了对球的速度的控制。 清屏和显示小球和蛋。调用 bios 中断可以实现。每次输出 1 个球,下面说一下如何实现小球的手工移动(有按键输入时)。可以知道,如果把球看成一个 个单元,球每移动一次,它的身体的位置都等于它的前一个身体单元的上一步 的位置,因此,可以从尾部进行循环,把前一节的位置给后一节。这样循环 ssize-1 次 就更新了身体,再根据输入的按键判断如何如移动头部,如果按键是左或者右, 只需将球的列加减 1,如果按键是上或者下,只需将球的行加减 1。至此,完成了 对球的显示位置的更新,之后重新清屏、显示,可以使球移动了。 在判断球是否向相反方向走时,可以采用如下算法:已知按键了(以向上为例),检查 球和身体第一节的行号,如果球行号大,说明此时设在向下运动,按键无效。 判断球撞到边界的算法如下(以向上键为例):判断球此时的行号是否为 0,如果是 0, 又按下了向上键,结束游戏,输出“I AM DEAD!!!”。如果球运动过程中撞到了自己, 也同撞到边界的操作。算法是这样的:取出球的位置,依次和每个身体和尾巴的位置 进行比较(从球开始比较),如果相等,说明撞上了,结束游戏。 如何实现球的自动移动。可以用 INT 10H 的 1 号功能检测是否有按键输入,如果有,转 到手工移动模块,否则,调用 INT 1AH 中的 00 号功能,读取当前时间。与上次读的时 间相比,如果小于设定的时间,重新比较,否则,球自动前移。实现前移的算法与手工 移动相似,也是将身体的某一单元的位置置成塔前一单元上一次的位置,之后判断球 方向。 产生并输出蛋。相当于产生一个随机数,我已经读去了当前时间,可以利用 DX 移位(防 止溢出)以后,对 80 和 25 取余,获得位置的随机数。之后判断球的大小 ssize 和 befor, 先让 ssize 为 14,befor 为 13,每产生一个随机数,befor 加 1,每吃一个蛋,ssize 加 1。比较 ssize 和 befor,如果相等
文档评论(0)