这一节中,我们来做一款经典小游戏,贪吃蛇。
在开始之前,我们把窗体创建好。
创建一个800 * 600的窗体。这一次我们使用默认的原点和坐标轴:原点在窗体左上角,X轴正方向向右,Y轴正方向向下。背景色设置为RGB(164, 225, 202),最后调用cleardevice函数,使用背景色清空整个窗体。
#include <easyx.h>
#include <stdio.h>
int main()
{
initgraph(800, 600);
// 设置背景色
setbkcolor(RGB(164, 225, 202));
// 使用背景色清空窗体
cleardevice();
getchar();
closegraph();
return 0;
}
1. 定位网格
将整个800 * 600的窗体,水平分隔为20等分,垂直分隔为15等分,作为整个游戏的网格坐标系统。在上图中,蛇用5格白色的矩形表示。食物用黄色的一格矩形表示。
这样,蛇的每一格身体坐标为:
- (5, 7)
- (4, 7)
- (3, 7)
- (2, 7)
- (1, 7)
食物的坐标为:
- (12, 7)
为了方便观察,把窗体用线段画上上述网格。网格每一格的宽度设为40像素,用符号常量NODE_WIDTH
表示。
#define NODE_WIDTH 40
竖向线段
先绘制竖向的线段。
竖向线段中,起始点y
坐标固定为0
,终止点y
坐标固定为600
。
每条线段的起始点与终止点的x
坐标一致,且随着线段不同而变化。
设线段条数从0开始计数。
第0条线段: 起始点、终止点的x
坐标为0
。
第10条线段: 起始点、终止点的x
坐标为10 * NODE_WIDTH
。
第20条线段: 起始点、终止点的x
坐标为20 * NODE_WIDTH
。
观察各线段起始点终止点坐标,可以总结出规律:
第n条线段:起始点(n * NODE_WIDTH, 0)
、终止点(n * NODE_WIDTH, 600)
。且x
坐标的范围为[0, 800]
。
// 竖线
for (int x = 0; x <= 800; x += NODE_WIDTH)
{
line(x, 0, x, 600);
}