array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 C语言-贪吃蛇 - 爱码网

本人学生党一个,也是一个热爱编程的小码农(嘻嘻!),经过3天的打造写好了自己的一个贪吃蛇小游戏(C语言版),之前也写过Javascript版的,如果你要是一个爱好编程的小伙伴,就一起学习吧!(祝大家愚人节快乐!)
C语言-贪吃蛇

/*数据设计*/
#include <stdio.h>
#include <string.h>
#include <windows.h>//光标设置的API
#include <time.h>//食物随机
#include <conio.h>//按钮监控

#define MAXHEIGHT 25//窗口最大宽
#define MAXWIDTH  60//窗口最大高
#define SNAKESIZE 50//蛇的最大节数
//蛇结构
struct{
	int x;
	int y;
}food;
//蛇的结构
struct{
	//记录每一节蛇的坐标
	int x[SNAKESIZE];
	int y[SNAKESIZE];
	int len;//蛇的长度
	int sleep;//蛇的移动速度
}snake;
//全局变量
int i,k,foods=0,totals=0;
int key = 'A';//初始化蛇的移动方向
int changeFlag = 0;//蛇的变化标记
/*模块设计(功能设计)*/
//开始欢迎界面
void welcom();
//计分函数
void total();
//1.地图生成
void drawMap();
//2.蛇的产生
void createFood();
//3.按键操作
void keyDown();
//4.蛇的状态(判断游戏是否结束)
int snakeStatus();
//5.辅助函数(光标的移动)
void gotoxy(int x,int y);

//主函数
void main(){
	system("mode con cols=100 lines=28");
	welcom();
	system("cls");
	drawMap();
	total();
	while(1){
		createFood();
		Sleep(snake.sleep);
		keyDown();
		if(!snakeStatus()){
			break;
		}
	}
	gotoxy(MAXWIDTH/2-2,MAXHEIGHT/2);
	printf("游戏结束\n");
	gotoxy(MAXWIDTH/2-6,MAXHEIGHT/2+1);
	system("pause");
}
//欢迎界面
void welcom(){
	gotoxy(MAXWIDTH/2+5,MAXHEIGHT/2-4);
	printf("************************");
	gotoxy(MAXWIDTH/2+5,MAXHEIGHT/2-2);
	printf("\t   美是初见");
	gotoxy(MAXWIDTH/2,MAXHEIGHT/2);
	printf("       支持正版,拒绝盗版!\n");
	gotoxy(MAXWIDTH/2,MAXHEIGHT/2+1);
	printf("       适当游戏,健康你我!\n");
	gotoxy(MAXWIDTH/2+5,MAXHEIGHT/2+2);
	printf("\t 微信Gen1273145688");
	gotoxy(MAXWIDTH/2+5,MAXHEIGHT/2+4);
	printf("         开始");
	gotoxy(MAXWIDTH/2+5,MAXHEIGHT/2+6);
	printf("************************");
	gotoxy(MAXWIDTH/2+5,MAXHEIGHT/2+3);
	printf("    ");
	system("pause");
}
//1.地图生成
void drawMap(){
	//蛇身:■ 食物:★
	srand((unsigned int)time(NULL));//随机函数
	//1.画地
	//左右地图边框
	for(i=0;i<=MAXHEIGHT;i++){
		gotoxy(0,i);
		printf("■");
		gotoxy(MAXWIDTH,i);
		printf("■");
	}
	//上下地图边框
	//■占用2个字符
	for(i=0;i<=MAXWIDTH;i+=2){
		gotoxy(i,0);
		printf("■");
		gotoxy(i,MAXHEIGHT);
		printf("■");
	}
	//2.画蛇
	snake.len = 3;//蛇的初始长度
	snake.sleep = 250;//蛇的移动速度
	//确定蛇的头部(在控制台中间)
	snake.x[0] = MAXWIDTH/2;
	snake.y[0] = MAXHEIGHT/2;
	//画蛇头
	gotoxy(snake.x[0],snake.y[0]);
	printf("■");
	//画蛇身
	for(k=1;k<snake.len;k++){
		snake.x[k] = snake.x[k-1]+2;
		snake.y[k] = snake.y[k-1];
		gotoxy(snake.x[k],snake.y[k]);
		printf("■");//一节是x=2
	}
	//3.画食
	food.x = rand()%(MAXWIDTH-4)+2;//窗口的左右边框占2像素
	food.y = rand()%(MAXHEIGHT-2)+1;//窗口的上下边框占1像素
	gotoxy(food.x,food.y);
	printf("★");
}
//2.蛇的产生
void createFood(){
	//蛇吧食物吃了
	if(snake.x[0]==food.x&&snake.y[0]==food.y){
		srand((unsigned int)time(NULL));
		total();//计分
		//产生的食物不能在蛇的身上,并且坐标是偶数(蛇身占两个字节)
		while(1){
			int flag = 1;
			food.x = rand()%(MAXWIDTH-4)+2;
			food.y  =rand()%(MAXHEIGHT-2)+1;
			//产生的食物不能在蛇的身上
			for(k=0;k<snake.len;k++){
				if(snake.x[k]==food.x&&snake.y[k]==food.y){
					flag = 0;
					break;
				}
			}
			if(flag&&food.x%2==0){
				break;
			}
		}
	gotoxy(food.x,food.y);
	printf("★");
	snake.len++;
	changeFlag = 1;//蛇的标记1
	}
}
//计分函数
void total(){
	gotoxy(MAXWIDTH/2+36,MAXHEIGHT/2-7);
	printf("美是初见");
	gotoxy(MAXWIDTH/2+36,MAXHEIGHT/2-6);
	printf(" ");
	gotoxy(MAXWIDTH/2+36,MAXHEIGHT/2-5);
	printf("*********************");
	gotoxy(MAXWIDTH/2+36,MAXHEIGHT/2-4);
	printf("吃食物个数:%d个",foods++);
	gotoxy(MAXWIDTH/2+36,MAXHEIGHT/2-3);
	printf("总得分数为:%d分",totals+=10);
	gotoxy(MAXWIDTH/2+36,MAXHEIGHT/2-2);
	printf("*********************");
	gotoxy(MAXWIDTH/2+36,MAXHEIGHT/2-1);
	printf("如果你要是编程爱好者!");
	gotoxy(MAXWIDTH/2+36,MAXHEIGHT/2);
	printf("那就加入我们吧!");
	gotoxy(MAXWIDTH/2+36,MAXHEIGHT/2+1);
	printf("我们的承诺是:永久免费!");
	gotoxy(MAXWIDTH/2+36,MAXHEIGHT/2+2);
	printf("认证微信Gen1273145688");
	gotoxy(MAXWIDTH/2+36,MAXHEIGHT/2+3);
	printf("*********************");
}
//3.按键操作
void keyDown(){
	//无按键的处理
	if(_kbhit()){
		fflush(stdin);//清除缓冲区
		key = _getch();//接收键盘按键
	}
	//擦除蛇的最后一节
	if(!changeFlag){
		gotoxy(snake.x[snake.len-1],snake.y[snake.len-1]);
		printf("  ");//两个空格
	}
	//后面的蛇身变化
	for(i=snake.len-1;i>0;i--){
		snake.x[i] = snake.x[i-1];
		snake.y[i] = snake.y[i-1];
	}
	//移动方向的处理
	switch(key){
	case 'w':
	case 'W':
		snake.y[0]--;
		break;
	case 's':
	case 'S':
		snake.y[0]++;
		break;
	case 'a':
	case 'A':
		snake.x[0] -=2;
		break;
	case 'd':
	case 'D':
		snake.x[0] +=2;
		break;
	}
	gotoxy(snake.x[0],snake.y[0]);
	printf("■");
	changeFlag = 0;
	gotoxy(MAXHEIGHT+2,0);
}
//4.蛇的状态(判断游戏是否结束)
int snakeStatus(){
	if(snake.x[0]==0||snake.x[0]==MAXHEIGHT-2||snake.y[0]==0||snake.y[0]==MAXWIDTH-2){
		return 0;
	}
	for(k=1;k<snake.len;k++){
		if(snake.x[0]==snake.x[k]&&snake.y[k]==snake.y[0]){
			return 0;
		}
	}
	return 1;
}
//5.辅助函数(光标的移动)
void gotoxy(int x,int y){
	//调用win32 API 设置控制台的光标位置
	HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
	//光标的结构体
	COORD coord={x,y};
	//设置坐标
	//coord.x = x;
	//coord.y = y;
	//同步到控制台Set Console Cursor Position
	SetConsoleCursorPosition(handle,coord);
}

==觉得好就收藏吧,记得双击,谢谢!==
												__2019/04/01 美是初见__

相关文章: