欢迎来到天天文库
浏览记录
ID:12509540
大小:135.00 KB
页数:26页
时间:2018-07-17
《c学生选课系统程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、计算机学院《高级语言程序设计》课程设计报告学号2016-2017学年第二学期1608220203《高级语言程序设计》课程设计报告题目:学生选课系统专业:网络工程(对口)班级:16(3)班姓名:代应豪指导教师:代美丽成绩:计算机学院2017年4月25日计算机学院《高级语言程序设计》课程设计报告目录一需求分析二详细设计三设计总结四参考文献五源程序计算机学院《高级语言程序设计》课程设计报告一需求分析1.基本要求能够实现如下功能:首先用蓝色清屏在屏幕中央显示由字符串“-============#”组成的黄色的小球,#为球,按下方向键可以控制上述小球球行方式在屏幕上行走在行进过程中,球只能左转
2、、右转或继续前进,不能掉转180度2.鼓励实现完整的彩球滚动游戏,鼓励有新的创意3.提示①通过调用INT16H的0号功能可以读取光标控制键的扩展码光标控制键:↑↓←→扩展码(十进制):72807577②在指定位置用指定属性显示字符的方法有两种:一是直接写显示缓冲区,二是利用BIOS屏显功能调用。解:功能描述(基本上是全部功能):本程序有以下功能共分为7关,可以手工选择关卡(带有输入异常处理)。走完一关后,如果后面还有关,直接跳到下一关。否则,结束游戏。各个关之间的差别是速度不同。按下方向键,球能够按照题的要求在屏幕上行走。按下ESC键,退出游戏,按下其他键,程序不理会。长时间不按键,
3、球会自动前进。能够产生随机数,作为蛋。球的初始大小为14,当大小为20时,此关结束。如果球运动到了边界,球死亡。游戏结束。①设计思路程序开始时,由用户指定一个关卡,进入游戏。每次用清屏加显示字符的方式重新显示球和蛋。当检测到有键子按下时,判断是什么键子,如果是esc,退出游戏,如果是方向键,按正确的方向走(如果方向键与球运动方向相反,不理会按键),如果按下的时其它键,24计算机学院《高级语言程序设计》课程设计报告不理会。设置一个等待时间,如果超过等待时间仍没有按键,球自动前行一步。否则,重新比较时间。每次球运动或有键子被按下时,判断是否撞到了自身和边界。如果吃到了一个蛋,更新完球的位
4、置后,将原球的位置加入球中。如果球的长度达到了20(设置的球的最大大小),判断后面是否还有关,没有了,就结束程序,还有,就跳到下一关卡。②算法说明设置两个标记变量,分别记录球的大小ssize和球上次的大小befor。设置标记变量,分别记录蛋的横纵座标xlabel和ylabel,设置标记变量,记录球的位置tailx和taily。设置snake记录球各个部分的位置,设置球的最大大小为20。设置变量TIME为等待按键时间。关卡的选择:程序开始时,从键盘读入一个数字,当作关卡,根据读入的数据,设置等待时间,也就实现了对球的速度的控制。清屏和显示小球和蛋。调用bios中断可以实现。每次输出1个
5、球,下面说一下如何实现小球的手工移动(有按键输入时)。可以知道,如果把球看成一个个单元,球每移动一次,它的身体的位置都等于它的前一个身体单元的上一步的位置,因此,可以从尾部进行循环,把前一节的位置给后一节。这样循环ssize-1次就更新了身体,再根据输入的按键判断如何如移动头部,如果按键是左或者右,只需将球的列加减1,如果按键是上或者下,只需将球的行加减1。至此,完成了对球的显示位置的更新,之后重新清屏、显示,可以使球移动了。在判断球是否向相反方向走时,可以采用如下算法:已知按键了(以向上为例),检查球和身体第一节的行号,如果球行号大,说明此时设在向下运动,按键无效。判断24计算机学
6、院《高级语言程序设计》课程设计报告球撞到边界的算法如下(以向上键为例):判断球此时的行号是否为0,如果是0,又按下了向上键,结束游戏,输出“IAMDEAD!!!”。如果球运动过程中撞到了自己,也同撞到边界的操作。算法是这样的:取出球的位置,依次和每个身体和尾巴的位置进行比较(从球开始比较),如果相等,说明撞上了,结束游戏。如何实现球的自动移动。可以用INT10H的1号功能检测是否有按键输入,如果有,转到手工移动模块,否则,调用INT1AH中的00号功能,读取当前时间。与上次读的时间相比,如果小于设定的时间,重新比较,否则,球自动前移。实现前移的算法与手工移动相似,也是将身体的某一单元
7、的位置置成塔前一单元上一次的位置,之后判断球方向。产生并输出蛋。相当于产生一个随机数,我已经读去了当前时间,可以利用DX移位(防止溢出)以后,对80和25取余,获得位置的随机数。之后判断球的大小ssize和befor,先让ssize为14,befor为13,每产生一个随机数,befor加1,每吃一个蛋,ssize加1。比较ssize和befor,如果相等,证明球没有吃蛋,不用产生新的随机数,仍在原位置输出随机数,否则,产生新的随机数。球的大小的变化。每次吃
此文档下载收益归作者所有