书签 分享 收藏 举报 版权申诉 / 50
上传文档赚钱

类型C语言程序设计课程大型作业课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4985038
  • 上传时间:2023-01-30
  • 格式:PPT
  • 页数:50
  • 大小:102.50KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《C语言程序设计课程大型作业课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    语言程序设计 课程 大型 作业 课件
    资源描述:

    1、C语言程序设计课程大型作业 大型作业内容介绍 图形操作简介 鼠标操作简介 西文状态下汉字的显示 DOS下如何发声 良好的程序设计风格题目简介*五子棋游戏的棋盘功能,要求能悔棋一步,判断玩家输赢。*中国象棋游戏的棋盘功能,能判断走棋是否合法,允许悔棋一步,并能对玩家记时。*俄罗斯方块,要求能选难度,记分规则同掌上机。所有题目简介 中文窗口下拉式菜单设计,汉化界面,只要求实现菜单,不要求TC功能 BMP图象处理,柔化SMOOTH、锐化SHARPEN、浮雕EMBOSS、扩散D I F F U S E 和 定 制 过 滤 器。对640*480*256色图象处理题目简介*二维图象动画演示,移动、翻转、旋

    2、转。题目简介*三维模型处理,对一个立方体进行旋转、平移、放大缩小。题目简介 细胞生命演示,考虑到二维大数组的存取,及大数组的动态生成。*数据库的读写,对FOXBASE数据库的DBF和MEM文件进行读写。题目简介*电脑音乐程序,能根据乐谱用PC喇叭演奏。*DOS版画笔程序,要求用不同粗细的点、线和不同填充模式的方块、圆,以不同颜色画图。题目简介*汉诺塔的动态演示,自动移动HANIO,要求能输入塔盘的数量。题目简介 数据加密技术探讨,DES加密算法的实现,要求能够加密解密,密钥位数可以指定。*扑克牌24点游戏,人机对弈,提供难度选择。题目简介*TIC-TAC-TOE的人机对弈,机器判断输赢。题目简

    3、介*人工智能“重排九宫”,8个数字放在3*3九个格子中,余下一个格子为空。要求可以用鼠标拖动数字,并记录玩家花费的时间。题目简介*跳棋,将三只黑子放在123方格中,3只白子放在567方格中,空格是4,将白子移到黑子位置,黑子移到白子位置。规则,可以走一步或跳一格,不能后退。题目简介*中文文本文件阅读器。能处理HOME,END,PGUP,PGDN,ARROW,SPACE BAR,ESCAPE键。显示文件名,文件大小,以及操作提示。题目简介 模拟PCTOOLS对文件进行编辑同时显示16进制和字符格式信息。题目简介*自动发牌程序,能够将54张牌随机发给四个人。课题要求 四个人一组,自由组合。每组选一

    4、个题目,确定组长。上机时坐在一起。学期结束前每组提交一份正规的源程序清单,要有详尽的注释,同时注明哪个人负责编写哪部分程序。最后两周验收。图形操作简介 必要的头文件 必须的系统变量 初始化图形界面 初始化出错处理 取得必须的信息 关闭图形界面 一些常用的画图函数必要的头文件#include#include#include#include#include 必须的变量 int GraphDriver;int GraphMode;double AspectRatio;int MaxX,MaxY;int MaxColors;int ErrorCode;struct palettetype palett

    5、e;初始化图形界面 GraphDriver=DETECT;initgraph(&GraphDriver,&GraphMode,);initgraph(&GraphDriver,&GraphMode,”d:tc);初始化出错处理 ErrorCode=graphresult();if(ErrorCode!=grOk)printf(Graphics System Error:%sn,grapherrormsg(ErrorCode);exit(1);取得必须的参数 getpalette(&palette);MaxColors=getmaxcolor()+1;MaxX=getmaxx();MaxY=ge

    6、tmaxy();AspectRatio=(double)xasp/(double)yasp;关闭图形界面 closegraph();/*Return the system to text mode*/一些常用的画图函数 outtext(buffer),outtextxy(x,y,buffer)line(x0,y0,x1,y1);linerel();lineto()circle(int x,int y,int radius);arc()bar(int l,int t,int r,int b);bar3d();moveto(int x,int y);moverel(dx,dy);getx()put

    7、pixel(x,y,color);getpixel(x,y)setcolor();setbkcolor();getcolor();getbkcolor鼠标操作 鼠标简介 鼠标驱动程序的主要功能 鼠标功能调用方法 鼠标的初始化 鼠标光标的显示与隐藏 读取按钮状态,读取或设置光标位置 设置鼠标的光标形状和移动范围鼠标简介 鼠标系统实际上由两个主要元素组成:鼠标机制和称作鼠标驱动程序的内存驻留程序。鼠标驱动程序提供与鼠标通信所需的全部低级支持。此外,它自动维持鼠标光标位置和发现是否按下了某个键。一旦装入驱动程序,鼠标就可以被随后执行的任意程序使用。鼠标简介 可以通过PC中断33H访问鼠标和鼠标驱动程

    8、序的各种功能。所选择的特定函数依赖于中断时AX寄存器的值。三个其它寄存器(BX、CX和DX)用于把各种参数传送给鼠标例程。同样,鼠标函数使用这四个寄存器把鼠标的位置和按钮的状态返回给调用函数。鼠标驱动程序主要功能功能功能输入值输入值输出值输出值功能调用功能调用初始化无AX BXAX=0000显示光标 无无AX=0001隐藏光标 无无AX=0002读取状态 无BXCXDX AX=0003设置位置 CX、DX无AX=0004设置光标 BXCXDX 无AX=0009鼠标驱动程序主要功能功能功能输入值输入值输出值输出值功能调用功能调用X 范围CX DX无AX=0007Y 范围CX DX无AX=0008

    9、光标范围 CX DX SIDI无AX=0010中断程序 CX ES:DX无AX=000C鼠标功能调用方法 用TC通过INT33H中断来编制基本函数,有三种常用方法:嵌入汇编程序,如:ASM CLI清中断 利用全程变量赋予寄存器值,然后通过函数geninterrupt()调用中断实现 利用联合类型REGS,SREGS通过函数int86(),int86x()调用中断,原型在鼠标的初始化InitMouse()union REGS regs;regs.x.ax=0;int86(0 x33,®s,®s);if(regs.x.ax=0)return false;else return true

    10、;鼠标光标的隐藏HideCur()union REGS regs;if(visual)regs.x.ax=2;int86(0 x33,®s,®s);visual=false;鼠标光标的显示ShowCur()union REGS regs;if(!visual)regs.x.ax=1;int86(0 x33,®s,®s);visual=true;鼠标光标的显示与隐藏 在鼠标驱动程序中,鼠标的显示状态用0值表示,隐藏用负值表示,每调用一次显示功能则该值加一,每调用一次隐藏功能,则该值减一。这样,在多次调用了驱动程序的隐藏鼠标光标功能后,再调用显示鼠标光标功能时,将不能正常显

    11、示鼠标光标。需要加入一个visual布尔型变量,来取代驱动程序中的数值。读取鼠标的状态Status()union REGS regs;regs.x.ax=3;int86(0 x33,®s,®s);x=regs.x.cx;y=regs.x.dx;status=regs.x.bx;读取鼠标的状态 其中X,Y为光标位置 status&1左键状态,1为按下,0为未按 status&2右键状态,1为按下,0为未按 status&4中键状态,1为按下,0为未按 要注意循环检测时的抖动现象,可增加一些空循环或延时来清除剩余的按键信号。设置光标位置void MoveMouse(int x,int

    12、y)REGS regs;regs.x.ax=4;regs.x.cx=x;regs.x.dx=y;int86(0 x33,®s,®s);设置鼠标光标形状设置鼠标光标需要三个方面信息:鼠标的外边界:8*8点阵,16个整数 鼠标的内部形状:8*8点阵,16个整数 以及鼠标的热点的相对坐标:int x,y 其中外边界和内边界连续存放,为长度为32的整型数组 int marks32设置鼠标光标形状SetCurs(unsigned masks32,x,y)union REGS regs;struct SREGS sregs;regs.x.ax=9;regs.x.bx=x;regs.x.cx=y

    13、;/*hot spot*/regs.x.dx=(unsigned)masks;s e g r e a d(&s r e g s);int86(0 x33,®s,®s);手的光标数据 0 xffff,0 xffff,0 xffff,0 xffff,0 xffff,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 x1

    14、249,0 x7249,0 x9001,0 x9001,0 x9001,0 x8001,0 x8001,0 x4002,0 x3ffc/*cursor mask*/4,0/*hot spot*/设置鼠标的移动范围SetMouseArea(int x0,int y0,int x1,int y1)union REGS regs;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);西文状态下汉字的显示

    15、汉字库简介 取得字节的某一位 显示24点阵汉字 显示16点阵汉字 在字库中取字模汉字库简介 程序中可直接使用UCDOS中的HZK16,ASC16和HZK24三个文件。HZK16中存储的是16*16点阵汉字是按行存储的以便于显示,每个 汉 字 字 模32BYTE,按照国标码顺序存储,其中也包含了682个纯中文符号字母。汉字库的情况 ASC16存储256个西文ASCII码的8*16点阵格式,按行存储,每个ASCII码16字节。HZK24X存储24*24点阵打印字模,按列存储,每个汉字字模占576字节。24*24点阵汉字存储两比较大,所以从16区1位“啊”字开始存储,以减少字库大小。其中X为KS表示

    16、楷体,宋体等。取得字节某一位的值int getbit(unsigned char byte,int bit)if(bit7)return 0;return(bytebit)&0 x1;函数getbit用于得出一个字节中每个位(bit)是0还是1。显示24点阵的汉字void PutChn24(x,y,char*by,color)int i1,i2,i3;for(i1=0;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+

    17、i3),color);显示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);在字库中找字模 qu=c1-0 xa1;wei=c2-0 xa1;通过计算个计算出该区位码在汉字库中的偏移量:lenth=32 long offset=(qu)*94+wei)*(long)lenth;24*24点阵汉字字模的读取类似,只是其偏移量计算稍有不同:lenth=72 long offset=(qu-15)*94+wei)*(long)lenth;DOS下如何发声在下,有如下三个函数可以处理声音:sound(long freq):发出特定频率的声音 nosound():停止发声 delay():延时特定时间良好的程序设计风格 使用有意义的变量名 匈牙利式命名法 文档的模块化组织(缩进、对齐)自顶向下的设计方法 增加程序的可读性(增加注释)不要滥用语言技巧

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:C语言程序设计课程大型作业课件.ppt
    链接地址:https://www.163wenku.com/p-4985038.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库