第二周总结
一、总结贪吃蛇制作思路
1.绘制API,所以需要引入graphics.h这个图形界面库。
2.游戏规则
- 蛇是一节一节的,每吃掉一个事物都会长一节
- 蛇吃食物需要移动,如果需要移动那么就会有坐标的变化。
- 蛇没吃掉一个事物都会随机产生一个食物,所以食物也是由坐标表示。
- 如果在蛇移动吃食物的时候与便捷或者自己的身体发生碰撞,则gameover。
- 进行操作则需要通过键盘来操作来改变蛇的方向。
二、介绍graphics.h图形库
1.基本说明
- 坐标:定为以左上角开始,水平向右为X轴,竖直向下为Y轴,建立坐标系
- getch() :图形关闭之前通常要键盘获得一个字符,否则图形一闪就没了。
- closegraph() :关闭图形窗口函数。
- cleardevice() :清空屏幕,之后会界面内容全部清空,显示为默认背景颜色。
2.颜色模型
首先:此图形库中采用的是RGB颜色。*RGB色彩模式 是工业界的一种颜色标准,是通过对红 ®、绿 (G)、蓝 (B)三个颜色 通道 的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,*是运用最广的 颜色系统之一。
- 设置颜色模型(常用)
stebkcolor()
:设置背景颜色,参数颜色
setfillcolor
:设置填充绘制图形形式所用的颜色 - 设置风格样式的模型
setfillstyle():设置填充样式,比如竖线,横线,方格填充。
setlinestyle():设置线的填充样式
setbkmode():图案,或文字填充的背景模式(背景色,透明)。 - 图形的绘制
ine(x1,y1,x2,y2):直线。两端点坐标
rectangle(x1,y1,x2,y2):空心矩形。左上角坐标,右下角坐标 。
circle(x,y,r):空心圆。圆心坐标,半径。
ellipse(x1,y1,x2,y2):椭圆。外切矩形左上角坐标,外切矩形右下角坐标
如果想要将绘制的图形填充可以用前缀fill
,如果想要清除一个图形区域可以用前缀clear
- 文字输出
outtextxy(x,y,color)
在(x,y)位置输出字符串str。(个人觉得够用了) - 图像处理
IMAGE img;
loadimage(&img,path[, width , height]):图像读取。 IMAGE对象地址,路径。扩展参数,已制定宽高,拉伸读取。
putimage(x0,y0,&img):图像展示。图形窗口左上角坐标处开始展示img图形。
putimage(x0,y0,w,h,&img,x,y):图像展示。和上面相比,w,h为要展示多少像素图形,x,y为img对象从该位置开始展示。 - 鼠标处理
首先,鼠标对象MOUSEMSG是一个结构体。内部有参数,x,y表示坐标,uMsg。
uMsg的类型:
- WM_ L \color{#0000FF}{L} L B O T T O N \color{#FF3030}{BOTTON} BOTTON D O W N \color{#00FF00}{DOWN} DOWN
前面的WM_是一个固定形式,后面三部分是可变的。左边蓝色的值分别为L,M,R分别代表鼠标左键,中键,右键。右边绿色的值分别为DOWN,UP,DBLCLK代表按下,松起,双击信息。
三、此项目关于graphics.h图形库的接口
- 绘制一个窗口的API
void initgraph(int weith,int height)//创建一个宽为X长为Y的图形窗
- 清楚窗口的所有绘制
void cleardevice ()//清空整个窗口的绘制
- 在指定位置输出文字
void settextxy (int x,int y,LPCTSTR str)//坐标为(x,y)处输出字符
- 绘制图形
fillrectangle(int left, int top, int right, int bottom) //画填充矩形,从起点(left,top)到终点
(right,bottom)
- 绘制圆角矩形
fillroundrect(int left, int top, int right, int bottom, int ellipsewidth, int ellipseheight)
//画填充矩形,从起点(left,top) 到终点(right,bottom)
//ellipsewidth构成圆角矩形的圆角的椭圆的宽度。ellipseheight构成圆角矩形的圆角的椭圆的高度。
//若后两个相当相当于绘制一个圆形 不过不是以圆心的 是按照矩形的。
- 设置当前文字填充色
settextcolor(COLOR color) //设置当前文字也就是下一行文字的颜色 宏定义RED,BLUE,YELLOW等
四、如何创建蛇和食物
蛇和食物都有一个共同的特点,就是都有坐标
//创建坐标
struct Coor{int x;int y;
};
创建蛇和食物的具体结构
//蛇
struct Snake{//蛇的结构int n;//蛇当前的长度Coor szb[SNAKELENGTH]//蛇的坐标Ch ch;//蛇移动的方向
}snake;//食物
struct Food
{Coor fzb;//食物的坐标int flag;//标记食物是否被吃掉
}
移动的方向
enum Ch
{up = 72;down = 80;left = 75;right = 77;
};