菜单:大学计算机C语言课程设计(调用鼠标)

上传人:油条 文档编号:14488199 上传时间:2017-10-30 格式:DOC 页数:39 大小:243.85KB
返回 下载 相关 举报
菜单:大学计算机C语言课程设计(调用鼠标)_第1页
第1页 / 共39页
菜单:大学计算机C语言课程设计(调用鼠标)_第2页
第2页 / 共39页
菜单:大学计算机C语言课程设计(调用鼠标)_第3页
第3页 / 共39页
菜单:大学计算机C语言课程设计(调用鼠标)_第4页
第4页 / 共39页
菜单:大学计算机C语言课程设计(调用鼠标)_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《菜单:大学计算机C语言课程设计(调用鼠标)》由会员分享,可在线阅读,更多相关《菜单:大学计算机C语言课程设计(调用鼠标)(39页珍藏版)》请在金锄头文库上搜索。

1、1 9/2/2017课程设计(2012-2013 学年度 第二学期)题 目: 鼠 标 控 制 学生姓名: 高 志 薇 学生学号 : 1108210106 专 业: 计算机科学与技术 班 级: 11 级(3 )班 指导教师: 2 9/2/2017目录1设计目的32.设计要求33.算法说明34.流程图44.1 主函数45.程序测试5.6.结论与体会57.参考资料58.源代码61.设计目的通过一个综合应用程序的开发,掌握 C 语言程序设计的基本方法和常用算法,学会从实际应用出发来分析问题,进行软件规划和算法设计,逐步求精,养成良好的编程风格,熟悉软件设计的基本步骤,为后续课程的学习打下良好的基础。2

2、.设计要求:(1) 实现弹出式菜单,菜单至少分为两级(2) 界面尽量友好,尽量符合人们的操作习惯(3) 有退出图标,在任意级菜单下点击退出图标退出整个程序(4) 至少有5个子菜单项(5) 实现同组同学的菜单集成相关知识:图形绘制、鼠标操作、循环、分支、数组等功能扩充:1)三级菜单2)增加子菜单项3 9/2/20173.算法说明3.1 鼠标样子的计算(画鼠标)鼠标的状态是存放在两个一维数组(UpNum16, DownNum16)里面的。而鼠标的各点像素是存放二维数组 mouse_draw1616里面的。是通过 UpNum16,DownNum16两个一维数组给 up1616,down1616两个二

3、维数组赋值,再通过 up1616,down1616给 mouse_draw1616赋初值。具体的说,UpNum16, DownNum16里的数字都是 4 位的 16 进制数,展开后将其值分别赋给 up1616,down1616两个数组。这样 up1616,down1616就是仅由 0,1 组成的数。up1616,down1616同位置坐标相比有四种可能。其中两种是没有像素的点。另外两种一种代表鼠标内部颜色,另一种代表鼠标边界颜色。3.2 菜单模型的控制按照我设计菜单的思路,上一级菜单可以进入下一级菜单,下一级菜单可以返回上一级菜单或进入下一级菜单。因此对于我要达到的 3 级菜单,我引入了 3个

4、控制菜单的变量,i,j,k。i 是控制其级数,表明处于第 i 级菜单。j 表示其是第几个一级菜单或其下子菜单。k 代表其为 3 级菜单,处于所在上级菜单的第 k 个子菜单(功能)。比如主菜单下:i=0;j=0;k=0;又如在调用的五子棋,i=2;j=3;k=0;4.流程图(判断条件时,红色代表 False,绿色代表 True。)4.1 主函数4 9/2/2017i=2&k=t鼠标左击指定区域开始初始化显示器计算鼠标 首次显示鼠标 画主菜单 ha=1 首次画 hello(ha) i=j=k=0画 hello(ha)ha+;根据位置不同进入指定一级菜单鼠标左击i=1&j=t 或i=3 鼠标左击指定

5、区域i=0|i=1&鼠标左击指定区域左击 exit(i=0,鼠标点击指定区域)|(i=2)鼠标点击BACK 区域)返回主菜单根据位置不同进入指定二级菜单i=1 j=t 鼠标左击指定区域根据位置不同进入指定三级菜单结束5 9/2/20175.程序测试在编程过程中,对于我们初学者,经常会出现,程序运行结果和预期不同的情况。以下是我常碰到的几种及解决方法。1.没有对屏显进行初始化。方法:对屏显进行初始化2.鼠标留痕迹,或者留“阴影” 。方法:没有控制好函数 MouseOn(int x,int y) ,MouseOff() 。为了更好的控制我另外定义了一个函数 MouseSave() 。进行了多次调整

6、。3.点击时出现画面连续跳转。这是由鼠标左击是连续点击的过程(即便很快地点一下) ,这时应该能想到计算时间间隔控制它,或者采用延时。延时调用函数少,我采用了延时方法。但是 delay(int x)函数,电脑与电脑差别甚大,有些电脑甚至用不了。而 sleep()又延时 1 秒以上,使得画面十分不灵活。经过查阅图书,我发现了另外一种延时方法,用 for 空循环千万次数量级,可以形成比较稳定的延时,并且通过控制循环次数,可以很方便得改变延时时间。6.结论与体会在学习 C 语言的过程中,我从完全不懂 TC,到能自己编出简单的菜单模型,收获了很多很多。一些看似简单的 bug,却让没有经验的我调试很久。慢

7、慢就体会到了,那些从事编程工作的人们的辛苦。更让我觉得那些任意盗版他人作品人的可恶。自己起早贪黑做出的程序却被他人未经授权直接拿去从事商业活动。创作人员的积极性正是在这种情况下被一点一点的擦去的。编程其实和写作很像,曾经看过疯狂的编程员的前几章,作者说,他从来不把编程序叫作编程序,他把那称为写程序。一字之差,却不难看出程序中包含了多少编程人员的心血。在此期间,我学习的对象大多是图形设计,及自己去控制菜单的进入与返回。像同学做作业用到的递归知识,我只是很大略的了解。而管理系统中用到的文件操作自己却更没有去细细阅读。以后这些都会补上的。7.参考资料1.主编:C 语言课程设计案例精编(第二版)吴启武

8、版2主编:C 语言课程设计案例精编郭翠英版6 9/2/20178.源代码#include#include #include #include #include#include/*下为五子棋所需宏定义及全局变量*/*编译预处理,定义按键码*/#define LEFT 0x4b00 /*左移-方向键 left*/#define RIGHT 0x4d00 /*右移-方向键 right*/#define DOWN 0x5000 /*下移-方向键 down*/ #define UP 0x4800 /*上移-方向键 up*/#define ENTER 0x1c0d /*ENTER 键表示落子*/*若想在游

9、戏中途退出, 可按 Esc 键*/#define ESC 0x011b /*设置偏移量*/#define OFFSET 20#define OFFSET_x 4#define OFFSET_y 3/*定义数组大小*/#define N 16/*定义全局变量*/int statusNN; /*定义的数组,保存状态*/int step_x,step_y;/*行走的坐标*/int key ; /*获取按下的键盘的键*/int flag; /*玩家标志*/int wzq;/*上为五子棋所需宏定义及全局变量*/int MouseX; int MouseY; /*全局变量( MouseX,MouseY)为

10、鼠标顶尖点坐标 */*up1616与 down1616两数组为中间变量。 mouse_draw1616描述鼠标的各点像素。 pixel_save1616为记录下被鼠标遮挡部分的像素 */int up1616,down1616,mouse_draw1616,pixel_save1616; /*下为调用鼠标需要的函数 */void MouseMath()/*为 mouse_draw1616赋值,储存鼠标样子 */ int i,j,jj,k; long UpNum16= 0x3fff,0x1fff,0x0fff,0x07ff, 0x03ff,0x01ff,0x00ff,0x007f, 0x003f,

11、0x00ff,0x01ff,0x10ff, 0x30ff,0xf87f,0xf87f,0xfc3f ; long DownNum16= 0x0000,0x7c00,0x6000,0x7000, 7 9/2/20170x7800,0x7c00,0x7e00,0x7f00, 0x7f80,0x7e00,0x7c00,0x4600, 0x0600,0x0300,0x0300,0x0180 ; for(i=0;i=0;k-) upik=0; for(k=jj;k=0;k-) downik=0; for(k=0;k j)coloradd12(40*i,30*j,i,j);elsecoloradd21(4

12、0*i,30*j,i,j);line(0,0,640,480);/*下面 2 个为自己制作的配色图 2,被最底层菜单调用 */void coloradd(int x,int y,int c1,int c2)int i,j,c0;for(i=0;i10)n=10;/*越界的话 n 当 10 处理*/if(computer)/*如果是自动控制的话输入速度*/printf(please input speed: );/*输入速度*/scanf(%d,&speed);cleardevice(); setbkcolor(11);for(i=0;i);outtextxy(310,30,num2);sett

13、extstyle(0,0,2);setfillstyle(SOLID_FILL,BLACK);/*把原来的地方移去涂黑*/bar(100+150*(x-97)-(33-3*numx-97.datanumx-97.top),400-20*numx-97.top-8,100+150*(x-97)+(33-3*numx-97.datanumx-97.top),400-20*numx-97.top+8);numy-97.top+;/*入栈,目标点的 top 加 1*/numy-97.datanumy-97.top=numx-97.datanumx-97.top;/*在目标点盘子的代号与源点盘子的代号相

14、同*/numx-97.top-;/*出栈,原来地方的 top 减 1*/setfillstyle(SOLID_FILL,numy-97.datanumy-97.top+1);/*盘子颜色代码是栈顶盘子代号加 1*/counter+;bar(100+150*(y-97)-(33-3*numy-97.datanumy-97.top),400-20*numy-97.top-8,100+150*(y-97)+(33-3*numy-97.datanumy-97.top),400-20*numy-97.top+8);sprintf(num3,%d,counter);setcolor(YELLOW);outtextxy(400,50,num

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号