当前位置:文档之家› c语言课程设计案例-五子棋.

c语言课程设计案例-五子棋.


使用图形方式时先进行图形系统初始化, 检测或设置指定的图形模式
图形系统的初始化

图形系统初始化函数
void initgraph(int *driver,int *mode,char *pathtodriver) 其中; driver——显示适配器驱动程序的枚举变量 mode——图形模式(模式号或模式标识符) pathtodriver——适配器驱动程序的寻找路径,“” 表示在当前目录下(*.BGI) enum graphics_driver{DETECT,CGA,MCGA,EGA,EGA64,…… …,VGA,PC3270}; DETECT——自动检测所用显示适配器的类型,将相应 的驱动程序装入,并将其最高显示模式作为当前显示模 式
颜色控制函数

设调色板:setpalette() 设背景色:setbkcolor() 设绘图色:setcolor()
图形设计
§1 显示系统
显示器:CRT(阴极射线管)与控制电路组成 适配器(图形卡):CPU与显示器的接口,由 寄存器组、存储器和控制电路组成
适配器 主机
图形 显示 显示 控制器 存储器 控制器
CRT
将要显示的字符和图形以数字形式存储在卡上的视频RAM中, 再转换成视频模拟信号传送给相应的显示器
显示模式
文本模式:显示缓冲区中存放显示字符的代码 (ASCII码或汉字机内码),及字符的属性,显示屏 幕按字符分成若干行、列,如80列25行 图形模式:显示缓冲区中存放显示屏幕上每点(象 素)的颜色或灰度值,显示屏幕按象素分成若干行、 列,如640480
一般开机后的模式都是80 ×25的文本模式
§2 Turbo C绘图
图形程序的独立运行问题
为使图形方式的C源程序能够脱离TC环境下运行,应对 EGAVGA显示器的驱动程序.BGI转换成.OBJ文件: C:\TC\BGIOBJ EGAVGA
然后,将EGAVGA.OBJ与GRAPHICS.LIB进行连接:
C:\TC\TLIB LIB\GRAPHICS.LIB+EGAVGA.OBJ
2 3 4 0 1
4 320 200 (0,0) x 320 200 4 (20,50) 2 640 200 (0,0) 16 640 200 16 640 350
16 16 16
CGAC2 CGAC3 CGAHI EGAL0 EGAHI (400,150)
(639,479) VGAL0 VGAMED VGAHI
程序的模块划分
•画棋盘 •显示提示信息 •棋盘置空 接收,处理用户输入,直至: •分出胜负 •按退出键
•更新全局变量gCursor •移动光标至新位置
•判断落子键有效性 •更新数组与棋盘显示 •判断是否走成五子相连 查看源程序
程 序 的 编 制 细 节
定义核心数据结构 初始化 接收按键 移动光标 落子与判定胜负
main()函数 程序中用到的库函数介绍
查看源程序
程 序 的 编 制 细 节
程序中用到的库函数 bioskey textmode clrscr
putch
cputs gotoxy textcolor delay sound 与nosound

户 手

查看源程序
参考书:C高级实用程序设计 王士元
清华大学出版社
getpixel() 坐标移动:moveto() moverel() getx() gety() 画线:line() lineto() linerel() 画矩形和条形图:rectangle() bar() 椭圆、圆、圆弧和扇形:ellipse() circle() arc() pieslice()
程序中,initgraph()调用前要用registerbgidriver() 进行登记: registerbgidriver(EGAVGA_driver);
基本图形函数 画点:putpixel()
清屏和恢复显示方式函数
void cleardevice(void); void closegraph(void); 关闭图形系统回到文本模式
Turbo C支持的适配器和图形模式 图形库文件与图形头文件 适配器 模式 分辨率 颜色数 标识符 graphics.lib 与 graphics.h 0 4 CGAC0 320 200 CGA 图形显示的坐标与象素 1 4 CGAC1 (彩色图形 320 200
适配器) (0,0)
EGA (增强图形 y 适配器) 分辨率:640 480 VGA 0 640 200 (视频图形 1 640 350 阵列) 2 640 480
定义核心数据结构 对整个软件进行功能模块划分
编写程序实现各功能模块 对源程序进行编译和调试,形成软件产品
功 能 分 析
五子棋棋盘 两位玩家交替行棋
五子相连判定赢棋
定义核心数据结构
定义char gChessBoard[19][19];表示棋盘
棋盘上每个交叉点有三种状态 当前光标位置表示
struct point { int x; int y; };
C语言综合编程训练
C程序组成
C程序
源程序1 …… 源程序2 …… 源程序n
预编译命令函数1源自……函数n说明部分
执行部分
开发方法: 自上向下,逐步细化,模块化设计,结构化编码
五子棋游戏程序
一个综合实例的分析
五 子 棋 游 戏 程 序
一个综合实例的分析
一般来说,开发一个软件要经过以下步骤:
确定软件的功能
#include <graphics.h> main() 将指定模式的驱动程序 (*.GBI) { int driver=VGA; 从当前路径下调入内存 int mode=VGAHI; initgraph(&driver,&mode, “”); ………. 关闭图形系统回到文本模式 closegraph(); } initgraph(&driver,&mode, “d:\\tc\\bgi”); #include <graphics.h> main() { int driver=DETECT,mode; initgraph(&driver,&mode, “”); ………. closegraph(); }
相关主题