C语言程序设计课程大型作业

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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( ) putpixel(x,y,color); getpixel(x,y) setcolor();setbkcolor();getcolor();getbkcolor
取得必须的参数
getpalette( &palette ); MaxColors = getmaxcolor( ) + 1; MaxX = getmaxx( ); MaxY = getmaxy( ); AspectRatio = (double)xasp (double)yasp;
/
关闭图形界面
0x1200, 0x1200, 0x1249, 0x1249, 0x9001, 0x9001, 0x4002, 0x3ffc
设置鼠标的移动范围
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(0x33,&regs;&regs); regs.x.ax=8;regs.x.cx=y0;regs.x.dx=y1; int86(0x33,&regs,&regs); }
设置光标位置
void MoveMouse(int x,int y) { REGS regs; regs.x.ax=4; regs.x.cx=x; regs.x.dx=y; int86(0x33,&regs,&regs); }
设置鼠标光标形状
设置鼠标光标需要三个方面信息: • 鼠标的外边界:8*8点阵,16个整数 • 鼠标的内部形状:8*8点阵,16个整数 • 以及鼠标的热点的相对坐标:int x,y • 其中外边界和内边界连续存放,为长度 为32的整型数组 int marks[32]
初始化图形界面
GraphDriver = DETECT;
initgraph(&GraphDriver,&GraphMode,"" ); initgraph(&GraphDriver,&GraphMode, ”d:\\tc" );
初始化出错处理
ErrorCode = graphresult(); if( ErrorCode != grOk ){ printf(" Graphics System Error: %s\n", grapherrormsg( ErrorCode ) ); exit( 1 ); }
手的光标数据
• {0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, /*cursor mask*/ • 0x0c00, 0x1200, 0x13fe, 0x1249, 0x7249, 0x9001, 0x8001, 0x8001, /*cursor mask*/} 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
读取鼠标的状态
Status( ) { union REGS regs; regs.x.ax=3; int86(0x33,&regs,&regs); 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为未按 要注意循环检测时的抖动现象,可增加 一些空循环或延时来清除剩余的按键信 号。
必要的头文件
• • • • • #include #include #include #include #include <dos.h> <conio.h> <stdio.h> <stdlib.h> <graphics.h>
必须的变量
• • • • • • • int int double int int int struct GraphDriver; GraphMode; AspectRatio; MaxX, MaxY; MaxColors; ErrorCode; palettetype palette;
* 人工智能“重排九 宫”,8个数字放在 3*3九个格子中,余 下一个格子为空。要 求可以用鼠标拖动数 字,并记录玩家花费 的时间。
题目简介
* 跳棋,将三只黑子放在123方格中,3只白 子放在567方格中,空格是4,将白子移到 黑子位置,黑子移到白子位置。规则,可 以走一步或跳一格,不能后退。
题目简介
取得字节某一位的值
int getbit(unsigned char byte,int bit) { if(bit<0||bit>7) return 0; return (byte>>bit)&0x1; } 函 数 getbit 用 于 得 出 一 个 字 节 中 每 个 位 (bit)是0还是1。
汉字库的情况
• ASC16存储256个西文ASCII码的8*16点阵 格式,按行存储,每个ASCII码16字节。 • HZK24X存储24*24点阵打印字模,按列存 储,每个汉字字模占576字节。24*24点 阵汉字存储两比较大,所以从16区1位 “啊”字开始存储,以减少字库大小。 其中X为KS表示楷体,宋体等。
鼠标光标的显示
ShowCur() { union REGS regs; if(!visual){ regs.x.ax=1; int86(0x33,&regs,&regs); visual=true; }}
鼠标光标的显示与隐藏
在鼠标驱动程序中,鼠标的显示状态用0 值表示,隐藏用负值表示,每调用一次 显示功能则该值加一,每调用一次隐藏 功能,则该值减一。这样,在多次调用 了驱动程序的隐藏鼠标光标功能后,再 调用显示鼠标光标功能时,将不能正常 显示鼠标光标。需要加入一个visual布 尔型变量,来取代驱动程序中的数值。
鼠标操作
• • • • • • • 鼠标简介 鼠标驱动程序的主要功能 鼠标功能调用方法 鼠标的初始化 鼠标光标的显示与隐藏 读取按钮状态,读取或设置光标位置 设置鼠标的光标形状和移动范围
鼠标简介
鼠标系统实际上由两个主要元素组成: 鼠标机制和称作鼠标驱动程序的内存驻 留程序。鼠标驱动程序提供与鼠标通信 所需的全部低级支持。此外,它自动维 持鼠标光标位置和发现是否按下了某个 键。一旦装入驱动程序,鼠标就可以被 随后执行的任意程序使用。
鼠标驱动程序主要功能
功能 X 范围 Y 范围 光标范围 输入值 CX DX CX DX CX DX SI DI 中断程序 CX ES : DX 输出值 无 无 无 无 功能调用 AX=0007 AX=0008 AX=0010 AX=000C
鼠标功能调用方法
用TC通过INT33H中断来编制基本函数, 有三种常用方法: • 嵌入汇编程序,如:ASM CLI清中断 • 利用全程变量赋予寄存器值,然后通过 函数geninterrupt( )调用中断实现 • 利用联合类型REGS,SREGS通过函数 int86(),int86x()调用中断,原型在dos.h
鼠标简介
可以通过PC中断33H访问鼠标和鼠标驱 动程序的各种功能。所选择的特定函数 依赖于中断时AX寄存器的值。三个其它 寄存器(BX、CX和DX)用于把各种参数 传送给鼠标例程。同样,鼠标函数使用 这四个寄存器把鼠标的位置和按钮的状 态返回给调用函数。
鼠标驱动程序主要功能
功能 初始化 显示光标 隐藏光标 读取状态 设置位置 设置光标 输入值 无 无 无 无 CX、DX BXCXDX 输出值 AX BX 功能调用 AX=0000 AX=0001 无 AX=0002 无 BXCXDX AX=0003 AX=0004 无 AX=0009 无
西文状态下汉字的显示
• • • • • 汉字库简介 取得字节的某一位 显示24点阵汉字 显示16点阵汉字 在字库中取字模
汉字库简介
程 序 中 可 直 接 使 用 UCDOS 中 的 HZK16 , ASC16和HZK24三个文件。 • HZK16中存储的是16*16点阵汉字是按行 存储的以便于显示,每个汉字字模 32BYTE,按照国标码顺序存储,其中也 包含了682个纯中文符号字母。
题目简介
*三维模型处理, 对一个立方体 进行旋转、平 移、放大缩小。
题目简介
• 细胞生命演示,考虑到二维大数组 的存取,及大数组的动态生成。 *数据库的读写,对FOXBASE数据库 的DBF和MEM文件进行读写。
题目简介
*电脑音乐程序,能根据乐谱用PC喇 叭演奏。 *DOS版画笔程序,要求用不同粗细 的点、线和不同填充模式的方块、 圆,以不同颜色画图。
设置鼠标光标形状
SetCurs(unsigned masks[32],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(0x33,&regs,&regs); }
鼠标的初始化
InitMouse() { union REGS regs; regs.x.ax=0; int86(0x33,&regs,&regs); if(regs.x.ax==0) return false; else return true;}
鼠标光标的隐藏
HideCur() { union REGS regs; if(visual){ regs.x.ax=2; int86(0x33,&regs,&regs); visual=false; }}
C语言程序设计课程大型作业
• • • • • • 大型作业内容介绍 图形操作简介 鼠标操作简介 西文状态下汉字的显示 DOS下如何发声 良好的程序设计风格
ቤተ መጻሕፍቲ ባይዱ 题目简介
*五子棋游戏的棋盘功能,要求能悔 棋一步,判断玩家输赢。 *中国象棋游戏的棋盘功能,能判断 走棋是否合法,允许悔棋一步,并 能对玩家记时。 *俄罗斯方块,要求能选难度,记分 规则同掌上机。
课题要求
• 四个人一组,自由组合。每组选一个题 目,确定组长。上机时坐在一起。学期 结束前每组提交一份正规的源程序清单, 要有详尽的注释,同时注明哪个人负责 编写哪部分程序。最后两周验收。
图形操作简介
• • • • • • • 必要的头文件 必须的系统变量 初始化图形界面 初始化出错处理 取得必须的信息 关闭图形界面 一些常用的画图函数
所有题目简介
• 中文窗口下拉式菜单设计,汉化 TC2.0界面,只要求实现菜单,不要 求TC功能 • BMP图象处理,柔化SMOOTH、锐 化SHARPEN、浮雕EMBOSS、扩散 DIFFUSE 和 定 制 过 滤 器 。 对 640*480*256色图象处理
题目简介
* 二维图象动画演示, 移动、翻转、旋转。
*中文文本文件阅读器。能处理 HOME,END,PGUP,PGDN, ARROW,SPACE BAR,ESCAPE 键。显示文件名,文件大小,以及 操作提示。
题目简介
• 模 拟 PCTOOLS 对文件进行编 辑 同 时 显 示 16 进制和字符格 式信息。
题目简介
*自动发牌程序,能够将54张牌随机 发给四个人。
题目简介
* 汉诺塔的动态 演示,自动移 动HANIO,要 求能输入塔盘 的数量。
题目简介
• 数据加密技术探讨,DES加密算法 的实现,要求能够加密解密,密钥 位数可以指定。 *扑克牌24点游戏,人机对弈,提供 难度选择。
题目简介
* TIC-TAC-TOE 的人机对弈, 机器判断输赢。
题目简介
相关文档
最新文档