前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【C语言BOOS篇】贪吃蛇 一场代码与逻辑的较量(含游戏代码)

【C语言BOOS篇】贪吃蛇 一场代码与逻辑的较量(含游戏代码)

作者头像
f狐o狸x
发布于 2024-11-19 09:31:54
发布于 2024-11-19 09:31:54
19800
代码可运行
举报
运行总次数:0
代码可运行
贪吃蛇基本上是我们家喻户晓的小游戏了,在狐狸还在是小学幼儿园时期的时候就经常玩,后来到了初中随着互联网的发展,《贪吃蛇大作战》这个游戏又在众多网游中脱颖而出,因此身为大学生的狐狸,我决定用C语言来实现这个经典的小游戏——贪吃蛇

一、 游戏效果展示

废话不多说,直接看结果

二、 游戏逻辑实现分析

2.1 游戏主体逻辑

2.2 游戏实现分析

不难看出游戏主逻辑就三个函数,GameStart 、GameRun 、GameEnd。他们分别负责了游戏前的准备工作、游戏运行时贪吃蛇的移动和判断是否结束游戏、游戏结束时的善后工作,那我们话不多说,直接开始

三、贪吃蛇游戏设计

3.1 前期准备工作

如果我们想把贪吃蛇小游戏弄得好看一些就需要一些调节颜色的函数,并且打印蛇身、墙体都用到了特殊的字符,因此需要先把修改适配器到中文状态,后面我们生成食物的时候需要的坐标也是随机的,因此还要准备生成随机数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int main()
{
	//修改适配器到中文状态
	setlocale(LC_ALL, "");
	//设置随机数
	srand((unsigned)time(NULL));
	test();
	return 0;
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void color(int c)
{
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), c); //颜色设置
}

这里是颜色的十进制对照表:

这样我们后面只需要在打印前设置好想要的颜色就行了,想了解的朋友可以去:SetConsoleTextAttribute_360百科

我们还需要获取案件情况来判断当前蛇运行的状态

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//监测按键
#define KEY_PRESS(VK)  ( (GetAsyncKeyState(VK) & 0x1) ? 1 : 0 )

封装一个设置光标位置的函数方便操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void SetPos(int x, int y)
{
	//获得设备句柄
	HANDLE hanlde = GetStdHandle(STD_OUTPUT_HANDLE);
	//根据句柄设置光标的位置
	COORD pos = { x, y };
	SetConsoleCursorPosition(hanlde, pos);
}

准备工作完了之后我们就可以开始设计下面的函数了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//颜色设置
void color(int c);

//打印分数
void PrintScore(pSnake ps);

//游戏开始前的初始化
void GameStart(pSnake ps);

//设置光标位置信息
void SetPos(int x, int y);

//打印欢迎信息
void WelcomeToGame();

//绘制地图
void CreateMap();

//初始化蛇
void InitSnake(pSnake ps);

//创建食物
void CreateFoods(pSnake ps);

//游戏运行函数
void GameRun(pSnake ps);

//打印帮助信息
void PrintHelpInfo();

//蛇移动的函数,一次移动一步
void SnakeMove(pSnake ps);

//判断下一步是否有食物
int NextIsFood(pSnake ps, pSnakeNode pnext);

//吃食物
void EatFood(pSnake ps, pSnakeNode pnext);

//没吃到食物正常走一步
void NotEatFood(pSnake ps, pSnakeNode pnext);

//检测是否撞墙
void KillByWall(pSnake ps);

//检测是否撞到自己
void KillBySelf(pSnake ps);

//善后工作
void  GameEnd(pSnake ps);

//保存分数
void SaveScore(pSnake ps);

3.2 数据结构设计

这里我用的是一个链表来管理的蛇身,因为在游戏过程中,贪吃蛇每吃一个食物都会增长一个蛇身节点,正好用链表节点来控制蛇的长度

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//蛇身结构体的定义
typedef struct SnakeNode
{
	int x;
	int y;
	struct SnakeNode* next;
}SnakeNode,* pSnakeNode;

另外我们需要用一个结构体来管理贪吃蛇游戏的信息,包括蛇身、食物、总分、当前分数、当前一个食物的分数、蛇的速度、当前游戏状态和当前蛇运动状态(上、下、左、右)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//贪吃蛇结构体定义
typedef struct Snake
{
	pSnakeNode pSnake; //维护蛇的指针,指向蛇头
	pSnakeNode pFood; //指向食物的指针
	int Score;//总分
	int ScoreMax[4];//最高分
	int ScoreSize;//最高分有效个数
	int FoodWeight;//每个食物的分数
	int SleepTime;//蛇的速度
	enum GAME_STATUS status;//游戏当前状态
	enum SNAKE_STATUS dir;//蛇当前走的方向
}Snake,* pSnake;

这里蛇的运动状态和游戏当前状态都可以一一列举出来,所以他俩可以使用枚举

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//游戏状态枚举
enum GAME_STATUS
{
	OK = 1, //游戏正常运行状态
	ESC, //按esc键盘退出游戏,正常退出
	KILL_BY_WALL,//撞墙退出游戏
	KILL_BY_SELF,//咬到自己退出游戏
};

//蛇当前走的方向枚举
enum SNAKE_STATUS
{
	UP=1,//向上
	DOWN,//向下
	LEFT,//向左
	RIGHT//向右
};

3.3 地图、蛇身、食物设计

用“ ■ ”表示地图边界、“ ★ ”表示一个食物节点、“ ● ”表示蛇头、“ ○ ”表示蛇身

3.4 游戏主逻辑

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void test()
{
	//设置控制台信息,窗口大小,窗口名
	system("mode con cols=100 lines=30");
	system("title:贪吃蛇");
	//隐藏光标
	HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
	CONSOLE_CURSOR_INFO CursorInfo;
	GetConsoleCursorInfo(handle, &CursorInfo);//获取控制台光标信息
	CursorInfo.bVisible = false;
	SetConsoleCursorInfo(handle, &CursorInfo);

	Snake snake = { 0 };
	int input = 0;
	do 
	{

		system("cls");
		menu();
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game(&snake);
			SetPos(15, 13);
			printf("再来亿吧~");
			SetPos(15, 14);
			system("pause");
			break;
		case 2:
			PrintScore(&snake);
			break;
		case 0:
			system("cls");
			color(15);//字体颜色 白 
			SetPos(40, 13);
			printf("古德拜拜~~");
			SetPos(0, 27);
			break;
		default:
			SetPos(40, 18);
			printf("输入错误请重新输入");
		}
	} while (input);

}

void game(pSnake ps)
{
	GameStart(ps);//游戏开始前的初始化
	GameRun(ps);//游戏运行
	GameEnd(ps);//游戏结束后的善后工作
}

3.5 菜单

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void menu()
{
	color(6);//墙体颜色 棕 
	SetPos(36, 11);
	int i = 0;
	//上边框
	for (i = 0; i < 28; i += 2)
	{
		wprintf(L"%lc", WALL);
	}
	//下边框
	SetPos(36, 19);
	for (i = 0; i < 28; i += 2)
	{
		wprintf(L"%lc", WALL);
	}
	//左边框
	for (i = 1; i < 8; i++)
	{
		SetPos(36, i + 11);
		wprintf(L"%lc", WALL);
	}
	//右边框
	for (i = 1; i < 8; i++)
	{
		SetPos(62, i + 11);
		wprintf(L"%lc", WALL);
	}
	SetPos(40, 13);
	color(15);//字体颜色 白 
	printf("欢迎来到贪吃蛇小游戏");
	SetPos(40, 14);
	printf("1. 开始游戏");
	SetPos(40, 15);
	printf("2. 查看最高分");
	SetPos(40, 16);
	printf("0. 退出游戏");
	SetPos(40, 17);
	printf("请选择:");


}

3.6 游戏开始

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void GameStart(pSnake ps)
{

	//打印欢迎信息
	WelcomeToGame();

	//绘制地图
	CreateMap();

	//初始化蛇
	InitSnake(ps);

	//创建食物
	CreateFoods(ps);

}
3.6.1 打印欢迎信息

打印一些初始信息方便玩家参考

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void WelcomeToGame()
{
	system("cls");
	SetPos(40, 13);
	printf("欢迎来到贪吃蛇小游戏");
	SetPos(44, 26);
	system("pause");
	system("cls");
	SetPos(20, 13);
	printf("用 ↑ . ↓ . ← . → 来控制蛇的移动,F3是加速,F4是减速");
	SetPos(20, 14);
	printf("加速能得到更高的分数");
	SetPos(44, 26);
	system("pause");
	system("cls");
}
3.6.2 绘制地图
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void CreateMap()
{
	int i = 0;
	//控制台主机 
	//上边框
	color(6);//墙体颜色 棕 
	SetPos(0, 0);
	for (i = 0; i < 58; i+=2)
	{
		wprintf(L"%lc", WALL);
	}
	//下边框
	SetPos(0, 26);
	for (i = 0; i < 58; i += 2)
	{
		wprintf(L"%lc", WALL);
	}
	//左边框
	for (i = 1; i < 26; i++)
	{
		SetPos(0, i);
		wprintf(L"%lc", WALL);
	}
	//右边框
	for (i = 1; i < 26; i++)
	{
		SetPos(56, i);
		wprintf(L"%lc", WALL);
	}  
}
3.6.3 初始化蛇
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//初始化蛇
void InitSnake(pSnake ps)
{
	//创建5个蛇身节点
	pSnakeNode cur = NULL;
	int i = 0;
	for (i = 0; i < 5; i++)
	{
		cur = (pSnakeNode)malloc(sizeof(SnakeNode));
		if (cur == NULL)
		{
			perror("InitSnake::malloc");
			return;
		}
		cur->x = POS_X + i * 2;
		cur->y = POS_Y ;
		cur->next = NULL;
		if (ps->pSnake == NULL)
		{
			ps->pSnake = cur;
		}
		else
		{
			cur->next = ps->pSnake;
			ps->pSnake = cur;
		}
	}
	//打印蛇
	cur = ps->pSnake;
	//打印蛇头
	color(10);//蛇的颜色 绿

	SetPos(cur->x, cur->y);
	wprintf(L"%lc", HEAD);
	cur = cur->next;
	//打印蛇身
	while (cur)
	{
		SetPos(cur->x, cur->y);
		wprintf(L"%lc", BODY);
		cur = cur->next;
	}

	//贪吃蛇其他信息初始化
	ps->dir = RIGHT;
	ps->FoodWeight = 10;
	ps->pFood = NULL;
	ps->Score = 0;
	ps->SleepTime = 200;
	ps->status = OK;

}
3.6.4创建食物

食物其实也可以算为是一个蛇的节点

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//创建食物
void CreateFoods(pSnake ps)
{
	//随机生成食物坐标
	int x = 0;
	int y = 0;

again:
	do
	{
		x = rand() % 53 + 2;
		y = rand() % 24 + 1;
	} while (x % 2 != 0);

	//防止食物创建到蛇身体上
	pSnakeNode cur = ps->pSnake;
	while (cur)
	{
		if (cur->x == x && cur->y == y)
		{
			goto again;
		}
		cur = cur->next;
	}

	//创建食物
	pSnakeNode pFood = (pSnakeNode)malloc(sizeof(SnakeNode));
	if (pFood == NULL)
	{
		perror("CreateFoods::malloc");
		return;
	}

	pFood->x = x;
	pFood->y = y;

	ps->pFood = pFood;
	//打印食物
	SetPos(x, y);
	color(12);//食物颜色 红
	wprintf(L"%lc", FOOD);

}

3.7 游戏运行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//游戏运行
void GameRun(pSnake ps)
{
	//打印帮助信息
	PrintHelpInfo();
	do
	{
		//打印当前分数情况
		color(15);//字体的颜色 白
		SetPos(62, 15);
		printf("当前食物分值:%d", ps->FoodWeight);
		SetPos(62, 16);
		printf("总分:%d", ps->Score);
		SetPos(62, 17);
		printf("最高分:%d", ps->ScoreMax[0]);


		//检测按键
		//上,下,左,右,ESC,空格,F3,F4
		if (KEY_PRESS(VK_UP) && ps->dir != DOWN)
		{
			ps->dir = UP;
		}
		else if (KEY_PRESS(VK_DOWN) && ps->dir != UP)
		{
			ps->dir = DOWN;
		}
		else if (KEY_PRESS(VK_LEFT) && ps->dir != RIGHT)
		{
			ps->dir = LEFT;
		}
		else if (KEY_PRESS(VK_RIGHT) && ps->dir != LEFT)
		{
			ps->dir = RIGHT;
		}
		else if (KEY_PRESS(VK_ESCAPE))
		{
			ps->status = ESC;
			break;
		}
		else if (KEY_PRESS(VK_SPACE))
		{
			//游戏暂停键
			pause();//空格暂停和恢复暂停
		}
		else if (KEY_PRESS(VK_F3))
		{
			if (ps->SleepTime >= 80)
			{
				ps->SleepTime -= 30;
				ps->FoodWeight += 2;
			}
		}
		else if (KEY_PRESS(VK_F4))
		{
			if (ps->FoodWeight > 2)
			{
				ps->SleepTime += 30;
				ps->FoodWeight -= 2;
			}
		}

		//走一步
		SnakeMove(ps);

		//睡眠一下
		Sleep(ps->SleepTime);

	} while (ps->status == OK);


}
3.7.1 打印帮助信息
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//打印帮助信息
void PrintHelpInfo()
{
	color(15);//字体的颜色 白
	SetPos(62, 12);
	printf("1. 不能穿墙,不能咬到自己");
	SetPos(62, 13);
	printf("2. 用 ↑.↓.←.→ 来控制蛇的移动");
	SetPos(62, 14);
	printf("3. F3是加速,F4是减速");
	SetPos(62, 24);
	printf("制作:狐狸");
	SetPos(62, 25);
	printf("祝大家都好运连连~");

}
3.7.2 蛇身移动
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void SnakeMove(pSnake ps)
{
	//确定下一步的位置
	pSnakeNode pnext = (pSnakeNode)malloc(sizeof(SnakeNode));
	if (pnext == NULL)
	{
		perror("SnakeMove::malloc");
		return;
	}
	pnext->next = NULL;

	switch (ps->dir)
	{
	case UP:
		pnext->x = ps->pSnake->x;
		pnext->y = ps->pSnake->y - 1;
		break;
	case DOWN:
		pnext->x = ps->pSnake->x;
		pnext->y = ps->pSnake->y + 1;
		break;
	case LEFT:
		pnext->x = ps->pSnake->x - 2;
		pnext->y = ps->pSnake->y;
		break;
	case RIGHT:
		pnext->x = ps->pSnake->x + 2;
		pnext->y = ps->pSnake->y;
		break;
	}

	//判断下一步是否有食物
	int ret = NextIsFood(ps, pnext);

	if (NextIsFood(ps, pnext))
	{
		EatFood(ps, pnext);
	}
	else
	{
		//正常走一步
		NotEatFood(ps, pnext);
	}

	//检测是否撞墙
	KillByWall(ps);

	//检测是否咬到自己
	KillBySelf(ps);
}
3.7.2.1 判断下一步是否有食物
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//判断是否有食物
int NextIsFood(pSnake ps, pSnakeNode pnext)
{
	if (ps->pFood->x == pnext->x && ps->pFood->y == pnext->y)
	{
		return 1;
	}
	else
	{
		return 0;
	}
}
3.7.2.2 吃到食物
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//吃到食物
void EatFood(pSnake ps, pSnakeNode pnext)
{
	//头插
	pnext->next = ps->pSnake;
	ps->pSnake = pnext;

	//打印蛇
	pSnakeNode cur = ps->pSnake;
	//打印蛇头
	color(10);//蛇的颜色 绿
	SetPos(cur->x, cur->y);
	wprintf(L"%lc", HEAD);
	cur = cur->next;
	//打印蛇身
	while (cur)
	{
		SetPos(cur->x, cur->y);
		wprintf(L"%lc", BODY);
		cur = cur->next;
	}

	//计分
	ps->Score += ps->FoodWeight;

	//释放旧食物
	free(ps->pFood);
	
	//创建新的食物
	CreateFoods(ps);
}
3.7.2.3 正常走下一步(没吃到食物)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void NotEatFood(pSnake ps, pSnakeNode pnext)
{
	//头插
	pnext->next = ps->pSnake;
	ps->pSnake = pnext;
	//删除尾巴
	pSnakeNode cur = pnext;
	//打印蛇头
	color(10);//蛇的颜色 绿
	SetPos(cur->x, cur->y);
	wprintf(L"%lc", HEAD);
	cur = cur->next;
	//打印蛇身
	//打印+找尾
	while (cur->next->next)
	{
		SetPos(cur->x, cur->y);
		wprintf(L"%lc", BODY);
		cur = cur->next;
	}
	//将尾节点的位置打印成空白字符
	SetPos(cur->next->x, cur->next->y);
	printf("  ");

	free(cur->next);
	cur->next = NULL;

}
3.7.2.4 检测是否撞墙
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//检测是否撞墙
void KillByWall(pSnake ps)
{
	if (ps->pSnake->x == 0 ||
		ps->pSnake->x == 56 ||
		ps->pSnake->y == 0 ||
		ps->pSnake->y == 26)
	{
		ps->status = KILL_BY_WALL;
	}
}
3.7.2.5 检测是否咬到自己
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//检测是否撞到自己
void KillBySelf(pSnake ps)
{
	pSnakeNode cur = ps->pSnake->next;//从第二个节点开始
	while (cur)
	{
		if (cur->x == ps->pSnake->x && cur->y == ps->pSnake->y)
		{
			ps->status = KILL_BY_SELF;
			return;
		}
		cur = cur->next;
	}
}

3.8 游戏结束

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void  GameEnd(pSnake ps)
{
	SetPos(15, 12);
	color(15);//字体颜色 白
	switch (ps->status)
	{
	case ESC:
		printf("ESC主动退出游戏,正常退出\n");
		break;
	case KILL_BY_WALL:
		printf("这你都能撞墙??菜啊\n");
		break;
	case KILL_BY_SELF:
		printf("你是真饿了!\n");
		break;
	}

	//保存分数
	SaveScore(ps);


	//释放贪吃蛇的链表资源
	pSnakeNode cur = ps->pSnake;
	pSnakeNode del = NULL;

	while (cur)
	{
		del = cur;
		cur = cur->next;
		free(del);
	}
	free(ps->pFood);
	ps->pSnake = NULL;
	ps = NULL;

}
3.8.1 保存分数
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void SaveScore(pSnake ps)
{

	//写入数据
	int i = 0;
	if (ps->ScoreSize < 3)
	{
		ps->ScoreMax[ps->ScoreSize] = ps->Score;
		ps->ScoreSize++;
	}
	else
	{
		for (i = 0; i < 3; i++)
		{
			if (ps->Score > ps->ScoreMax[i])
			{
				int j = i;
				for (j = i; j < 3; j++)
				{
					ps->ScoreMax[j + 1] = ps->ScoreMax[j];
				}
				ps->ScoreMax[i] = ps->Score;
				break;
			}
		}

	}
	 i = 0;
	for (i = 0; i < 2; i++)
	{
		int j = 0;
		for (j = 0; j < 2 - i; j++)
		{
			if (ps->ScoreMax[j] < ps->ScoreMax[j + 1])
			{
				int tmp = ps->ScoreMax[j];
				ps->ScoreMax[j] = ps->ScoreMax[j + 1];
				ps->ScoreMax[j + 1] = tmp;
			}
		}
	}
}

四、结语

不知不觉间,我已经学习三个月的编程了,感谢各位在我学习时的支持与陪伴,希望未来我们能一直坚持学习下去

“ 请不要相信胜利就像山坡上的蒲公英一样唾手可得,但是请相信生活中总有美好值得我们全力以赴,哪怕粉身碎骨!”———2022卡塔尔世界杯解说贺炜

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
购买云服务器后如何做?如何才能够更好的使用它?
云服务器的出现可以帮助人们进行彼此沟通,同时也可以为人们的事业发展保驾护航,只是作为新手,虽然已经购买了云服务器,但是关于购买云服务器后如何做这个问题却仍旧一头雾水,不知道应当如何使用它。
用户8715145
2021/09/10
2.2K0
手把手教你配置 腾讯云Linux云服务器
一、要购买使用云服务器,需要先注册腾讯云账号,并完成实名认证哦。根据《互联网信息服务管理办法》用户在云服务商注册域名需要实名,购买使用云服务器需要进行备案。这里不多讲述,
用户2416682
2019/10/10
4.6K0
手把手教你配置 腾讯云Linux云服务器
有域名了怎么做网站?网站作用有哪些?
网站技术经过几十年的发展,从电脑端到现在手机端,人们访问网站变得前所未有的简单快捷,这让企业意识到网站的巨大价值,开始打造一个企业专属的门户网站,但是,很多企业把网站等同于域名,以为有了网站就不需要域名,不知道这两者的区别。那么问题来了,有域名了怎么做网站?网站作用有哪些?别走开,下文为您揭晓答案。
用户8739990
2021/08/06
6.2K0
有域名了怎么做网站?网站作用有哪些?
怎么使用腾讯云服务器搭建个人网站?
【新用户限量秒杀】云服务器限时秒杀,首购1核1G 99元/年 https://cloud.tencent.com/act 从刚开始的简单学习HTML语言,到进入实验室跟着老师,学长学习Java,An
云优惠
2019/09/11
33.8K0
怎么使用腾讯云服务器搭建个人网站?
云服务器怎么还原?步骤很简单
云服务器的处理能力是比较强的,而且它的管理方式要比物理服务器更加高效,它自身是具有很多优势的,所以很多朋友都比较喜欢使用云服务器,现在云服务器已经在很大程度上取代服务器了。不过,我们在使用云服务器的时候,也是需要提前解析域名的。那么,云服务器怎么解析域名呢?
用户8715145
2021/09/03
1.7K0
云服务器哪家好?国内品牌云服务器综合评价
云服务器哪家好?如今云服务在国内的应用越来越广泛,不仅仅是企业和站长,很多办公软件和应用平台也在使用云。而主机市场上目前的云服务商众多,以至于用户在选择的时候不知道云服务器哪家好?怎样去选择一款便宜好
尊托云数
2019/01/09
29.9K0
云游戏服务器需要多少显卡 选购服务器需要注意什么
现在很多小伙伴为了解压,都会选择玩游戏来释放压力。对于游戏公司而言,一个好的云游戏服务器是尤其重要的。要根据不同类型的游戏配置出不同的服务器,配置越高的服务器就越能给用户带来更好的体验。那么云游戏服务器需要多少显卡?下面就给大家简单说一说。
用户8715145
2021/11/04
4.1K0
怎么使用腾讯云服务器搭建个人网站?
【新用户限量秒杀】云服务器限时秒杀,首购1核1G 99元/年 https://cloud.tencent.com/act 从刚开始的简单学习HTML语言,到进入实验室跟着老师,学长学习Java,An
JunyouYH
2019/09/18
31.9K0
从零开始折腾博客:服务器,购买和配置
独立服务器:顾名思义,就是一个躺在机房的实实在在的物理服务器,专属于你,和你家的主机没啥区别,除了24小时运行。不过既然是专属的,价格嘛...
用户5921413
2019/10/09
5.5K0
从零开始折腾博客:服务器,购买和配置
租用云服务器之前 这些坑你得擦亮眼睛
企业上云或者个人建站,都得需要一个服务器空间来放置网站程序、应用等,所以服务器租用是现在广大企业和站长不可忽视的环节。由于云服务器快速普及,性价比也在快速提升,越来越多的用户都开始选择使用云服务器了。但在租用云服务器之前,关于云服务器方面这几个容易坑人的问题,我们还是有必要擦亮眼睛注意一下。
尊托云数
2019/03/20
4.9K0
租用云服务器之前 这些坑你得擦亮眼睛
腾讯云服务器建站系列 - 腾讯云CVM选择以及系统安装篇
老蒋前天遇到一个比较小白的网友,估计之前从来没有建站过,然后不懂为何还购买了腾讯云服务器。而且,服务器中什么都没有安装,只是在本地电脑中可以打开PHPSTUDY测试环境搭建的网站,问怎么无法打开域名直接打开服务器的。看到这样的问题,比当初问在服务器直接主域名绑定域名就想打开网站的网友更深不可测。
老蒋
2021/12/27
10K0
腾讯云服务器建站系列 - 腾讯云CVM选择以及系统安装篇
亚马逊服务器购买_电商平台用什么服务器
很多国内的小伙伴可能对siteground主机空间比较陌生,感觉不如bluehost或者Godaddy名气大,实际上siteground在国外是一家非常有名气和实力的美国主机服务商,也是wordpress、Drupal、Jommla这三家知名建站程序一致推荐的主机商。
全栈程序员站长
2022/11/09
6.3K0
亚马逊服务器购买_电商平台用什么服务器
带你深入了解“云世界”,云服务器如何绑定域名
随着科技的发展,互联网的普及早已经深入人心离不开生活,在互联网的基础上衍生出了一个在网络进行提供服务的服务平台——云服务器。云服务器在日常生活中的使用也是越来越多,大部分的人还是不太清楚云服务器的构造与存在,关于云服务器如何绑定域名?如何重启?如何挣钱?都还只是懂得一星半点。了解一样东西就要像探索一座古堡,唯有坚持深入才能弄清楚他的运用和存在,那么今天就来了解一下云服务器的常见问题吧。
用户8715145
2021/09/03
7.6K0
如何使用cdn cdn服务商哪家比较好
如果大家的网站内容大多数都是涉及到一些图片、视频、音频或者文件等大量资源,就会发现网站的打开速度变得十分缓慢,不仅影响到用户体验,也会影响到网站关键词的排名。想要更好的解决网站打开速度慢的问题,可以使用cdn加速服务,通过内容网络分发来提高网站速度。那么如何使用cdn?
用户8715145
2021/09/18
3.3K0
如何使用cdn cdn服务商哪家比较好
做网站如何选择云服务器?(二)服务篇
在现代互联网时代,越来越多的企业和个人都选择云服务器来满足业务需求。而随着市场上云服务器品牌的不断增多,各大云服务商纷纷推出各项举措以提升市场竞争力,并满足日益多样化的用户需求。这些举措中包含了哪些服务内容?而哪些方面又应当引起特别的关注呢?今天就来探讨一下这些问题。
云惑雨问
2025/03/10
2810
做网站如何选择云服务器?(二)服务篇
如何设置网站服务器 服务器的价格是多少
对于很多站长而言,都希望能建立一个属于自己的独立网站,而且将网站排名做上去还能拥有一定的流量,还能通过流量进行投放广告赚钱。做网站的确是很赚钱,但搭建网站的前期都是比较麻烦的,需要一定的技巧,比如服务器的配置。下面就给大家介绍如何设置网站服务器?
用户8715145
2021/09/17
7.9K0
如何设置网站服务器 服务器的价格是多少
云服务器怎么配置cpu与内存搭配「建议收藏」
很多朋友在购买云服务器之前都会搜服务器一般用几核才够用,因为服务器现在配置很多。低到1核2G、2核4G。高到16核32G、32核64G。甚至某些云服务器可以做到256核5120G这种神奇配置。那么购买云服务器时如何选择cpu与内存搭配?出现资源不足时应如何排查原因呢?
全栈程序员站长
2022/08/31
12.9K0
网站建设入门用什么服务器 服务器的价格是多少
现在很多小白都在学习网站建设,虽然网上有很多关于这类型的教程,但依旧有很多小白看完之后就忘记,想要牢牢记住,那就要多操作多实践。网站程序完成之后就要选用服务器,那么网站建设入门用什么服务器?下面就给大家简单讲述一下。
用户8715145
2021/12/11
4.8K0
公司网站建设选什么服务器 如何购买服务器
现在很多企业为了不被互联网淘汰,开始跟上互联网的脚步,纷纷开始搭建属于企业自己的网站。而搭建网站并非想象中那么容易,除了要掌握对前端页面的代码了解之外,后端数据库创建也要懂,因此网站建设还是有一定的难度。下面先给大家介绍公司网站建设选什么服务器。
用户8715145
2021/12/11
4.5K0
购买云服务器后如何使用 挑选云服务器应该注意什么
随着互联网科技的快速发展,很多个人用户也想创建自己的博客和网站。但是要想搭建自己的互联网平台,必须去购买服务器和域名,这两点缺一不可,那么很多人却不知道购买云服务器后如何使用,同时也不知道在云服务器挑选的时候应该注意哪些。
用户8715145
2021/08/27
5.6K0
推荐阅读
相关推荐
购买云服务器后如何做?如何才能够更好的使用它?
更多 >
LV.2
中金支付高级研发工程师
目录
  • 一、 游戏效果展示
  • 二、 游戏逻辑实现分析
    • 2.1 游戏主体逻辑
    • 2.2 游戏实现分析
  • 三、贪吃蛇游戏设计
    • 3.1 前期准备工作
    • 3.2 数据结构设计
    • 3.3 地图、蛇身、食物设计
    • 3.4 游戏主逻辑
    • 3.5 菜单
    • 3.6 游戏开始
      • 3.6.1 打印欢迎信息
      • 3.6.2 绘制地图
      • 3.6.3 初始化蛇
      • 3.6.4创建食物
    • 3.7 游戏运行
      • 3.7.1 打印帮助信息
      • 3.7.2 蛇身移动
    • 3.8 游戏结束
      • 3.8.1 保存分数
  • 四、结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档