C语言贪吃蛇课程设计实验报告(包含贪吃蛇项目源码)

文末有贪吃蛇代码全览,代码有十分细致的注释!!!
文末有贪吃蛇代码全览,代码有十分细致的注释!!!
文末有贪吃蛇代码全览,代码有十分细致的注释!!!

码文不易,给个免费的小星星和免费的赞吧,关注也行呀(⑅•͈ᴗ•͈).:*♡ 

不要白嫖哇(⁍̥̥̥᷄д⁍̥̥̥᷅ ू )伤心

这个源码需要安装easyx图形库,不然会报错,安装教程详情请看另一篇文章:easyx的安装及vc++的配套使用icon-default.png?t=N7T8https://blog.csdn.net/neadsc/article/details/127131635

结合广大网友提出的疑惑,我总结了一篇解决报错汇总文章,感谢大家对我的支持,所有文章都会及时更新给大家解决实际问题。

代码报错解决方案icon-default.png?t=N7T8http://t.csdnimg.cn/p3Pf5

目录

1 课题分析 

1.1研究背景与现状

1.2研究意义与研究步骤

2 设计概述

2.1 项目具体内容

2.2 系统框图

2.2.1程序结构图

2.2.2游戏流程图

2.2.3查看规则界面流程图

2. 系统模块划分

3 详细设计说明

3.1 主菜单界面设计说明

3.1.1 设计说明

3.1.2 功能展示

3.2 查看规则界面设计说明

3.2.1 设计说明

3.2.2 功能展示

3.3 开始游戏界面设计说明

3.3.1 设计说明

3.3.2 功能展示

4 结论


设计题目: 贪吃蛇大作战

设计内容与要求:

设计内容:

使用C语言编程,设计出贪吃蛇游戏功能。其中该项目主要分为三个界面,分别是菜单界面,规则界面和游戏主体界面。

创新点: 将蛇身单一颜色变为随游戏进程变化的彩虹色,修改速度机制和分数奖励机制,新增鼠标交互式菜单,增强游戏体验。

设计要求:

通过游戏设计巩固C语言知识,合理规范书写函数并正确调用。运用easyx增加拓展性内容,理解所使用函数的方法。

设计中遇到报错及时调试分析,查阅资料,对同一功能进行多方法比较使用,确保代码正确,正常运行。

指导教师:

年 月 日

1 课题分析 


1.1研究背景与现状

随着计算机行业迅速发展,也涌现了多种热门编程语言,作为使用十分广泛的高级程序设计语言,C语言程序开发学习尤为重要,其绘图能力强,可移植性,具有强大数据处理能力的特点,适于编写系统软件、图形和动画。

当今游戏成为时下比较流行的一种消遣方式,贪吃蛇这款游戏正好符合大众心理,适应人群广泛,具有很强的娱乐性和交互性,可以丰富人们娱乐时间。

贪吃蛇作为一款小游戏,运行简单,易上手,游戏机制的刺激性强,能引人入胜,爱不释手,且相较于大型游戏的长时间消耗,贪吃蛇对碎片化娱乐时间更具有合理性,可以做到简单易行,满足人们需求。

本文主要目的为研究并设计C语言贪吃蛇游戏,利用EasyX Graphics Library免费绘图库实现游戏画面,函数设计与调用,制定游戏规则与运行机制,并在Windows控制台主机输出画面,实现游戏运行。

1.2研究意义与研究步骤

研究意义:

在快节奏社会中,人们时间更加紧凑,娱乐休闲时间也显得十分紧促,在大型游戏受众范围广的情况下,轻游戏和快游戏更紧贴胃口,在碎片化时间里让用户得到更满足的快节奏娱乐体验。

通过贪吃蛇小游戏,人们不仅可以在休闲时间娱乐,还可以在游戏中记录自己的分数记录,在一次次挑战中提升自我,游戏的用意也是告诉人们不断向前,突破自我,向着目标前行才能取得成功。同时,研究C语言课程设计,编写贪吃蛇游戏,可以锻炼思维,熟悉代码运用,有利于为未来项目开发积累经验,全面发展。

研究步骤:

(1)设计: 游戏最重要的是界面显示设计,要考虑游戏窗体大小,文字内容提示,让用户在打开游戏过程中有良好的运行体验,明确每个功能的作用与游戏操作。其次是设计流畅良好的键鼠操作,让玩家有更良好的交互反馈。

(2)游戏程序测试是关键步骤。每增加一个游戏功能函数,就要对其进行实例测试,确保代码无报错、贪吃蛇运行过程无误、游戏界面无不良输出。并在键鼠交互保证其流畅性和稳定性,为用户提供良好的游戏体验。

2 设计概述


2.1 项目具体内容

该项目通过C程序语言以及EasyX Graphics Library绘图库设计出贪吃蛇游戏程序。其中该项目主要分为三个界面,分别是主菜单界面,规则界面和开始游戏界面。

通过主菜单界面我们可以进入开始游戏界面,通过鼠标交互点击按钮,即可开始游戏,游戏可实时计分。在查看规则界面可以看到贪吃蛇游戏规则设定,并查看游戏历史最高分。如果想退出游戏,便可在主菜单选择退出按钮结束程序运行。

2.2 系统框图

2.2.1程序结构图

贪吃蛇游戏程序主要由主菜单界面,游戏界面,规则界面和退出游戏界面构成如图2-1所示。

4b494c684320487ca7da8f9d09949a57.png

图2-1 程序结构图

2.2.2游戏流程图

游戏的主体由几个函数构成,分别为游戏初始化函数,画面显示函数,分数读写函数,交互函数,下面是游戏运行的流程图,如图2-2所示:

633104eaa664467e8cb673137a9f3bc0.png

图2-2 游戏流程图 

2.2.3查看规则界面流程图

查看规则界面由读取最高分、界面文字输出和鼠标按钮交互实现,定义结构体鼠标,判断其行为,如果不点击按钮,则处于规则界面不进行任何操作,如图2-3所示:

c85b4619525b4ac194eb55f4c0fb6b21.png

图2-3 规则界面流程图

2. 系统模块划分

课程项目设计中,贪吃蛇游戏主要分为三个界面,分别是菜单界面,规则界面和游戏主体界面。模块划分为主菜单模块、游戏初始化、画面显示、蛇移动模块、与键盘输入有关的更新(即键盘控制蛇的移动方向)、与输入无关的更新(移动速度控制),奖励机制、分数模块

在主菜单界面设计当中,我们通过easyx图形库来设计出按钮的选项,并对界面着色,通过监控鼠标左键的行为及鼠标点击位置来判断用户所选择的按钮选项,以此实现交互,完成界面跳转

当选择“开始游戏”选项,则进入游戏开始函数,进行游戏的初始化和最高分读取,对蛇及画面进行初始化,而后进入循环,当不满足游戏的失败条件,界面就会一直更新绘图,确保游戏的持续进行

其中在贪吃蛇游戏的速度机制和奖励机制分别做了改良,速度可以同时满足长按方向键加速前进,并且吃的食物越多,速度越快;分数奖励机制则满足一定的阈值限定,每当吃的食物达到一定程度,分数会以倍数增加,提高奖励分。

在游戏失败结算界面中,我们添加了分数显示,更直观地看到此局游戏中用户所得分数,而在分数模块,会进行txt文件读写操作,如果玩家分数大于最高分,则此局分数覆盖最高分。

3 详细设计说明


3.1 主菜单界面设计说明

3.1.1 设计说明

主菜单界面运用图形库的绘画功能,绘画出按钮矩形,并在按钮输出提示文字,让玩家理解其功能作用,并通过while函数时刻监控鼠标消息,当鼠标左键单击时,再进行if判断语句,当符合其中一个按钮的点击位置时,就进入该if语句中的函数,实现跳转功能

3.1.2 功能展示

主菜单界面如图3-1所示。

69a7eec0a0214c09815766f32ca98e10.png

图3-1 主菜单界面

3.2 查看规则界面设计说明

3.2.1 设计说明

查看规则界面功能:在查看规则界面中,玩家可以了解规则事项以及游戏涉及到的按键操作,同时在此界面显示最高分,让玩家有一个游戏目标,在了解相关规则后,玩家可以点击按钮返回主菜单,选择开始游戏或退出游戏。 

具体实现:实现的界面展示与主菜单一致,读取最高分则利用到编写的分数读写函数,把txt文件中的分数读取并显示于界面上

3.2.2 功能展示

查看规则界面如图3-2所示。

abc801551e254690a9b617d21a746b06.png

图3-2查看规则界面

3.3 开始游戏界面设计说明

3.3.1 设计说明

开始游戏界面功能:实现游戏的主体,绘画蛇、食物与游戏界面,键盘操作贪吃蛇移动吃食物,界面展示最高分,并随着进程进行,实时记录分数,当游戏结束时,弹出结算画面字样

具体实现:通过设置画布大小确定界面,并画横竖线把画布分为小方格,计算固定的像素值,把每个矩形方格都一一对应方格数组。在游戏初始化时遍历该数组来绘画蛇以及食物,此后每一次画面更新,都会遍历数组刷新蛇的长度和食物位置。

实时记录分数则通过定义一个int变量,根据分数机制增加对应数值,然后转化成char类型存入字符数组,再将其输出至画面。

游戏结算界面则通过判断蛇头所处位置,让全局变量改变数值,跳出游戏的循环,并输出相应文字。

3.3.2 功能展示

游戏界面如图3-3图3-4所示。

5fce5f7a149a4da5bf3b89c40cab6eb7.png

图3-3 游戏界面

06ad991a06b7439bad1abb8a994f0e04.png

 图3-4 游戏结算界面

4 结论


通过一个学期的C语言课程的学习,我与我的组员对c语言有了更深一步的了解。从一开始的什么都不会,自己一点点慢慢的摸索。发现书本上学到的东西还是很不够的,还有好多东西需要课外的学习。对于贪吃蛇,知道了它的实现原理,学会了对程序的模块设计、数据结构设计的简单分析。并通过源码分析讲述了各个模块的实现方法。在几个模块的实现过程中渗透了部分图形功能函数。通过本文的编写过程 ,掌握了以下几点知识点:

1.图形系统的初始化和关闭

2.各种画图函数的使用

3.结构体的定义

5.函数嵌套及调用

6.键盘操作

总的来说,编程还是一个很需要耐心的工作,特别是有bug找不出来的时候,特别需要我静下心来好好研究。很多时候都没有耐心改下去了。这次学习对我们组的耐心是一个极大的磨砺,收获还是蛮多的,在这次课程设计中我们巩固了C语言知识,学会了合理规范书写函数并正确调用,并且能够运用easyx增加拓展性内容,最重要的是发现了自己的不足之处。

我们接下来会再接再厉,不断实践,不断突破自己,争取做出更好的作品。

附录:

贪吃蛇程序如下:

/*相较于原学习的贪吃蛇代码课设内容,目前进行了更新修改:
* 
* ①扩大画布范围,为分数显示提供空间
* ②新增实时分数计数功能
* ③新增最高分文件读写功能
* ④新增加速机制
* ⑤新增奖励机制
* ⑥新增菜单功能:开始,规则,退出
*/#include <graphics.h>
#include <windows.h>
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <cstdio>#define	Width 40		//宽40格
#define Height 30		//高30格
#define Size 20			//格子大小:20int blocks[Width][Height] = {0};		//用以表示所有方格
char moveDir;			//表示运动方向
char oldmove;			//旧的移动方向
int fx, fy;				//food食物坐标
int addspeed = 15;		//控制初始速度
int failure = 0;		//用以判断游戏是否失败,失败赋值为 1
int score = 0;			//记录分数
int max = 0;			//记录最高分
int k = 1;				//奖励机制初始值
char num[20];			//输出分数数组
char best[20];			//最高分数组	void initGame();
void show();			//图像绘制更新显示函数 
void WithInput();		//与输入有关的更新
void WithoutInput();	//与输入无关的更新
void movesnake();		//蛇的移动函数
void readscore();		//读取分数
void writescore();		//写入分数
void ShowWord();		//界面文字
void drawmenu();		//主菜单
void gamestart();		//开始游戏
void seerule();			//查看规则
void back();			//退出游戏int main() {	start:drawmenu();goto start;return 0;
}	  void initGame() {		int i;initgraph(1000, 600);		//①初始化绘图窗口,格子个数乘格子大小即为长度setbkcolor(CYAN);		//设置背景颜色BeginBatchDraw();		//easyx中实现批绘图功能的函数,可以消除图像闪烁cleardevice();			//使用当前背景色清空绘图设备setlinecolor(WHITE);	//划线颜色为白色for (i = Size; i < Width * Size+1; i += Size) {		//用for循环绘制多条线line(i, 0, i, Height * Size);				//竖线坐标从x1(i,0)-> y1(i,Height * Size)}for (i = Size; i < Height * Size; i += Size) {line(0, i, Width * Size, i);				//横线坐标从x2(0,i) -> y2(Width * Size, i)}moveDir = oldmove = 'd';			//初始化默认蛇行进方向朝右blocks[Width / 2][Height / 2] = 1;				/*正中间画蛇头,蛇为赋值的方格0则为空白区域*/for (i = 1; i < 4; i++) {blocks[Width / 2 - i][Height / 2] = i + 1;	//y坐标不变,更改x坐标,在蛇头后方画蛇身}srand(time(0));									//srand函数产生一个时间种子,从而达到真正的随机效果fx = rand() % (Width - 1) + 1;					//随机数除39取余并+1,则为食物所生成的格子x坐标fy = rand() % (Height - 1) + 1;					//随机数除29取余并+1,则为食物所生成的格子y坐标
}	   void show() {			cleardevice();for (int i = 0; i < Width; i++) {				//遍历所有方格,更新蛇的颜色for (int j = 1; j < Height; j++) {if (blocks[i][j] != 0) {setfillcolor(HSVtoRGB(blocks[i][j] * 10, 0.9, 1));	//HSV转RGB颜色,色相H 0°->360°,此处设置每长一个蛇身,提升10°色相,饱和度0.9,明度1}else{setfillcolor(CYAN);					//否则更新为正常背景颜色}fillrectangle(i * Size, j * Size, (i + 1) * Size, (j + 1) * Size);		//填充,(参数为左上角和右下角坐标)}}setfillcolor(LIGHTGREEN);						//食物颜色fillrectangle(fx * Size, fy * Size, (fx + 1) * Size, (fy + 1) * Size);ShowWord();FlushBatchDraw();				/*BeginBatchDraw执行后,任何绘图操作都将暂时不输出到绘图窗口上直到执行 FlushBatchDraw 或 EndBatchDraw 才将之前的绘图输出。*/
}void ShowWord() {if (failure) {settextcolor(LIGHTRED);						//设置字体颜色settextstyle(80, 0, _T("宋体"));				//设置字体样式setbkmode(TRANSPARENT);outtextxy(240, 220, "游戏失败");settextstyle(40, 0, _T("宋体"));sprintf(num, "%d", score);						//将int转换为char并存入num中outtextxy(260, 360, "分数:");					//显示的字体及坐标outtextxy(380, 360, num);outtextxy(260, 420, "点击R键重新开始");			//显示的字体及坐标}else {												//②settextcolor(BLACK);							//设置分数颜色settextstyle(25, 0, _T("隶书"));				//设置字体样式setbkmode(TRANSPARENT);							//设置当前设备图案填充和文字输出时的背景模式,THANSPARENT为透明背景sprintf(num, "%d", score);						//将int转换为char并存入num中outtextxy(860, 40, "分数:");					//显示的字体及坐标outtextxy(940, 42, num);outtextxy(845, 73, "最高分:");sprintf(best, "%d", max);outtextxy(940, 75, best);}
}void readscore() {										//③FILE* fpread = fopen("score.txt", "r");				//以只读的方式打开文件if (fpread == NULL) {return;}fscanf(fpread, "%d", &max);fclose(fpread);
}void writescore() {FILE* fpWrite = fopen("score.txt", "w");			//"w"打开并写入文本文件.(若不存在则新建,反之,则从头写,覆盖原内容)if (fpWrite == NULL) {return ;}fprintf(fpWrite, "%d", score);fclose(fpWrite);				
}void WithInput() {if (_kbhit() && failure == 0) {//键盘输入控制蛇的方向char input = _getch();if (input == 'a' || input == 's' || input == 'd' || input == 'w'||input == 'r') {moveDir = input;//设定规则:当向某一方向行动时,按下反向键不起作用(防止误触导致判断为咬到蛇身游戏失败),强制将按下的反向键变为当前运动方向if (moveDir == 'a' && oldmove == 'd') {moveDir = 'd';}else if (moveDir == 's' && oldmove == 'w') {moveDir = 'w';}else if (moveDir == 'd' && oldmove == 'a') {moveDir = 'a';}else if (moveDir == 'w' && oldmove == 's') {moveDir = 's';}else {oldmove = input;}movesnake();}}
}void WithoutInput() {if (failure) {				//先判断是否失败,失败则返回return;}//Sleep(100);				//更新速度控制蛇的移动速度,但使用sleep会产生键盘控制与画面的延迟,所以不使用//movesnake();static int speed = 1;		//设置一个静态变量speed,利用循环特定次数来触发movesnake函数speed++;if (speed == addspeed) {	//每15帧移动一次,同时实现长按方向键加快蛇的移动速度movesnake();speed = 1;}
}void movesnake() {int i, j;//对蛇进行更新,蛇每个格数值都+1,以便后面预备一个数值为1的新蛇头,当吃到食物时,新蛇头改变颜色加入蛇身中for (i = 0; i < Width; i++) {for (j = 0; j < Height; j++) {if (blocks[i][j] != 0) {blocks[i][j]++;}}}int oldhx, oldhy, oldtx, oldty;			//旧蛇头和旧蛇尾的坐标int tailblock = 0;for (i = 0; i < Width; i++) {for (j = 0; j < Height; j++) {if (tailblock < blocks[i][j]) {tailblock = blocks[i][j];	//遍历找出最大值即为蛇尾oldtx = i;oldty = j;}if (blocks[i][j]==2) {			//寻找旧蛇头oldhx = i;oldhy = j;}}}//根据蛇的运动方向来赋值新蛇头的xy坐标int newhx = oldhx, newhy = oldhy;		//定义新蛇头switch (moveDir) {case'a':newhx -= 1;break;case's':newhy += 1;break;case'd':newhx += 1;break;case'w':newhy -= 1;break;}//判断游戏是否失败if (newhx >= Width || newhx < 0 || newhy >= Height || newhy < 0 || blocks[newhx][newhy] != 0) {failure = 1;return;}//令蛇头方格值为1blocks[newhx][newhy] = 1;//对吃到食物以及蛇尾的处理				⑤if (newhx == fx && newhy == fy) {		//吃到食物,重新随机数生成新食物坐标score = score + k;					//吃到食物分数+kif (score % 2 == 0) {				//通过判断吃食物的数量来叠加奖励分k = k + 1;}if (score > max) {					//与最高分判断,条件成立才能覆盖最高分writescore();					//写入最高分}//④if (score) {						//“加速”判断,通过判断分数增大的取值,加快蛇的运动速度,score不为0时进入该判断语句if (score % 2 == 0) {			//便于测试结果明显,设置每吃2个食物,蛇速度加快1帧addspeed--;}}fx = rand() % (Width - 1) + 1;		fy = rand() % (Height - 1) + 1;}else{									//未吃到食物blocks[oldtx][oldty] = 0;}}void drawmenu() {MOUSEMSG m;					//定义结构体鼠标minitgraph(600, 600);		//定义画布大小setbkcolor(CYAN);			//设置背景颜色cleardevice();				//使用当前背景色清空绘图设备,类似system(cls)的刷新setfillcolor(WHITE);	//方框颜色fillrectangle(140, 50, 460, 170);			//矩形左上角xy坐标和右下角xy坐标fillrectangle(120, 220, 480, 350);			//矩形左上角xy坐标和右下角xy坐标fillrectangle(100, 400, 500, 540);			//矩形左上角xy坐标和右下角xy坐标settextcolor(BLACK);						//设置字体颜色settextstyle(50, 0, _T("楷体"));			//设置字体格式setbkmode(TRANSPARENT);						//去除文字背景outtextxy(200, 85, "开始游戏");				//文字输出位置的xy坐标outtextxy(200, 260, "查看规则");outtextxy(200, 445, "退出游戏");while (1) {m = GetMouseMsg();						//获取一个鼠标消息if (m.x >= 140 && m.x <= 460 && m.y >= 50 && m.y <= 170) {		//判断鼠标点击的位置if (m.uMsg == WM_LBUTTONDOWN) {		//当鼠标按下左键gamestart();					//开始游戏}}else if (m.x >= 120 && m.x <= 480 && m.y >= 220 && m.y <= 350) {if (m.uMsg == WM_LBUTTONDOWN) {		//当鼠标按下左键seerule();					//查看规则}}else if (m.x >= 100 && m.x <= 500 && m.y >= 400 && m.y <= 540) {if (m.uMsg == WM_LBUTTONDOWN) {		//当鼠标按下左键back();					//关闭菜单退出游戏}}}
}void gamestart() {failure = 0;score = 0;k = 1;addspeed = 15;for (int i = 0; i < Width; i++) {for (int j = 0; j < Height; j++) {blocks[i][j] = 0;}}initGame();readscore();while (!failure) {WithInput();WithoutInput();show();}// 如果游戏失败,等待用户输入 'r' 返回主菜单while (failure) {if (_kbhit()) {char input = _getch();if (input == 'r') {closegraph();drawmenu();return;}}}
}void seerule() {MOUSEMSG m;					//定义结构体鼠标mreadscore();				//读取历史最高分initgraph(600, 600);		//定义画布大小setbkcolor(CYAN);			//设置背景颜色cleardevice();				//使用当前背景色清空绘图设备,类似system(cls)的刷新setfillcolor(WHITE);	//方框颜色fillrectangle(100, 400, 500, 540);			//矩形左上角xy坐标和右下角xy坐标settextcolor(BLACK);						//设置字体颜色settextstyle(50, 0, _T("楷体"));			//设置字体格式setbkmode(TRANSPARENT);						//去除文字背景outtextxy(200, 445, "返回菜单");settextcolor(BLACK);						//设置字体颜色settextstyle(30, 0, _T("楷体"));			//设置字体格式setbkmode(TRANSPARENT);						//去除文字背景outtextxy(45, 30, "WASD控制蛇移动,长按方向键可加速移动");outtextxy(45, 80, "碰到墙壁游戏失败");outtextxy(45, 130, "吃的食物越多,分数奖励越高");outtextxy(45, 180, "历史最高分:");sprintf(best, "%d", max);outtextxy(220, 180, best);while (1) {m = GetMouseMsg();						//获取一个鼠标消息if (m.x >= 100 && m.x <= 500 && m.y >= 400 && m.y <= 540) {if (m.uMsg == WM_LBUTTONDOWN) {		//当鼠标按下左键drawmenu();					//返回主菜单}}}
}void back() {closegraph();		//关闭画面exit(0);			//退出程序
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/389308.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++/STL】:vector容器的底层剖析迭代器失效隐藏的浅拷贝

目录 &#x1f4a1;前言一&#xff0c;构造函数1 . 强制编译器生成默认构造2 . 拷贝构造3. 用迭代器区间初始化4. 用n个val值构造5. initializer_list 的构造 二&#xff0c;析构函数三&#xff0c;关于迭代器四&#xff0c;有关数据个数与容量五&#xff0c;交换函数swap六&am…

SpringBoot整合Flink CDC实时同步postgresql变更数据,基于WAL日志

SpringBoot整合Flink CDC实时同步postgresql变更数据&#xff0c;基于WAL日志 一、前言二、技术介绍&#xff08;Flink CDC&#xff09;1、Flink CDC2、Postgres CDC 三、准备工作四、代码示例五、总结 一、前言 在工作中经常会遇到要实时获取数据库&#xff08;postgresql、m…

为何重视文件加密?用哪款加密软件好呢?

一、公司都重视文件加密的原因有哪些&#xff1f;保护数据安全&#xff1a;在数字化时代&#xff0c;数据是企业重要的资产之一。文件加密可以确保数据在存储和传输过程中不被未经授权的人员访问或窃取&#xff0c;从而保护数据的机密性和完整性。这对于包含敏感信息&#xff0…

Reat hook开源库推荐

Channelwill Hooks 安装 npm i channelwill/hooks # or yarn add channelwill/hooks # or pnpm add channelwill/hooksAPI 文档 工具 Hooks useArrayComparison: 比较两个数组的变化。useCommunication: 处理组件之间的通信。useCurrencyConverter: 货币转换工具。useCurre…

【Docomo】5G

我们想向您介绍第五代移动通信系统“5G”。 5G 什么是5G&#xff1f;支持5G的技术什么是 5G SA&#xff08;独立&#xff09;&#xff1f;实现高速率、大容量的5G新频段Docomo的“瞬时5G”使用三个宽广的新频段 什么是5G&#xff1f; 5G&#xff08;第五代移动通信系统&#x…

【Elasticsearch】Elasticsearch的分片和副本机制

文章目录 &#x1f4d1;前言一、分片&#xff08;Shard&#xff09;1.1 分片的定义1.2 分片的重要性1.3 分片的类型1.4 分片的分配 二、副本&#xff08;Replica&#xff09;2.1 副本的定义2.2 副本的重要性2.3 副本的分配 三、分片和副本的机制3.1 分片的创建和分配3.2 数据写…

Github Benefits 学生认证/学生包 新版申请指南

本教程适用于2024年之后的Github学生认证申请&#xff0c;因为现在的认证流程改变了很多&#xff0c;所以重新进行了总结这方面的指南。 目录 验证教育邮箱修改个人资料制作认证文件图片转换Base64提交验证 验证教育邮箱 进入Email settings&#xff0c;找到Add email address…

【一图学技术】5.OSI模型和TCP/IP模型关系图解及应用场景

OSI模型和TCP/IP模型关系图解 OSI模型和TCP/IP模型都是网络通信的参考模型&#xff0c;用于描述网络协议的层次结构和功能。下面是它们的定义和区别&#xff1a; OSI模型&#xff08;Open Systems Interconnection Model&#xff09; OSI模型是一个理论上的七层模型&#xff…

揭秘线性代数秩的奥秘:从理论到机器学习的跨越

一、线性代数中的秩&#xff1a;定义与性质 1.1 定义 在线性代数中&#xff0c;秩是一个核心概念&#xff0c;用于描述矩阵或向量组的复杂性和独立性。具体而言&#xff0c;一个矩阵的秩定义为该矩阵中非零子式的最高阶数&#xff0c;而一个向量组的秩则是其最大无关组所含的…

双 Token 三验证解决方案

更好的阅读体验 \huge{\color{red}{更好的阅读体验}} 更好的阅读体验 问题分析 以往的项目大部分解决方案为单 token&#xff1a; 用户登录后&#xff0c;服务端颁发 jwt 令牌作为 token 返回每次请求&#xff0c;前端携带 token 访问&#xff0c;服务端解析 token 进行校验和…

Ubuntu配置项目环境

目录 一、Xshell连接云服务器 二、切换到root用户 三、安装jdk 四、安装tomcat 五、安装mysql 1、安装mysql服务器 2、卸载mysql服务器 六、正式进行程序的部署 一、Xshell连接云服务器 要想使用xshell连接上云服务器就需要明确云服务器的几个信息&#xff1a; 1&…

科研绘图系列:R语言GWAS曼哈顿图(Manhattan plot)

介绍 曼哈顿图(Manhattan Plot)是一种常用于展示全基因组关联研究(Genome-Wide Association Study, GWAS)结果的图形。GWAS是一种研究方法,用于识别整个基因组中与特定疾病或性状相关的遗传变异。 特点: 染色体表示:曼哈顿图通常将每个染色体表示为一个水平条,染色体…

tarojs项目启动篇

TaroJS 是一个开放式跨端开发解决方案&#xff0c;使用 React 语法规范来开发多端应用&#xff08;包括小程序、H5、React Native 等&#xff09;。它可以帮助开发者高效地构建出在不同端上运行一致的应用。以下是启动 TaroJS 项目&#xff08;本来就有的旧项目&#xff09;的步…

⭐️2024年7月全球排名前二十开发语言全面对比横向竖向PK(TIOBE指数榜单)编程语言介绍 适用场景 优势 举例 详细说明 编写第一个语言程序Hello world源代码

2024年7月全球排名前二十开发语言全面对比横向竖向PK&#xff08;TIOBE指数榜单&#xff09;编程语言介绍 适用场景 优势 举例 详细说明 编写第一个语言程序Hello world源代码 2024年7月全球排名前二十开发语言全面对比横向竖向PK&#xff08;TIOBE指数榜单&#xff09;编程语言…

反序列化靶机serial

1.创建虚拟机 2.渗透测试过程 探测主机存活&#xff08;目标主机IP地址&#xff09; 使用nmap探测主机存活或者使用Kali里的netdicover进行探测 -PS/-PA/-PU/-PY:这些参数即可以探测主机存活&#xff0c;也可以同时进行端口扫描。&#xff08;例如&#xff1a;-PS&#xff0…

【python】Python中采集Prometheus数据,进行数据分析和可视化展示

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

如何在 Debian 上安装运行极狐GitLab Runner?【二】

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门面向中国程序员和企业提供企业级一体化 DevOps 平台&#xff0c;用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规&#xff0c;而且所有的操作都是在一个平台上进行&#xff0c;省事省心省钱。可以一键安装极狐GitL…

本地生活服务商公司有哪些?一文教你搭建本地生活系统!

当前&#xff0c;本地生活领域群雄环伺&#xff0c;日益激烈的竞争推动各家互联网大厂调整布局模式的同时&#xff0c;也让本地生活市场持续迸发新的活力。在此背景下&#xff0c;想要通过本地生活服务商身份入局的创业者数量不断增多&#xff0c;以本地生活服务商公司有哪些等…

BEVGPT展示自动驾驶的“全知视角”,预测决策规划三合一的革新之作!

前言 本篇文章由原paper一作Pengqin Wang&#xff08;王鹏钦&#xff09;全权翻译分享&#xff0c;王鹏钦为香港科技大学博士生&#xff0c;师从沈劭劼教授、朱美新教授。他的研究方向为自动驾驶和机器人系统中的决策、预测和规划。他的研究成果发表于TMECH、RAL、IROS、TRB等…

互联网政务应用安全管理规定

互联网政务应用安全管理规定 &#xff08;2024年2月19日中央网络安全和信息化委员会办公室、中央机构编制委员会办公室、工业和信息化部、公安部制定 2024年5月15日发布&#xff09; 第一章 总则 第一条为保障互联网政务应用安全&#xff0c;根据《中华人民共和国网络安全法…