16.贪吃蛇小游戏

  • 学习人数 15K+
  • 适合有C语言基础人群学习
avatar
林耿亮

你好编程主讲老师

贪吃蛇

这一节中,我们来做一款经典小游戏,贪吃蛇。

在开始之前,我们把窗体创建好。

创建一个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);
}