写在开始
C语言应该是一个程序员入门的语言,通过C入门比较锻炼初学者对于问题的思考能力,更好地打下编程的基础。
有些学习过C的小伙伴想要一个项目来看看自己的C学的怎么样?没问题,贪吃蛇这个小项目比较大众化,难度适中,同时牵涉到的知识点比较多,作为检验的标准再好不过啦!
没有学完C的小伙伴也不要紧,博主会有源码,并且注释比较详细,你可以码一遍,并且事后思考下其中的原理,对你之后的学习也会大有裨益的!毕竟,编程思想才是精华,语言和代码只是实现的工具而已。
好的,废话不多说,开工!
任务清单
看过博主之前的项目讲解的小伙伴一定会知道,博主做一个完整的项目之前,一定会先把一个项目分解成多个任务点,并列成一个清单,方便自己一步步地去开发,这样也清楚自己的进度。
本次项目的任务清单暂定如下:
1.创建地图和起始界面
2创建蛇,食物、超级食物投放
3.通过键盘控制蛇的移动
4.基本功能(蛇吃食物,蛇的增长等)
5.判断游戏是否结束
6.计算游戏时长
7.加入最高纪录功能
8.游戏等级进度
9.游戏重新开始
如果有啥新的功能想实现就再加呗,随时修改,一步一步来!
代码实现
//定义头文件
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
//宏定义声明
#define X 23 //定义地图大小
#define Y 50
char map[X][Y]; //地图数组
//定义主函数
int main()
{
menu(); //生成界面
system("cls"); //清除屏幕内容
draw_map(); //画地图
}
//定义函数
void draw_map() //创建地图
{
gotoxy(0, 0);
int i, j;
for (i = 0; i<X; i++) //两重for循环遍历数组
{
for (j = 0; j<Y; j++)
{
if (map[i][j] == 0) //为0输出空格
printf(" ");
else if(map[i][j]==1) //为1输出#
printf("#");
}
printf("\n"); //别忘了换行
}
}
void menu() //初始菜单界面
{
printf("\n\n\n\n\n\n\t\t\t********************贪吃蛇(实验版)******************\t\t\t\n\n");
printf("\t\t\t********************欢迎参与游戏测试******************\t\t\t\n\n");
printf("\t\t\t********************按任意键开始游戏******************\t\t\t\n\n");
printf("\t\t\t\t\t 职业工具人\n\n");
printf("\t\t\t\t请先确保处于英语输入法,否则无法进行游戏");
_getch(); //保持界面获取字符
}
总结
我们完成了贪吃蛇的地图和开始界面的搭建,用了一个双重循环赋予特定位置特殊值标记,再根据标记值用对应的特殊符号打印。初始菜单涉及了输出语句和简单的转义符排版以及_getch()的获取字符函数。
很简单,对吧!
博主在地图的创建上没有花里胡哨,只是一个最简单的边框限制,如果你觉得博主的地图构建太简单,可以用随机函数,在地图框内随机生成障碍物,算是一个可以拓展的点,就留给你们自己去思考啦!
结语
如果说这篇文章有让你学到一定的知识的话,不妨点个赞和关注,让博主能够看到,如果讲解中有什么错误和疏忽,也劳烦在评论中指出或提问,博主会第一时间进行更新和答复,谢谢!