c语言游戏实战(4):人生重开模拟器

 前言:

人生重开模拟器是前段时间非常火的一个小游戏,接下来我们将一起学习使用c语言写一个简易版的人生重开模拟器。 

网页版游戏:

人生重开模拟器 (ytecn.com)

1.实现一个简化版的人生重开模拟器

(1) 游戏开始的时候,设定初始属性:颜值,体质,智力,家境

(2)开始游戏,随机生成性别和出生点

(3)针对每一年生成一些人生的经历(依靠一定的随机因素+当前角色的属性)

2.打印菜单

void menu()
{printf("---------------------------------------------------\n");printf("|                                                 |\n");printf("|             欢迎来到人生重开模拟器              |\n");printf("|                    1.play                       |\n");printf("|                    2.exit                       |\n");printf("|                                                 |\n");printf("---------------------------------------------------\n");}
void game()
{}
int main()
{int input = 0;do{menu();printf("请选择>:");scanf("%d", &input);switch (input){case 1:game();break;case 0:printf("退出游戏\n");break;default:printf("选择错误,请重新选择\n");}} while (input);return 0;
}

3.设置初始属性

(1)颜值,体制,智力,家境,总和不能超过20,每一项取值都是1-10之间

printf("请设置初始属性(可用点数总数为 20)>:\n");
printf("请输入颜值(1-10):");
scanf("%d", &face);
printf("请输入体质(1-10):");
scanf("%d", &strong);
printf("请输入智力(1-10):");
scanf("%d", &iq);
printf("请输入家境(1-10):");
scanf("%d", &home);

(2)对用户输入的内容进行校验

可以写一个while循环,如果玩家输入正确结束循环,反之循环继续。这里我们可以取标记值count=1,如果玩家输入无误只需count-1=0就可以跳出循环了,反之count+1继续循环。

int face = 0, strong = 0, iq = 0, home = 0;
int count = 1;
while (count)
{printf("请设置初始属性(可用点数总数为 20)>:\n");printf("请输入颜值(1-10):");scanf("%d", &face);printf("请输入体质(1-10):");scanf("%d", &strong);printf("请输入智力(1-10):");scanf("%d", &iq);printf("请输入家境(1-10):");scanf("%d", &home);if (face > 10 || face < 1 || strong>10 || strong < 1 || iq>10 || iq < 1 || home>10 || home < 1){printf("属性点输入有误,请重新输入\a\n");count++;}else if (face + strong + iq + home > 20){printf("属性总和大于20,请重新输入\a\n");count++;}count--;
}
printf("初始属性输入完毕!\n");
printf("颜值:%d,体质:%d,智力:%d,家境:%d\n", face, strong, iq, home);

4.生成角色的性别

利用rand函数srand函数time函数生成一个随机数,就可以间接的随机生成一个性别了。

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
srand((unsigned int)time(NULL));
int sex = rand() % 2;
if (sex == 1)
{printf("你是个男孩.\n");
}
else
{printf("你是个女孩.\n");
}

5.设置角色的出生点

大致思路:

家境 10 第一档,带来一些属性的加成

家境 7-9 第二档,也会带来属性的加成

家境 4-6 第三档,少数属性加成

家境 1-3 第四档,会扣属性

每一个档又通过随机数分为三种情况。

int point = rand() % 3;
//第一档
if (home == 10)
{printf("你出生在帝都,你的父母是高管政要.\n");home += 1;iq += 1;face += 1;
}
//第二档
else if (home <= 9 && home >= 7)
{if (point == 1){printf("你出生在大城市,你的父母是公务员.\n");face += 2;}else if (point == 2){printf("你出生在大城市,你的父母是企业高管.\n");home += 2;}else{printf("你出生在大城市,你的父母是大学教授.\n");iq += 2;}
}
//第三档
else if (home <= 6 && home >= 4)
{if (point == 1){printf("你出生在三线城市,你的父母是医生.\n");strong += 1;}else if (point == 2){printf("你出生在镇上,你的父母是老师.\n");iq += 1;}else{printf("你出生在镇上,你的父母是个体户.\n");home += 1;}
}
//第四档
else
{if (point == 1){printf("你出生在农村,你的父母是辛苦劳作的农民.\n");strong += 1;face -= 2;}else if (point){printf("你出生在穷乡僻壤,你的父母是无业游民.\n");home -= 1;}else{printf("你出生在镇上,你的父母感情不和.\n");strong -= 1;}
}
printf("颜值:%d,体质:%d,智力:%d,家境:%d\n", face, strong, iq, home);

6.幼年阶段(1-10岁)

大致思路:

先使用for循环,按照年龄,从1循环到10

针对每一年,都生成一个随机数(1-3)

根据角色,心别,年龄,各种属性,触发各种事件,随机数会对事件的结果造成影响

这里的事件可能会对属性带来变更

每一年执行结束,都打印这一年发生的事件(让每年只发生一个事件)

也可能会遇到夭折的情况

代码难点:

1.利用结构题数组给数组赋值字符串:

其中利用了strcpy函数,需要使用#include<string.h>对它进行调用。

2.让一些事件重复执行

这里利用了switch语句,和while循环,以及rand函数srand函数time函数生成随机数。

因为这里只是打印1-10岁的事件,所以我在这里给count赋值了一个10然后count--,这样就可以循环打印1-10岁了,再然后我在这里利用了随机数,使其随机在我写好的事件中选一个事件打印。

3.打印的时候可以打印得慢一点

我在这里使用了Sleep函数,需要使用#include<windows.h>对它进行调用。

4.为了丰富故事内容,我在里面加入了类似于的新闻的事件,且这种事件与受人物属性影响的事件的不同点是:1.这个事件不受人物属性的影响,也不能影响人物属性,它的产生是随机的。2.这个事件只能执行(打印)一次,而受人物属性影响的事件可以执行多次。

这里的难点是如何让这种新闻性的事件不重复执行。我在这里用到了goto语句,先赋值一个元素为0,执行一次之后使其加1,然后通过if语句判断,如果赋值的那个元素已经不等于零,则执行goto语句,使其重新生成一个随机数,和重新执行switch语句。

	struct Event
{char eve[80];
};
void even(int face,int strong,int iq,int home,int sex,int point)
{int t = 0, o = 0, w = 0, r = 0, f = 0, v = 0, s = 0, e = 0, n = 0, g = 0;int count = 10;int age = 1;while (count){int a = rand((unsigned int)time(NULL)) % 10;struct Event arr[10];again:switch (a + 1){case 1:if (sex == 0 && home <= 3 && point == 1){strcpy(arr[0].eve, "你的家里人重男轻女观念非常严重,你被遗弃了!\n游戏结束!");printf("%s\n", arr[0].eve);count = 1;}else{if (o == 0){strcpy(arr[0].eve, "全球范围实现碳中和。");o++;}else{a = rand((unsigned int)time(NULL)) % 10;goto again;}}break;case 2:if (strong < 6 && point < 3){if (home >= 5){strcpy(arr[1].eve, "你生了一场病,在你的父母悉心照顾下,你康复了");strong += 1;home -= 1;}else{strcpy(arr[1].eve, "你生了一场病,你的父母没精力管你,你的身体状况更糟糕了");strong -= 1;}}else{if (w == 0){strcpy(arr[1].eve, "火星建立永久性人类居住基地。");w++;}else{a = rand((unsigned int)time(NULL)) % 10;goto again;}}break;case 3:if (face <= 4&& age >= 7){if (iq > 5){strcpy(arr[2].eve, "你长得太丑了,别的小朋友不喜欢你,你决定用学习填充自己");}else{if (sex == 1){strcpy(arr[2].eve, "你长得太丑了,别的小朋友不喜欢你,你和别的小朋友经常打架!");strong += 1;iq -= 1;}else{strcpy(arr[2].eve, "你长得太丑了,别的小朋友不喜欢你,你进常被被别的小朋友欺负");strong -= 1;}}}else{if (r == 0){strcpy(arr[2].eve, "全球范围内的无人驾驶汽车技术普及。");r++;}else{a = rand((unsigned int)time(NULL)) % 10;goto again;}}break;case 4:if (iq < 5){if (home >= 8 && age >= 6){strcpy(arr[3].eve, "你看起来傻傻的,你的父母把你送到更好的学校学习。");iq += 1;}else if (home >= 4 && home <= 7){if (sex == 1){strcpy(arr[3].eve, "你看起来傻傻的,你的父母鼓励你多运动,争取成为运动员。");strong += 1;}else{strcpy(arr[3].eve, "你看起来傻傻的,你的父母鼓励你多打扮自己。");face += 1;}}else{strcpy(arr[3].eve, "你看起来傻傻的,你的父母为此经常吵架。");if (point == 1)strong -= 1;else if (point == 2)iq -= 1;}}else{if (f == 0){strcpy(arr[3].eve, "人工智能与人类共同创造新文化。");f++;}else{a = rand((unsigned int)time(NULL)) % 10;goto again;}}break;case 5:{if (point == 1){strcpy(arr[4].eve, "你健康成长,你看起来更结实了。");strong += 1;}else if (point == 2){strcpy(arr[4].eve, "你健康成长,你看起来更好看了。");face += 1;}else{if (v == 0){strcpy(arr[4].eve, "人类开始探索宇宙深处,与外星文明建立联系。");v++;}else{a = rand((unsigned int)time(NULL)) % 10;goto again;}}}break;case 6:if (s == 0){strcpy(arr[5].eve, "人类成功实现核聚变能源的商业化应用,彻底解决能源危机问题。");s++;}else{a = rand((unsigned int)time(NULL)) % 10;goto again;}break;case 7:if (e == 0){strcpy(arr[6].eve, "虚拟实现技术发展到一个全新的高度,人们可以随时地沉浸到虚拟世界中。");e++;}else{a = rand((unsigned int)time(NULL)) % 10;goto again;}break;case 8:if (n == 0){strcpy(arr[7].eve, "全球范围内的高速交通网络初步建成,人们可以在几小时内穿越地球。");n++;}else{a = rand((unsigned int)time(NULL)) % 10;goto again;}break;case 9:if (g == 0){strcpy(arr[8].eve, "高考取消英语这门科目。");g++;}else{a = rand((unsigned int)time(NULL)) % 10;goto again;}break;case 10:if (t == 0){strcpy(arr[9].eve, "全球实现无国界教育,世界各地的学生都能接受优质的教育。");t++;}else{a = rand((unsigned int)time(NULL)) % 10;goto again;}break;}if (strong <= 0){printf("你今年 %d 岁\n", age);if (point == 1){printf("你染上了新冠病毒,没能抗住病毒的侵袭,你死了!\n");printf("游戏结束!\n");break;}else if (point == 2){printf("你得了白血病,不幸去世!\n");printf("游戏结束!\n");break;}else                          {printf("你吃东西的时候不小心被呛死了!\n");printf("游戏结束!\n");break;}}else if (iq <= 0){printf("你今年 %d 岁\n", age);if (point == 1){printf("你发高烧的时候,由于治疗不及时变成了一个智障!\n");printf("游戏结束!\n");break;}else if (point == 2){printf("你不小心喝了日本核污水变成了一个智障!\n");printf("游戏结束!\n");break;}else{printf("由于酒精中毒,你变成了一个智障\n");                                                                         printf("游戏结束!\n");break;}}printf("---------------------------------------------------------------\n");printf("你今年 %d 岁了\n", age);printf("%s\n", arr[a].eve);printf("颜值:%d,体质:%d,智力:%d,家境:%d\n", face, strong, iq, home);printf("---------------------------------------------------------------\n");Sleep(1000);age++;count--;}
}

7.其他年龄段:

 如果你感兴趣的话,你可以充分发挥你的想象力,将其他年龄段的事件完善完善,例如在某个年龄段觉醒了修仙天赋,从此脱离凡尘,步入仙境;再比如在某个年龄段接触了电子竞技,对游戏的天赋极高,成为了一个职业玩家。

完整代码:

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<windows.h>
#include<string.h>
void menu()
{printf("---------------------------------------------------\n");printf("|                                                 |\n");printf("|             欢迎来到人生重开模拟器              |\n");printf("|                    1.play                       |\n");printf("|                    2.exit                       |\n");printf("|                                                 |\n");printf("---------------------------------------------------\n");}
struct Event
{char eve[80];
};
void even(int face, int strong, int iq, int home, int sex, int point);
void game()
{srand((unsigned int)time(NULL));//输入初始属性int face = 0, strong = 0, iq = 0, home = 0;int count = 1;while (count){printf("请设置初始属性(可用点数总数为 20)>:\n");printf("请输入颜值(1-10):");scanf("%d", &face);printf("请输入体质(1-10):");scanf("%d", &strong);printf("请输入智力(1-10):");scanf("%d", &iq);printf("请输入家境(1-10):");scanf("%d", &home);if (face > 10 || face < 1 || strong>10 || strong < 1 || iq>10 || iq < 1 || home>10 || home < 1){printf("属性点输入有误,请重新输入\a\n");count++;}else if (face + strong + iq + home > 20){printf("属性总和大于20,请重新输入\a\n");count++;}count--;}printf("初始属性输入完毕!\n");printf("颜值:%d,体质:%d,智力:%d,家境:%d\n", face, strong, iq, home);//生成角色的性别int sex = rand() % 2;if (sex == 1){printf("你是个男孩.\n");}else{printf("你是个女孩.\n");}//设定角色的出生点int point = rand() % 3;//第一档if (home == 10){printf("你出生在帝都,你的父母是高管政要.\n");home += 1;iq += 1;face += 1;}//第二档else if (home <= 9 && home >= 7){if (point == 1){printf("你出生在大城市,你的父母是公务员.\n");face += 2;}else if (point == 2){printf("你出生在大城市,你的父母是企业高管.\n");home += 2;}else{printf("你出生在大城市,你的父母是大学教授.\n");iq += 2;}}//第三档else if (home <= 6 && home >= 4){if (point == 1){printf("你出生在三线城市,你的父母是医生.\n");strong += 1;}else if (point == 2){printf("你出生在镇上,你的父母是老师.\n");iq += 1;}else{printf("你出生在镇上,你的父母是个体户.\n");home += 1;}}//第四档else{if (point == 1){printf("你出生在农村,你的父母是辛苦劳作的农民.\n");strong += 1;face -= 2;}else if (point){printf("你出生在穷乡僻壤,你的父母是无业游民.\n");home -= 1;}else{printf("你出生在镇上,你的父母感情不和.\n");strong -= 1;}}printf("颜值:%d,体质:%d,智力:%d,家境:%d\n", face, strong, iq, home);even(face, strong, iq, home, sex, point);
}
int main()
{int input = 0;do{menu();printf("请选择>:");scanf("%d", &input);switch (input){case 1:game();break;case 0:printf("退出游戏\n");break;default:printf("选择错误,请重新选择\n");}} while (input);return 0;
}
void even(int face,int strong,int iq,int home,int sex,int point)
{int t = 0, o = 0, w = 0, r = 0, f = 0, v = 0, s = 0, e = 0, n = 0, g = 0;int count = 10;int age = 1;while (count){int a = rand((unsigned int)time(NULL)) % 10;struct Event arr[10];again:switch (a + 1){case 1:if (sex == 0 && home <= 3 && point == 1){strcpy(arr[0].eve, "你的家里人重男轻女观念非常严重,你被遗弃了!\n游戏结束!");printf("%s\n", arr[0].eve);count = 1;}else{if (o == 0){strcpy(arr[0].eve, "全球范围实现碳中和。");o++;}else{a = rand((unsigned int)time(NULL)) % 10;goto again;}}break;case 2:if (strong < 6 && point < 3){if (home >= 5){strcpy(arr[1].eve, "你生了一场病,在你的父母悉心照顾下,你康复了");strong += 1;home -= 1;}else{strcpy(arr[1].eve, "你生了一场病,你的父母没精力管你,你的身体状况更糟糕了");strong -= 1;}}else{if (w == 0){strcpy(arr[1].eve, "火星建立永久性人类居住基地。");w++;}else{a = rand((unsigned int)time(NULL)) % 10;goto again;}}break;case 3:if (face <= 4&& age >= 7){if (iq > 5){strcpy(arr[2].eve, "你长得太丑了,别的小朋友不喜欢你,你决定用学习填充自己");}else{if (sex == 1){strcpy(arr[2].eve, "你长得太丑了,别的小朋友不喜欢你,你和别的小朋友经常打架!");strong += 1;iq -= 1;}else{strcpy(arr[2].eve, "你长得太丑了,别的小朋友不喜欢你,你进常被被别的小朋友欺负");strong -= 1;}}}else{if (r == 0){strcpy(arr[2].eve, "全球范围内的无人驾驶汽车技术普及。");r++;}else{a = rand((unsigned int)time(NULL)) % 10;goto again;}}break;case 4:if (iq < 5){if (home >= 8 && age >= 6){strcpy(arr[3].eve, "你看起来傻傻的,你的父母把你送到更好的学校学习。");iq += 1;}else if (home >= 4 && home <= 7){if (sex == 1){strcpy(arr[3].eve, "你看起来傻傻的,你的父母鼓励你多运动,争取成为运动员。");strong += 1;}else{strcpy(arr[3].eve, "你看起来傻傻的,你的父母鼓励你多打扮自己。");face += 1;}}else{strcpy(arr[3].eve, "你看起来傻傻的,你的父母为此经常吵架。");if (point == 1)strong -= 1;else if (point == 2)iq -= 1;}}else{if (f == 0){strcpy(arr[3].eve, "人工智能与人类共同创造新文化。");f++;}else{a = rand((unsigned int)time(NULL)) % 10;goto again;}}break;case 5:{if (point == 1){strcpy(arr[4].eve, "你健康成长,你看起来更结实了。");strong += 1;}else if (point == 2){strcpy(arr[4].eve, "你健康成长,你看起来更好看了。");face += 1;}else{if (v == 0){strcpy(arr[4].eve, "人类开始探索宇宙深处,与外星文明建立联系。");v++;}else{a = rand((unsigned int)time(NULL)) % 10;goto again;}}}break;case 6:if (s == 0){strcpy(arr[5].eve, "人类成功实现核聚变能源的商业化应用,彻底解决能源危机问题。");s++;}else{a = rand((unsigned int)time(NULL)) % 10;goto again;}break;case 7:if (e == 0){strcpy(arr[6].eve, "虚拟实现技术发展到一个全新的高度,人们可以随时地沉浸到虚拟世界中。");e++;}else{a = rand((unsigned int)time(NULL)) % 10;goto again;}break;case 8:if (n == 0){strcpy(arr[7].eve, "全球范围内的高速交通网络初步建成,人们可以在几小时内穿越地球。");n++;}else{a = rand((unsigned int)time(NULL)) % 10;goto again;}break;case 9:if (g == 0){strcpy(arr[8].eve, "高考取消英语这门科目。");g++;}else{a = rand((unsigned int)time(NULL)) % 10;goto again;}break;case 10:if (t == 0){strcpy(arr[9].eve, "全球实现无国界教育,世界各地的学生都能接受优质的教育。");t++;}else{a = rand((unsigned int)time(NULL)) % 10;goto again;}break;}if (strong <= 0){printf("你今年 %d 岁\n", age);if (point == 1){printf("你染上了新冠病毒,没能抗住病毒的侵袭,你死了!\n");printf("游戏结束!\n");break;}else if (point == 2){printf("你得了白血病,不幸去世!\n");printf("游戏结束!\n");break;}else                          {printf("你吃东西的时候不小心被呛死了!\n");printf("游戏结束!\n");break;}}else if (iq <= 0){printf("你今年 %d 岁\n", age);if (point == 1){printf("你发高烧的时候,由于治疗不及时变成了一个智障!\n");printf("游戏结束!\n");break;}else if (point == 2){printf("你不小心喝了日本核污水变成了一个智障!\n");printf("游戏结束!\n");break;}else{printf("由于酒精中毒,你变成了一个智障\n");                                                                         printf("游戏结束!\n");break;}}printf("---------------------------------------------------------------\n");printf("你今年 %d 岁了\n", age);printf("%s\n", arr[a].eve);printf("颜值:%d,体质:%d,智力:%d,家境:%d\n", face, strong, iq, home);printf("---------------------------------------------------------------\n");Sleep(1000);age++;count--;}
}

游戏截图: 

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

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

相关文章

Transformer实战-系列教程10:SwinTransformer 源码解读3(SwinTransformerBlock类)

&#x1f6a9;&#x1f6a9;&#x1f6a9;Transformer实战-系列教程总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 点我下载源码 SwinTransformer 算法原理 SwinTransformer 源码解读1&#xff08;项目配置/SwinTr…

PLC在物联网中位置—承上启下,与上位机下位机的关联。

谈到物联网&#xff0c;就绕不开PLC&#xff0c;本文着重介绍PLC的定义、与单片机的区分&#xff0c;价值、物联网中的位置&#xff0c;以及和上位机、下位机的关联&#xff0c;让友友们对PLC有个全面的认知。 一、什么是PLC PLC是可编程逻辑控制器&#xff08;Programmable L…

UI自动刷新大法:DataBinding数据绑定

之前我们讲了DataBinding在Activity、Fragment、RecyclerView中的基础使用&#xff0c;而那些常规使用方法里&#xff0c;每当绑定的变量发生数据变化时&#xff0c;都需要ViewDataBinding重新设值才会刷新对应UI。而DataBinding通过内部实现的观察者模式来进行自动刷新UI&…

go消息队列RabbitMQ - 订阅模式-direct

1.发布订阅 在Fanout模式中&#xff0c;一条消息&#xff0c;会被所有订阅的队列都消费。但是&#xff0c;在某些场景下&#xff0c;我们希望不同的消息被不同的队列消费。这时就要用到Direct类型的Exchange。 在Direct模型下&#xff1a; 队列与交换机的绑定&#xff0c;不能…

第 384 场 LeetCode 周赛题解

A 修改矩阵 模拟 class Solution { public:vector<vector<int>> modifiedMatrix(vector<vector<int>> &matrix) {int m matrix.size(), n matrix[0].size();vector<int> mx(n, INT32_MIN);for (int i 0; i < m; i)for (int j 0; j &l…

Java微服务学习Day1

文章目录 认识微服务服务拆分及远程调用服务拆分服务远程调用提供者与消费者 Eureka注册中心介绍构建EurekaServer注册user-serviceorder-service完成服务拉取 Ribbon负载均衡介绍原理策略饥饿加载 Nacos注册中心介绍配置分级存储负载均衡环境隔离nacos注册中心原理 认识微服务…

ChatGPT学习大纲

引言 在2023年2月份左右开始使用ChatGPT时&#xff0c;就被它强大的理解能力和应答效果所折服&#xff0c;这期间一直在断断续续的学习和使用&#xff0c;也没形成一个完整的学习过程&#xff0c;最近刚好有空&#xff0c;就寻思着好好再学习总结一下&#xff0c;故写出了ChatG…

Python : 使用python实现学生管理系统的功能,详细注释

一、学生管理系统 学生描述&#xff1a;姓名、年龄、成绩 学生管理系统功能&#xff1a;添加学生信息、删除学生信息、根据姓名修改学生信息、根据姓名查询学生信息、显示所有学生信息、退出系统 二、代码说明 1. 将每一个学生的信息放一个元组中&#xff0c;再把元组添加到列表…

java中使用Lambda表达式实现参数化方法

Lambda表达式实现参数化方法说明 Lambda表达式在Java中是一种简洁、函数式的方式来表示匿名函数。它们特别适用于那些需要一个函数作为参数的方法&#xff0c;即函数式接口。参数化方法&#xff08;通常指的是泛型方法&#xff09;是那些可以接受类型参数的方法&#xff0c;这…

2.3 Verilog 数据类型

Verilog 最常用的 2 种数据类型就是线网&#xff08;wire&#xff09;与寄存器&#xff08;reg&#xff09;&#xff0c;其余类型可以理解为这两种数据类型的扩展或辅助。 线网&#xff08;wire&#xff09; wire 类型表示硬件单元之间的物理连线&#xff0c;由其连接的器件输…

单片机基础入门:简单介绍51单片机的工作原理

在电子技术领域&#xff0c;单片机是实现智能化控制不可或缺的关键元件。它们集成了许多功能于一身&#xff0c;成为了各种电子系统的心脏。为了更好地理解单片机如何工作&#xff0c;本文将重点介绍51单片机的基本组成和工作原理。 51单片机是一种广泛使用的微控制器&#xf…

Android 车载应用之快速入门

一、Android Automotive OS 概览 车载 Android 系统也被称为 Android Automotive OS,是对原始 Android 系统的一个功能扩充版本。与手机系统一样,Android Automotive OS 源代码完全开放,第三方供应商和汽车制造商可以官方源码的基础上自行开发和拓展,无论是编程语言还是各…

CI/CD到底是啥?持续集成/持续部署概念解释

前言 大家好&#xff0c;我是chowley&#xff0c;日常工作中&#xff0c;我每天都在接触CI/CD&#xff0c;今天就给出我心中的答案。 在现代软件开发中&#xff0c;持续集成&#xff08;Continuous Integration&#xff0c;CI&#xff09;和持续部署&#xff08;Continuous D…

【UE 求职】学了虚幻引擎可以应聘哪些岗位?

目录 1 领域1.1 游戏开发领域1.2 影视和动画制作1.3 建筑和工程可视化1.4 模拟和训练1.5 其他领域 2 如何做好一份简历1. 明确简历目标2. 突出UE5相关技能3. 展示相关项目经验4. 教育背景5. 专业经验6. 软技能7. 证书和奖项8. 定制化和校对 &#x1f64b;‍♂️ 作者&#xff1…

Day41- 动态规划part09

一、打家劫舍 题目一&#xff1a;198. 打家劫舍 198. 打家劫舍 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯…

使用PHPStudy搭建本地web网站并实现任意浏览器公网访问

文章目录 [toc]使用工具1. 本地搭建web网站1.1 下载phpstudy后解压并安装1.2 打开默认站点&#xff0c;测试1.3 下载静态演示站点1.4 打开站点根目录1.5 复制演示站点到站网根目录1.6 在浏览器中&#xff0c;查看演示效果。 2. 将本地web网站发布到公网2.1 安装cpolar内网穿透2…

springcloud分布式架构网上商城源码和论文

首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。本项…

Unity Meta Quest MR 开发(四):使用 Scene API 和 Depth API 实现深度识别和环境遮挡

文章目录 &#x1f4d5;教程说明&#x1f4d5;Scene API 实现遮挡&#x1f4d5;Scene API 实现遮挡的缺点&#x1f4d5;Depth API 实现遮挡⭐导入 Depth API⭐修改环境配置⭐添加 EnvironmentDepthOcclusion 预制体⭐给物体替换遮挡 Shader⭐取消现实手部的遮挡效果 此教程相关…

从Unity到Three.js(模型文件加载)

模型加载功能探索&#xff0c;用blender导出了个glb格式的cube进行的测试。 初接触js语法&#xff0c;回调注册的地方直接使用匿名函数总感觉脑子跟不上&#xff0c;反应不过来&#xff0c;就把加载后的回调简单封装了下&#xff0c; 官方文档是直接使用的匿名函数。 另外看官方…

带你了解软件系统架构的演变详解

在这个数字时代&#xff0c;我们身边无处不在的软件系统扮演着无比重要的角色。你曾想过背后那复杂的系统是如何演变而来的吗&#xff1f;本文将深入浅出&#xff0c;以小白的视角&#xff0c;描绘软件系统架构的绚丽蜕变历程&#xff0c;让我们一同踏上这场感性而技术的冒险之…