用C实现贪吃蛇,看看你的C学得怎样?(一)

写在开始

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()的获取字符函数。

很简单,对吧!

博主在地图的创建上没有花里胡哨,只是一个最简单的边框限制,如果你觉得博主的地图构建太简单,可以用随机函数,在地图框内随机生成障碍物,算是一个可以拓展的点,就留给你们自己去思考啦!

结语

如果说这篇文章有让你学到一定的知识的话,不妨点个赞和关注,让博主能够看到,如果讲解中有什么错误和疏忽,也劳烦在评论中指出或提问,博主会第一时间进行更新和答复,谢谢!

发布了14 篇原创文章 · 获赞 19 · 访问量 4114

猜你喜欢

转载自blog.csdn.net/weixin_44018540/article/details/104098900