【C#实战】控制台游戏 勇士斗恶龙(3)——营救公主以及结束界面
即使走的再远,也勿忘启程时的初心
C/C++ 游戏开发
Hello,米娜桑们,这里是君兮_,最近开始正式的步入学习游戏开发的正轨,想要通过写博客的方式来分享自己学到的知识和经验,这就是开设本专栏的目的。希望这些独立的C#小项目能对做游戏的你有所帮助,毕竟学会游戏开发的最好的上手方式就是自己做一款游戏!!
勇士斗恶龙
- 前言
- 战胜恶龙以后
- 营救公主
- 如何营救公主
- 游戏结束界面
- 整体游戏的源码
- 总结
前言
- 今天我们接着来讲勇士斗恶龙的第三部分,也是最后一部分,打败恶龙营救公主的逻辑以及结束界面的相关逻辑
- 还是先把咱们游戏的整体流程图放在这里
战胜恶龙以后
- 有关玩家未能通过恶龙的试炼进入退出游戏界面和营救公主成功后进入退出游戏界面我们之后放到一块说,首先我们先来讲讲如何来营救公主
营救公主
- 如果勇士足够勇敢又有足够的运气战胜了恶龙,下面我们就可以去营救公主了,首先,我们这里有这样一个条件,当BOSS的hp还没减为0,公主是不能出现在游戏画面中的,只有BOSS的hp减为0,我们才能在游戏画面上标注公主的位置,同时,由于我们击败了恶龙,应该不再让表示BOSS的图标继续出现在画面中,这些,我们在上回的游戏逻辑中都已经用到了,但由于上回的重点在于玩家移动和战斗逻辑,我们并没有展开细讲,下面我们通过这部分代码来回顾一下
//hp>0时,boss活着才绘制if (bossHp > 0){Console.SetCursorPosition(bossX, bossY);Console.ForegroundColor = bossColor;Console.Write(bossIcon);}#region 6 公主显示//公主显示else{Console.SetCursorPosition(princessX,princessY);Console.ForegroundColor = princessColor;Console.Write(princessIcon);}#endregion
//擦除BOSSelse if(bossHp<=0){//去营救公主//boss擦除Console.SetCursorPosition(bossX, bossY);Console.Write(" ");isFight = false;continue;}
- 有关公主的初始化,只需要设置一下公主所在的位置,公主的图标以及图标的颜色就行,这里不再赘述。另外,这里是为了讲解拆分出来的,实际不是一段连贯的代码,最后我会把完整的源码放出,大家理解这部分讲的内容即可。
如何营救公主
- 我们是一款控制台小游戏,同时我这里只是为大家讲一个大的游戏框架,因此一切从简,这里我们来到公主身边并按J键就能营救公主了(当然,这里营救公主也可以设计的比较复杂,比如公主的位置可以是一个随机数,你每营救一次她就会移动到别的地方,营救三次才算成功等等,总之,这些地方都可以按照你自己的想法来自定义,没有具体的要求)
case 'j':
case 'J'://判断是否在公主身边else if (((playerX == princessX && playerY == princessY - 1) || (playerX == princessX && playerY == princessY + 1) ||(playerX == princessX - 2 && princessY == playerY) || (playerX == princessX + 2 && playerY == princessY)) && bossHp <= 0){ nowSceneID = 3;//修改场景选择ID进入退出界面nowEndIndex = "恭喜你救出公主";//这个提示语在之后结束界面会用到//跳出while循环,回到主循环isOver = true;}break;}if (isOver)
{//此时的break与while配对break;
}
- 由于这里是在while循环中,我们需要重新进入场景选择的switch语句中,因此定义了一个isOver来辅助我们退出循环重新选择场景
游戏结束界面
- 进入游戏结束界面有两种情况,第一种情况就是营救出了公主,如上所说,第二种情况就是我们的勇士未能击败恶龙,此时也应该进入游戏结束界面
//在这判断玩家或者怪物是否死亡,如果死了,继续后面的流程
if(playerHp<=0)
{//游戏结束//游戏结束画面isOver = true;nowSceneID = 3;nowEndIndex = "很遗憾你被恶龙击败了";endSay = 1;break;
}
- 解释一下,这里的nowEndIndex和endSay,在上面的营救公主成功后也有一个nowEndIndex,当时定义的是“恭喜你救出公主”,我们在进入结束界面时,需要给玩家一个提示,到底是失败了,还是成功救出公主,这个就是在结束界面打印的不同的语句用来提示玩家游戏结果的,同时,这两段提示的字数不同,我们为了保证这两段话都能居中显示,因此定义了一个endSay,通过它的值来判断我们这段文字需要打印的位置。
- 而有关其他的,结束界面和开始界面是非常类似的,我们直接来看看相关的代码
case 3:Console.Clear();int nowEndSelIndex = 0;while (true){bool EndQuitWhile = false;Console.SetCursorPosition(w / 2 - 4, 5);Console.ForegroundColor = ConsoleColor.White;Console.Write("GameOver");if(endSay==1)Console.SetCursorPosition(w / 2 - 8,7);elseConsole.SetCursorPosition(w / 2 - 6,7);Console.ForegroundColor = ConsoleColor.DarkRed;Console.Write(nowEndIndex);Console.ForegroundColor=nowEndSelIndex==0?ConsoleColor.Red:ConsoleColor.White;Console.SetCursorPosition(w / 2 - 4, 10);Console.Write("继续游戏");Console.ForegroundColor = nowEndSelIndex == 0 ? ConsoleColor.White : ConsoleColor.Red;Console.SetCursorPosition(w / 2 - 4, 12);Console.Write("退出游戏");char endInput=Console.ReadKey(true).KeyChar;switch (endInput){case 'w':case 'W':Console.Clear();nowEndSelIndex = 0;break;case 's':case 'S':Console.Clear();nowEndSelIndex = 1;break;case 'j':case 'J':if (nowEndSelIndex == 1)Environment.Exit(0);else{nowSceneID = 1;EndQuitWhile = true;}break;}if(EndQuitWhile){break;}}break;
}
- 当玩家在退出游戏高亮时按下“J”键,直接就退出游戏了,当玩家想要继续游戏,我们就要把游戏场景切换到开始游戏界面,因此这里的EndQuitWhile也是用来辅助我们重新进入游戏场景切换循环的,至于其他的,与开始界面是一模一样的,就不多赘述了。
整体游戏的源码
- 好了,到这里这个控制台小游戏就讲的差不多了,下面为大家提供该游戏的源码以及游戏截图,方便大家查阅和试玩
using System;
using System.Diagnostics;
using System.Runtime.Intrinsics.X86;namespace 王子救公主
{class Program{static void Main(string[] args){//隐藏光标Console.CursorVisible = false;//设置舞台的大小int w = 60;int h = 40;Console.SetWindowSize(w,h);Console.SetBufferSize(w,h);//当前场景的编号int nowSceneID = 1;string nowEndIndex ="";int endSay = 0;while (true){//不同的场景进行不同的逻辑处理switch (nowSceneID){case 1:Console.Clear();#region 1 开始界面Console.SetCursorPosition(w/2-5,10);Console.WriteLine("勇士斗恶龙");//当前选项的编号int nowSelIndex = 0;//因为要输入 我们可以构造一个开始界面的死循环//专门用来处理 开始场景相关的逻辑while (true){//用一个标识用来退出此循环bool isQuitWhile=false;//显示内容检测输入//设置光标位置,再显示内容Console.SetCursorPosition(w/2-4,12);//根据当前选择的编号来决定是否变色Console.ForegroundColor = nowSelIndex == 0 ? ConsoleColor.Red : ConsoleColor.White;Console.Write("开始游戏");Console.SetCursorPosition(w / 2 - 4, 14);Console.ForegroundColor = nowSelIndex == 1 ? ConsoleColor.Red : ConsoleColor.White;Console.Write("退出游戏");//检查玩家输入的键并且不会在控制台上显示输入内容char input = Console.ReadKey(true).KeyChar;switch (input){case 'W':case 'w':nowSelIndex = 0;break;case 'S':case 's':nowSelIndex = 1;break;case 'j':case 'J':if(nowSelIndex == 0){//1.改变场景IDnowSceneID = 2;//2.要退出内层循环whileisQuitWhile = true;}else{//关闭控制台Environment.Exit(0);}break;}if (isQuitWhile == true)break;}#endregionbreak;case 2:Console.Clear();#region 2 红墙Console.ForegroundColor = ConsoleColor.Red;//画墙//设为红色int i = 0;//横墙for(i = 0; i < w;i+=2){Console.SetCursorPosition(i, 0);Console.Write('■');Console.SetCursorPosition(i, h-1);Console.Write('■');Console.SetCursorPosition(i, h-9);Console.Write('■');}//竖墙int j = 0;for (j = 0; j <h; j++){Console.SetCursorPosition(0, j);Console.Write('■');Console.SetCursorPosition(w-2,j);Console.Write('■');}#endregion#region#region 3 Boss属性相关int bossX = 24;int bossY = 15;int bossAtkMin = 7;int bossAtkMax = 13;int bossHp = 100;string bossIcon = "●";//申明一个颜色变量ConsoleColor bossColor = ConsoleColor.Red;#endregion#region 4 玩家属性相关int playerX = 4;int playerY = 5;int playerAtkMin = 7;int playerAtkMax = 13;int playerHp = 100;string playerIcon = "●";ConsoleColor playerColor = ConsoleColor.Green;//公主相关int princessX = 24;int princessY = 5;string princessIcon = "▲";ConsoleColor princessColor = ConsoleColor.Blue;char playerInput;#endregion#region 5 玩家战斗相关bool isFight = false;//游戏结束bool isOver=false;#endregion//游戏场景的死循环 专门用来 检测玩家的输入相关的循环while (true){//画出玩家Console.SetCursorPosition(playerX, playerY);Console.ForegroundColor= playerColor;Console.Write(playerIcon);//不停的输入wasd键 都可以控制它移动 //hp>0时,boss活着才绘制if (bossHp > 0){Console.SetCursorPosition(bossX, bossY);Console.ForegroundColor = bossColor;Console.Write(bossIcon);}#region 6 公主显示//公主显示else{Console.SetCursorPosition(princessX, princessY);Console.ForegroundColor = princessColor;Console.Write(princessIcon);}#endregionConsole.SetCursorPosition(playerX, playerY);Console.ForegroundColor= playerColor;Console.Write(playerIcon);//玩家输入playerInput = Console.ReadKey(true).KeyChar;if(isFight){//如果是战斗状态//只会处理j键if(playerInput=='j'||playerInput=='J'){//在这判断玩家或者怪物是否死亡,如果死了,继续后面的流程if(playerHp<=0){//游戏结束//游戏结束画面isOver = true;nowSceneID = 3;nowEndIndex = "很遗憾你被恶龙击败了";endSay = 1;break;}else if(bossHp<=0){//去营救公主//boss擦除Console.SetCursorPosition(bossX, bossY);Console.Write(" ");isFight = false;continue;}//玩家打怪物Random r= new Random();int atk = r.Next(playerAtkMin,playerAtkMax);bossHp -= atk;Console.ForegroundColor=ConsoleColor.Green;Console.SetCursorPosition(2, h - 7);Console.Write(" ");if (bossHp <= 0){//擦除Console.SetCursorPosition(2, h - 6);Console.Write(" ");Console.SetCursorPosition(2, h - 7);Console.Write(" ");Console.SetCursorPosition(2, h - 8);Console.Write(" ");Console.SetCursorPosition(2, h - 8);Console.Write("你发动了致命一击造成了{0},恭喜你击败了恶龙", atk);Console.ForegroundColor = ConsoleColor.Red;Console.SetCursorPosition(2, h - 7);Console.Write("快去营救公主!!!,按J键继续");}else{Console.SetCursorPosition(2, h - 7);Console.Write("勇士对恶龙造成了{0}点伤害,此时恶龙还有{1}血", atk, bossHp);//怪兽打玩家atk = r.Next(bossAtkMin, bossAtkMax);playerHp -= atk;Console.ForegroundColor = ConsoleColor.Red;Console.SetCursorPosition(2, h - 6);Console.Write(" ");//Boss打死玩家if(playerHp<=0){Console.SetCursorPosition(2, h - 6);Console.Write("很遗憾,你未能战胜恶龙");}else{Console.SetCursorPosition(2, h - 6);Console.Write("恶龙对勇士造成了{0}点伤害,此时你还有{1}血", atk, playerHp);}}}}else{#region 6 玩家移动相关//擦除Console.SetCursorPosition(playerX, playerY);Console.Write(" ");switch (playerInput){//贯穿case 'a':case 'A':playerX -= 2;if (playerX < 2)playerX = 2;else if (playerX == bossX && playerY == bossY && bossHp > 0)playerX += 2;else if (playerX == princessX && playerY == princessY && bossHp <= 0)playerX += 2;break;case 'w':case 'W':playerY--;if (playerY < 1)playerY++;else if (playerX == bossX && playerY == bossY && bossHp > 0)playerY++;else if (playerX == princessX && princessY == playerY && bossHp <= 0)playerY++;break;case 's':case 'S':playerY++;if (playerY > h - 10)playerY--;else if (playerX == bossX && playerY == bossY && bossHp > 0)playerY--;else if (playerX == princessX && playerY == princessY && bossHp <= 0)playerY--;break;case 'd':case 'D':playerX += 2;if (playerX > w - 4)playerX -= 2;else if (playerX == bossX && playerY == bossY && bossHp > 0)playerX -= 2;else if (playerX == princessX && playerY == princessY && bossHp <= 0)playerX -= 2;break;case 'j':case 'J'://开始战斗if (((playerX == bossX && playerY == bossY - 1) || (playerX == bossX && playerY == bossY + 1) ||(playerX == bossX - 2 && playerY == bossY) || (playerX == bossX + 2 && playerY == bossY)) && bossHp > 0){isFight = true;//可以开始战斗了Console.SetCursorPosition(2, h - 8);Console.ForegroundColor = ConsoleColor.White;Console.Write("你开始和恶龙战斗了,按J键继续");}//判断是否在公主身边else if (((playerX == princessX && playerY == princessY - 1) || (playerX == princessX && playerY == princessY + 1) ||(playerX == princessX - 2 && princessY == playerY) || (playerX == princessX + 2 && playerY == princessY)) && bossHp <= 0){ nowSceneID = 3;nowEndIndex = "恭喜你救出公主";//跳出while循环,回到主循环isOver = true;}break;}}if (isOver){//此时的break与while配对break;}} break;case 3:Console.Clear();int nowEndSelIndex = 0;while (true){bool EndQuitWhile = false;Console.SetCursorPosition(w / 2 - 4, 5);Console.ForegroundColor = ConsoleColor.White;Console.Write("GameOver");if(endSay==1)Console.SetCursorPosition(w / 2 - 8,7);elseConsole.SetCursorPosition(w / 2 - 6,7);Console.ForegroundColor = ConsoleColor.DarkRed;Console.Write(nowEndIndex);Console.ForegroundColor=nowEndSelIndex==0?ConsoleColor.Red:ConsoleColor.White;Console.SetCursorPosition(w / 2 - 4, 10);Console.Write("继续游戏");Console.ForegroundColor = nowEndSelIndex == 0 ? ConsoleColor.White : ConsoleColor.Red;Console.SetCursorPosition(w / 2 - 4, 12);Console.Write("退出游戏");char endInput=Console.ReadKey(true).KeyChar;switch (endInput){case 'w':case 'W':Console.Clear();nowEndSelIndex = 0;break;case 's':case 'S':Console.Clear();nowEndSelIndex = 1;break;case 'j':case 'J':if (nowEndSelIndex == 1)Environment.Exit(0);else{nowSceneID = 1;EndQuitWhile = true;}break;}if(EndQuitWhile){break;}}break;}}}}#endregion}#endregion
总结
- 好啦,到这里我们第一个C#实战游戏就结束了,之后还会继续更新别的游戏的教学的,敬请期待!!
- 为了防止大家找不到之前的内容,在这里附一下之前教学的链接
【C#项目实战】控制台游戏 勇士斗恶龙(2)——游戏场景的设置以及玩家战斗逻辑
【C#项目实战】控制台游戏勇士斗恶龙(1)——游戏初始设置以及开始界面
新人博主创作不易,如果感觉文章内容对你有所帮助的话不妨三连一下再走呗。你们的支持就是我更新的动力!!!
**(可莉请求你们三连支持一下博主!!!点击下方评论点赞收藏帮帮可莉吧)**
相关文章:
【C#实战】控制台游戏 勇士斗恶龙(3)——营救公主以及结束界面
君兮_的个人主页 即使走的再远,也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们,这里是君兮_,最近开始正式的步入学习游戏开发的正轨,想要通过写博客的方式来分享自己学到的知识和经验,这就是开设本专栏的目的。希望…...
RBTree模拟实现
一、概念 概念:红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或 Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍&a…...
AUTOSAR规范与ECU软件开发(实践篇)10.4、AP和CP
目录 1、AP和CP 1、AP和CP 自适应AUTOSAR平台(AP) 并不是传统经典AUTOSAR平台(CP) 的替代品, 不同的版本可同时存在于同一个车辆中, 两个ECU间可通过一些途径, 例如以太网, 将经典应用和自适应性应用进行无缝衔接。 简单而言, 两者的应用场景不太一样: 经典AUTOSAR平…...
css 命名规则
一个有规则的命名 会提高代码的可读性 一、命名规则说明: 1)、所有的命名最好都小写 2)、属性的值一定要用双引号(“”)括起来 3)、给图片加上alt标签 4)、尽量使用英文命名原则 5)、尽量不缩写࿰…...
正中优配:旅游餐饮板块走高,曲江文旅涨停,西安旅游等拉升
旅行餐饮板块7日盘中拉升走高,截至发稿,曲江文旅涨停,西安旅行涨超5%,君亭酒店、华天酒店、国旅联合、宋城演演艺等均上扬。 中国旅行研究院数据显现,今年暑期国内旅行人数达18.39亿人次,占全年国内旅行出…...
世界青岛中国海洋大学金秋悦读《乡村振兴战略下传统村落文化旅游设计》2023新学年许少辉八一新书
世界青岛中国海洋大学金秋悦读《乡村振兴战略下传统村落文化旅游设计》2023新学年许少辉八一新书...
15 | Spark SQL 的 SQL API 操作
SQL API:Spark SQL 允许使用标准 SQL 语句来查询和分析数据。用户可以通过 SparkSession 执行 SQL 查询,并将结果返回为 DataFrame。这使得熟悉 SQL 的用户能够方便地使用 Spark SQL 进行数据处理。 示例 1: 基本查询 执行基本的 SQL 查询,选择数据中的特定列并过滤数据。…...
为什么工作流中围绕XML做EDI报文数据解析/生成?
经常有客户问起,为什么在处理EDI文件时不一次到位,而需要使用多个端口来分次进行处理呢,是不是想要多占用几个端口好多卖钱呀? 实际上,在一开始的知行EDI产品中,功能还没有这么完善,当时只支持…...
C++的运算符重载介绍
所谓重载,就是赋予新的含义。函数重载(Function Overloading)可以让一个函数名有多种功能,在不同情况下进行不同的操作。运算符重载(Operator Overloading)也是一个道理,同一个运算符可以有不同的功能。 实际上,我们已经在不知不觉中使用了运算符重载。例如,+号可以对…...
C++vector的使用
vector的使用 1.vector的介绍2.vector的使用3.Member functions3.1构造函数3.2拷贝构造3.3赋值运算符重载 4.iterator5.capacity6.Element access7.增删查改7.1增7.2删7.3查7.4改 1.vector的介绍 1.vector是表示可变大小数组的序列容器. 2.vector也采用连续空间存储元素&#x…...
angular测试API
1.resetTestEnvironment 是 Angular 测试中的一个函数,用于重置测试环境。它通常与 initTestEnvironment 和 platformBrowserDynamicTesting 一起使用,以确保在多个测试套件之间正确清理和重置 Angular 测试环境。 这是 resetTestEnvironment 函数的形式…...
mfc 浮动窗口
参考 MFC模拟360悬浮窗加速球窗口...
【C++漂流记】函数的高级应用——函数默认参数、占位参数、重载
函数的高级应用,侧重介绍函数的默认参数、函数的占位参数、函数重载定义解释及使用。 文章目录 一、函数的默认参数二、函数的占位参数三、函数重载函数重载的注意事项 一、函数的默认参数 函数默认参数是指在函数声明时为参数提供一个默认值,这样在调…...
Java——》synchronized的原理
推荐链接: 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…...
CPU主频
CPU主频,也称为时钟频率,是指中央处理单元(CPU)的工作时钟的速度,通常以赫兹(Hz)为单位表示。它表示CPU每秒钟执行的时钟周期数。CPU主频是CPU性能的一个重要指标之一,但不是唯一的性…...
PHP8中查询数组中指定元素-PHP8知识详解
php是使用最广泛的web编程语言,数组是一个数据集合,数组是一种非常常用的数据类型。在操作数组时,有时我们需要查询数组中是否有某个指定元素。在实际的程序开发中,我们用到了下列方法来查询数组中指定的元素:使用arra…...
在Git中将本地分支推送到远程仓库
这里很明显 我git云端只有一个master分支 然后 我在本地创建了一个develop分支 然后 现在我想将他放在云端 首先 我们要执行 git checkout -b develop将本地切换到 develop 分支上 因为我这里已经选择的就是了 就不需要了 然后我们执行 git push origin develop这样 刷新云…...
【数据仓库基础(四)】数据仓库需求:基本需求和数据需求
文章目录 一. 基本需求1. 安全性2. 可访问性3. 自动化 三. 数据需求1. 准确性2.时效性3.历史可追溯性 从基本需求和数据需求两方面介绍对数据仓库系统的整体要求。 一. 基本需求 1. 安全性 数据仓库中含有机密和敏感的数据。为了能够使用这些数据&…...
C++类模板是一种通用的编程工具,可以创建可以适用于多种数据类型的类
C类模板是一种通用的编程工具,可以创建可以适用于多种数据类型的类。它们允许在类定义中使用参数,以便根据需要实例化具体的类。使用C类模板时,首先需要定义模板。模板定义的语法如下:cpp template <typename T> class MyCl…...
Vite和Webpack如何使用CDN包
为了精简打包输出的dist目录大小,我们可以引入CDN外部包的方式,来缩小打包的体积,加快打包速度。这里介绍Vite和Webpack中如何引入React CDN外部包。 一、Vite引入CDN包 1、安装插件 npm i vitejs/plugin-react-refresh vite-plugin-cdn-i…...
TOWE雷达光敏感应开关,让生活更智能、更安全
现代生活中,智能家居成为人们追求品质生活的必备之选。其中,照明控制的智能化已然成为一种趋势,传统的灯光开关需要人们手动操作,既不方便,有时候也会造成资源的过度浪费,而雷达光敏感应开关的出现…...
git:亲测体验rebase与merge
rebase与merge异同与最佳使用场景[1] 这个dev-cui分支从devlop分支切出后,一直都只有我一个人在开发&维护. 假如还有一位同事张三, 在devlop分支切出的分支dev-zhangsan上进行开发,他添加了一个glossary.md,而后进行了add & commit 此时项目开发完成,需要将两个分支合并…...
深度神经网络之BiseNet
标题:深度神经网络之BiseNet 1.模型介绍 BiseNet是一种用于实时语义分割的神经网络模型,由华为公司提出。它结合了全卷积网络和空间金字塔池化模块的优点,可以同时实现高效率和高精度的语义分割。 BiseNet的核心思想是将图像分为两个部分&…...
Ubantu终端常用命令、快捷键和基本操作
目录 前言 一、常用命令 二、常用快捷键 三、快捷键自定义设置 总结 前言 Ubantu终端常用命令和快捷键用于进行系统管理、文件操作、软件安装等常见使用场景。使用它们可以提高工作效率,简化操作流程,并进行更多的自定义配置和控制。同时,…...
9.5 校招 内推 面经
绿泡*泡: neituijunsir 交流裙 ,内推/实习/校招汇总表格 1、校招 | 航天五院2024届校园招聘启动 校招 | 航天五院2024届校园招聘启动 2、校招 | 中国电科五十五所2024届校园招聘正式启动 校招 | 中国电科五十五所2024届校园招聘正式启动 3、校招 | …...
计算机网络中的应用层和传输层(http/tcp)
目录 1、协议的通俗理解 1.1 理解协议 2.应用层 2.1 http协议 2.2 HTTP的方法 2.3 HTTP的状态码 2.4 HTTP常见Header 3、传输层 3.1 端口号 3.1.1 端口号范围划分 3.1.2 netstat 3.1.3 认识知名端口号(Well-Know Port Number) 3.2 UDP协议 3.2.1 UDP协议端格式 3…...
基于antd+vue2来实现一个简单的绘画流程图功能
简单流程图的实现(基于antdvue2的)代码很多哦~ 实现页面如下 1.简单操作如下 2.弹框中使用组件: <vfdref"vfd"style"background-color: white;":needShow"true":fieldNames"fieldNames"openUse…...
【小吉送书—第二期】阿里后端开发:抽象建模经典案例
文章目录 0.引言1.抽象思维2.软件世界中的抽象2.1 命名抽象2.2 分层抽象2.3 原则抽象 3. 经典抽象案例3.1 方案一:战术抽象,多快好省,跑步前进3.2 方案二:深入分析,透过表象,探寻本质 5. 推荐一本书&#x…...
深度学习常用的Python库(核心库、可视化、NLP、计算机视觉、深度学习等)
(1)核心库与统计:Numpy、Scipy、Pandas、StatsModels。 (2)可视化:Matplotlib、Seaborn、Plotly、Bokeh、Pydot、Scikit-learn、XGBoost/LightGBM/CatBoost、Eli5。 (3)深度学习&a…...
Android菜单(上下文菜单)(选项菜单)
菜单资源文件通常放置在res\menu目录下,在创建项目时,默认不自动创建menu目录,所以需要手动创建。Android Resource Directory->value menu 菜单资源根元素通常是<menu></menu>标记,子元素为<item></ite…...
网站哪家做的比较好/2022年搜索引擎优化指南
最近挺多童鞋问我如何配置Spring Cloud xxx组件的重试。本篇进行一个总结。 Spring Cloud中的重试机制应该说是比较混乱的,不同的版本有一定区别,实现也不大一样,好在Spring Cloud Camden之后已经基本稳定下来,Dalston中又进行了一…...
网站 横幅/百度收录站长工具
C 读作“C加加”,是“C Plus Plus”的简称。顾名思义,C 是在C语言的基础上增加新特性,玩出了新花样,所以叫“C Plus Plus”,就像 iPhone 7S 和 iPhone 7、Win10 和 Win7 的关系。从语法上看,C语言是 C 的一…...
wordpress 模版不能更新/爱站网影院
请问各位兄弟,在Linux中怎么看网卡是全双工工作还是半双工工作?mii-tool Linux:~ # mii-tooleth0: no linketh1: no autonegotiation, 100baseTx-HD, link okLinux:~ # Linux:~ # mii-tool -Fmii-tool: option requires an argument -- Fusage: mii-too…...
怎么样免费做网站/平台运营
原标题:LOL最强的钩子是谁的?不是机器人,也不是锤石,而是他!在LOL中,最具功能性的技能,应该就是那些钩人的技能了。这些有钩子技能的英雄,不管是开团,还是保人࿰…...
国内网页设计公司前十名/郑州seo优化服务
【Java基础-java反射】Java反射知识点(有这一篇就够了) 反射是框架设计的灵魂 (使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码)) 文章目录【Java基础-java反射】Java反射…...
win7用自己ip做网站/搜索百度下载安装
系列文章目录 🍑 Python语言基础—注释的作用及分类 🍑 Python语言基础—常用运算符总结 🍑 Python语言基础—定义变量与数据类型 🍑 Python语言基础—if判断和循环总结 🍑 Python语言基础—理解面向对象 🍑…...