C语言课程设计模版课件.ppt
《C语言课程设计模版课件.ppt》由会员分享,可在线阅读,更多相关《C语言课程设计模版课件.ppt(87页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C语言课程设计内容介绍课程要求:运用所学C语言编程知识开发设计具有一定实用价值的计算机应用程序。课程目的:1、培养理论与实践相结合的能力;2、培养独立分析问题解决问题的能力;3、培养团队合作意识。1图形操作简介必要的头文件必须的系统变量初始化图形界面初始化出错处理取得必须的信息关闭图形界面一些常用的画图函数2必要的头文件#include#include#include#include#include 3初始化图形界面 GraphDriver=DETECT;initgraph(&GraphDriver,&GraphMode,);initgraph(&GraphDriver,&GraphMode,
2、”c:turboc2);4初始化出错处理 ErrorCode=graphresult();if(ErrorCode!=grOk)printf(Graphics System Error:%sn,grapherrormsg(ErrorCode);exit(1);5取得必须的参数 getpalette(&palette);MaxColors=getmaxcolor()+1;MaxX=getmaxx();MaxY=getmaxy();AspectRatio=(double)xasp/(double)yasp;6关闭图形界面 closegraph();/*Return the system to te
3、xt mode*/7一些常用的画图函数outtext(buffer),outtextxy(x,y,buffer)line(x0,y0,x1,y1);linerel();lineto()circle(intx,inty,intradius);arc()bar(intl,intt,intr,intb);bar3d();moveto(intx,inty);moverel(dx,dy);getx()putpixel(x,y,color);getpixel(x,y)setcolor();setbkcolor();getcolor();getbkcolor8DOS下如何发声在下,有如下三个函数可以处理声音
4、:sound(longfreq):发出特定频率的声音nosound():停止发声delay():延时特定时间人能听到的声音频率大致在20Hz至20000Hz之间9学习资料与方法C程序编程资料汇总图书文献资料查询上网查询借鉴它山之石10课题要求二人一组,自由组合。每组选一个题目,确定组长。学委负责登记并提交。设计结束前进行程序的运行演示和讲解,提交有详尽的注释的源程序和可执行程序。提交开发文档,说明程序的主要模块及功能、主要数据结构及意义、程序采用的核心算法及实现方式、小组成员的分工及完成情况。提交课程设计报告,参考模版。111、文字编辑器:设计界面,实现中、英文字输入,能实现新建、保存、中英文
5、字切换等功能菜单。2、键盘电子琴:能通过键盘弹奏乐曲,通过PC喇叭播放音乐。能够播放简单的WAV文件,支持键盘和鼠标操作。主要应用下的处理声音的函数sound(longfreg)发出特定频率的声音;nosound()停止发音;delay()延时特定时间发音等函数来实现。参考题目123、简易图形编辑器:实现Windows下的画笔工具的部分功能,能够读写编辑位图(BMP)文件。实现类似Photoshop滤镜的部分功能,如锐化、模糊、凸出、扭曲、马赛克等,能够读写编辑位图(BMP)文件。4、黑白翻转棋:二人对弈,系统判断输赢和禁手,具有计时和记分功能,保留纪录,支持鼠标和键盘操作,能悔棋。通过画图函
6、数设定棋盘,设定二人对弈的有效范围,通过鼠标或键盘进行对弈,根据一定的规则,判断输赢。5、五子棋:二人对弈,系统判断输赢和禁手,具有计时和记分功能,保留纪录,支持鼠标和键盘操作,能悔棋。通过画图函数设定棋盘,设定二人对弈的有效范围,通过鼠标或键盘进行对弈,根据一定的规则,判断输赢。136、跳棋:二人对弈,具有计时和记分功能,保留纪录,支持鼠标和键盘操作,能悔棋。7、中国象棋:二人对弈,具有计时和记分功能,系统判断输赢和禁手,支持鼠标和键盘操作,能悔棋一步。8、俄罗斯方块:可选择难度,可记分,保留最高分纪录,支持键盘和鼠标操作。9、挖雷游戏:实现Windows下的挖雷游戏功能。1410、走迷宫:
7、绘制和选择迷宫地图,系统能够自动寻找出口,支持鼠标和键盘操作。通过画图函数设定迷宫,运用数据结构的相关知识,利用一定的算法,实现单步找寻迷宫出口的操作。11、汉诺塔的动态演示:自动移动盘子,要求能输入塔盘的数量,支持鼠标和键盘操作。运用数据结构的相关知识,利用一定的算法,实现单步的动态演示。12、华容道游戏:系统能够自动提示。要求用鼠标拖动并记录时间,支持鼠标和键盘操作。15注意事项规范化编程模块化编程制定详细的日程安排,并严格遵守合理分工,团队协作认真完成开发文档以及课程设计报告16鼠标简介 鼠标系统实际上由两个主要元素组成:鼠标机制和称作鼠标驱动程序的内存驻留程序。鼠标驱动程序提供与鼠标通
8、信所需的全部低级支持。此外,它自动维持鼠标光标位置和发现是否按下了某个键。一旦装入驱动程序,鼠标就可以被随后执行的任意程序使用。17鼠标简介续 可以通过PC中断33H访问鼠标和鼠标驱动程序的各种功能。所选择的特定函数依赖于中断时AX寄存器的值。三个其它寄存器(BX、CX和DX)用于把各种参数传送给鼠标例程。同样,鼠标函数使用这四个寄存器把鼠标的位置和按钮的状态返回给调用函数。18鼠标驱动程序主要功能19鼠标驱动程序主要功能20鼠标功能调用方法用TC通过INT33H中断来编制基本函数,有三种常用方法:嵌入汇编程序,如:ASMCLI清中断利用全程变量赋予寄存器值,然后通过函数geninterrup
9、t()调用中断实现利用联合类型REGS,SREGS通过函数int86(),int86x()调用中断,原型在21鼠标的初始化InitMouse()union REGS regs;regs.x.ax=0;int86(0 x33,®s,®s);if(regs.x.ax=0)return false;else return true;22鼠标光标的隐藏HideCur()union REGS regs;if(visual)regs.x.ax=2;int86(0 x33,®s,®s);visual=false;23鼠标光标的显示ShowCur()union REGS regs;if
10、(!visual)regs.x.ax=1;int86(0 x33,®s,®s);visual=true;24鼠标光标的显示与隐藏 在鼠标驱动程序中,鼠标的显示状态用0值表示,隐藏用负值表示,每调用一次显示功能则该值加一,每调用一次隐藏功能,则该值减一。这样,在多次调用了驱动程序的隐藏鼠标光标功能后,再调用显示鼠标光标功能时,将不能正常显示鼠标光标。需要加入一个visual布尔型变量,来取代驱动程序中的数值。25读取鼠标的状态Status()union REGS regs;regs.x.ax=3;int86(0 x33,®s,®s);x=regs.x.cx;y=regs.
11、x.dx;status=regs.x.bx;26读取鼠标的状态其中X,Y为光标位置status&1左键状态,1为按下,0为未按status&2右键状态,1为按下,0为未按status&4中键状态,1为按下,0为未按要注意循环检测时的抖动现象,可增加一些空循环或延时来清除剩余的按键信号。27设置光标位置void MoveMouse(int x,int y)REGS regs;regs.x.ax=4;regs.x.cx=x;regs.x.dx=y;int86(0 x33,®s,®s);28设置鼠标光标形状设置鼠标光标需要三个方面信息:鼠标的外边界:8*8点阵,16个整数鼠标的内部形状:
12、8*8点阵,16个整数以及鼠标的热点的相对坐标:intx,y其中外边界和内边界连续存放,为长度为32的整型数组intmarks3229设置鼠标光标形状SetCurs(unsigned masks32,x,y)union REGS regs;struct SREGS sregs;regs.x.ax=9;regs.x.bx=x;regs.x.cx=y;/*hot spot*/regs.x.dx=(unsigned)masks;segread(&sregs);int86(0 x33,®s,®s);30手的光标数据 0 xffff,0 xffff,0 xffff,0 xffff,0 xff
13、ff,0 xffff,0 xffff,0 xffff,0 xffff,0 xffff,0 xffff,0 xffff,0 xffff,0 xffff,0 xffff,0 xffff,/*cursor mask*/0 x0c00,0 x1200,0 x1200,0 x1200,0 x13fe,0 x1249,0 x1249,0 x1249,0 x7249,0 x9001,0 x9001,0 x9001,0 x8001,0 x8001,0 x4002,0 x3ffc/*cursor mask*/4,0/*hot spot*/31设置鼠标的移动范围SetMouseArea(intx0,inty0,i
14、ntx1,inty1)unionREGSregs;regs.x.ax=7;regs.x.cx=x0;regs.x.dx=x1;int86(0 x33,®s;®s);regs.x.ax=8;regs.x.cx=y0;regs.x.dx=y1;int86(0 x33,®s,®s);32汉字库简介 程序中可直接使用UCDOS中的HZK16,ASC16和HZK24三个文件。HZK16中存储的是16*16点阵汉字是按行存储的以便于显示,每个汉字字模32BYTE,按照国标码顺序存储,其中也包含了682个纯中文符号字母。33汉字库的情况ASC16存储256个西文ASCII码的8*16
15、点阵格式,按行存储,每个ASCII码16字节。HZK24X存储24*24点阵打印字模,按列存储,每个汉字字模占576字节。24*24点阵汉字存储两比较大,所以从16区1位“啊”字开始存储,以减少字库大小。其中X为KS表示楷体,宋体等。34取得字节某一位的值int getbit(unsigned char byte,int bit)if(bit7)return 0;return(bytebit)&0 x1;函数getbit用于得出一个字节中每个位(bit)是0还是1。35显示24点阵的汉字void PutChn24(x,y,char*by,color)int i1,i2,i3;for(i1=0;
16、i124;i1+)/LINES for(i2=0;i23;i2+)/3 bytes per line for(i3=0;i38;i3+)f(getbit(byi1*3+i2,7-i3)putpixel(x+i1,y+(i2*8+i3),color);36显示16点阵的汉字void PutChn16(x,y,char*buf,color)int i1,i2,i3;for(i1=0;i116;i1+)for(i2=0;i22;i2+)for(i3=0;i38;i3+)if(getbit(bufi1*2+i2,7-i3)putpixel(x+i2*8+i3,y+i1,color);37在字库中找字模
17、 qu=c1-0 xa1;wei=c2-0 xa1;通过计算个计算出该区位码在汉字库中的偏移量:lenth=32long offset=(qu)*94+wei)*(long)lenth;24*24点阵汉字字模的读取类似,只是其偏移量计算稍有不同:lenth=72long offset=(qu-15)*94+wei)*(long)lenth;38良好的程序设计风格全局变量用具有描述意义的名字,局部变量用短名字。函数采用动作性的名字。保持一致性。缩进形式显示程序结构,使用一致的缩行和加括号风格。使用空行显示模块充分而合理地使用程序注释 给函数和全局数据加注释。不要注释不好的代码,应该重写。不要与代
18、码矛盾。友好的程序界面,程序界面的方便性及有效性不要滥用语言技巧使用表达式的自然形式。利用括号排除歧义。分解复杂的表达式。当心副作用,像+这一类运算符具有副作用。程序的健壮性:容错模块化编程39高级编程技术高级编程技术屏幕文本输出屏幕文本输出图形程序设计图形程序设计硬件驱动硬件驱动键盘鼠标输入方法编程键盘鼠标输入方法编程其它高级编程技术其它高级编程技术40一、屏幕文本输出一、屏幕文本输出文本方式的控制文本方式的控制窗口设置和文本输出函数窗口设置和文本输出函数清屏和光标操作函数清屏和光标操作函数屏幕文本移动与存取函数屏幕文本移动与存取函数状态查询函数状态查询函数411.1.1文本方式控制函数文本
19、方式就是显示文本的模式,它的显示单位文本方式就是显示文本的模式,它的显示单位是字符而不是图形方式下的象素,在屏幕上显是字符而不是图形方式下的象素,在屏幕上显示字符的位置坐标用行和列表示。示字符的位置坐标用行和列表示。缺省方式下,每屏为缺省方式下,每屏为80列列25行,行,Turbo C规定规定屏的左上角为屏的左上角为l行行l列,屏的右下角为列,屏的右下角为25行行80列。列。Turbo C支持的文本显示方式有支持的文本显示方式有5种,它们可以种,它们可以用文本显示方式设置函数来进行设置。用文本显示方式设置函数来进行设置。42文本显示方式设置函数:文本显示方式设置函数:voidtextmode(
20、intnewmode)其中newmode的值可分别为:04025黑白显示14025彩色显示28025黑白显示38025彩色显示78025单色显示-1上一次的显示方式431.1.2文本方式颜色控制函数文本颜色设置函数文本颜色设置函数void textcolor(int color)控制文本显示的前景色,即字符显示的颜色,控制文本显示的前景色,即字符显示的颜色,其参数其参数color仅能选择仅能选择17种颜色,即值为种颜色,即值为016。文文本本背背景景颜颜色色设设置置函函数数void textbackground(int color)设设置置文文本本显显示示的的背背景景颜颜色色,其其参参数数co
21、lor仅能选择仅能选择8种颜色,即值为种颜色,即值为07。文文本本属属性性设设置置函函数数void textattr(int attr)设设置置字字符符显显示示的的颜颜色色,背背景景色色,字字符符显显示示是是否否闪闪烁烁,显显示示属属性性参参数数attr可可用用一一个个字字节节即即8位位来来描描述。述。441.1.3 字符显示亮度控制函数字符显示亮度控制函数void highvideo(void)用用高高亮亮度度显显示示字字符。符。void lowvideo(void)用用低低亮亮度度显显示示字字符。符。void normvideo(void)将将设设置置通通常常亮亮度显示字符。度显示字符。4
22、51.2窗口设置和文本输出函数在文本方式下,没进行窗口设置时,即在文本方式下,没进行窗口设置时,即窗口设置缺省时,认为整个屏幕为显示窗口设置缺省时,认为整个屏幕为显示窗口,窗口,Turbo C提供了窗口设置函数提供了窗口设置函数window(),可由用户根据自己的需要来重新设定显可由用户根据自己的需要来重新设定显示窗口。当设定后,以后的控制台示窗口。当设定后,以后的控制台I/O操操作作(即文本输入输出即文本输入输出),就可均在此窗口中,就可均在此窗口中进行。进行。461.2.1窗口设置函数void window(int x1,int y1,int x2,int y2);其其中中(x1,y1)为
23、为窗窗口口的的左左上上角角坐坐标标,(x2,yz)为为窗窗口口的的右右下下角角坐坐标标,这这些些坐坐标标是是以整个屏幕为参考坐标系。以整个屏幕为参考坐标系。利利用用窗窗口口函函数数可可以以在在屏屏幕幕上上定定义义多多个个不不同窗口,以显示不同的信息。同窗口,以显示不同的信息。471.2.2控制台文本输出函数printf(),putc(),puts(),putchar()和和输输出出函函数数以以整整个个屏屏幕幕为为窗窗口口的的,它它们们不不受受由由window设设置置的的窗窗口口限限制制,也也无无法法用用函函数数控控制制它它们们输输出出的的位位置。置。Turbo C提提供供了了三三个个文文本本输
24、输出出函函数数,int cprintf(char*format,);int cputs(char*str);int putch(int ch);它它们们受受窗窗口口的的控控制制,窗窗口口内内显显示示光光标标的的位位置置,就就是是它它开开始始输输出出的的位位置。置。481.3.1清屏函数void clrscr(void);清清除除窗窗口口中中的的文文本本,并并将将光光标标移移到到当当前前窗窗口口的的左左上上角角,即即(1,1)处。处。void clreol(void);除除当当前前窗窗口口中中从从光光标标位位置置开开始始到到本本行行结结尾尾的的所所有有字字符符,但但不不改变光标原来的位置。改变光
25、标原来的位置。void delline(void);删删除除一一行行字字符符,该该行是光标所在行。行是光标所在行。491.3.2光标操作函数void gotoxy(int x,int y);把把光光标标移移到到窗窗口口内内的的(x,y)处处,x,y坐坐标标是是相相对对窗窗口口而而言言。它它多多和和cprintf函函数数配配合合,以以指指定定输输出开始位置。出开始位置。501.4.1屏幕文本移动函数void movetext(int x1,int y1,int x2,int y2,int x3,int y3);该函数将把屏幕上左上角为该函数将把屏幕上左上角为(xl,y1),右下角,右下角为为(x
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 模版 课件
限制150内