C语言钥匙迷宫2.0

news2024/9/23 19:17:52

目录

  • 开头
  • 程序
  • 程序的流程图
  • 程序游玩的效果
  • 结尾

开头

大家好,我叫这是我58。废话不多说,咱们直接开始。

程序

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include <Windows.h>
enum color {
	Y,
	B,
	R
};
typedef struct Key {
	enum color co;
	int ix;
	int iy;
}Key;
typedef struct Door {
	enum color co;
	int ix;
	int iy;
}Door;
void printmaze(char strmaze[11][11], int* apkeys, Key(*k)[12], Door(*d)[29]) {
	const char sarr[3][5] = { "33","36","31;1" };
	Key* ka = *k;
	Door* da = *d;
	const Key* const kb = *k + 11;
	const Door* const db = *d + 28;
	int ia = 0;
	int ib = 0;
	char stc[5] = "";
	for (ia = 0; ia < 11; ia++) {
		for (ib = 0; ib < 11; ib++) {
			while (ka->ix <= ia) {
				if (ka->iy == ib && ka->ix == ia) {
					strcpy(stc, sarr[ka->co]);
				}
				if (ka == kb) { 
					break; 
				}
				ka++;
			}
			while (da->ix <= ia) {
				if (da->iy == ib && da->ix == ia) {
					strcpy(stc, sarr[da->co]);
				}
				if (da == db) {
					break;
				}
				da++;
			}
			printf("\033[%sm%c\033[0m", 'G' == strmaze[ia][ib] ? "32;1" : !!strcmp(stc,"33") + !!strcmp(stc,"36") + !!strcmp(stc,"31;1") == 2 && 'P' != strmaze[ia][ib] && '*' != strmaze[ia][ib] ? stc : "0", strmaze[ia][ib]);
			ka = *k;
			da = *d;
			strcpy(stc, "");
		}
		printf("|\n");
	}
	printf("-----------@\n\033[33m黄钥匙*%d\033[0m\n\033[36m蓝钥匙*%d\033[0m\n\033[31;1m红钥匙*%d\033[0m\n", apkeys[0], apkeys[1], apkeys[2]);
}
int main() {
	int apkeys[3] = { 0 };
	Key k[12] = { {R,0,5},{Y,0,6},{B,0,8},{R,2,3},{B,3,4},{B,3,6},{Y,4,3},{R,4,7},{Y,6,3},{Y,6,4},{Y,7,1},{Y,9,0} };
	Door d[29] = { {B,0,7}, {Y,0,10}, {Y,1,0}, {B,1,1}, {R,1,3}, {B,1,6}, {Y,1,9}, {B,1,10}, {B,2,9}, {Y,3,0}, {Y,4,8}, {Y,5,0}, {Y,7,7}, {Y,7,8}, {B,7,9}, {Y,7,10}, {Y,8,0}, {R,8,5}, {Y,8,7}, {R,8,8}, {B,8,9}, {B,8,10}, {B,9,7}, {B,9,8}, {R,9,9}, {R,9,10}, {Y,10,7}, {B,10,8}, {R,10,9} };
	const Key ka[12] = { {R,0,5},{Y,0,6},{B,0,8},{R,2,3},{B,3,4},{B,3,6},{Y,4,3},{R,4,7},{Y,6,3},{Y,6,4},{Y,7,1},{Y,9,0} };
	const Door da[29]= { {B,0,7}, {Y,0,10}, {Y,1,0}, {B,1,1}, {R,1,3}, {B,1,6}, {Y,1,9}, {B,1,10}, {B,2,9}, {Y,3,0}, {Y,4,8}, {Y,5,0}, {Y,7,7}, {Y,7,8}, {B,7,9}, {Y,7,10}, {Y,8,0}, {R,8,5}, {Y,8,7}, {R,8,8}, {B,8,9}, {B,8,10}, {B,9,7}, {B,9,8}, {R,9,9}, {R,9,10}, {Y,10,7}, {B,10,8}, {R,10,9} };
	int i = 0;
	int ia = 0;
	char ch = 0;
	char strmaze[11][11] = {
		' ',' ',' ',' ','*','+','+','#','+',' ','#',
		'#','#','*','#','*','*','#',' ',' ','#','#',
		' ',' ','*','+',' ','*','*','*','*','#',' ',
		'#',' ','*',' ','+','*','+',' ','*','*',' ',
		' ',' ','*','+',' ','*',' ','+','#',' ',' ',
		'#','*','*','*','*','*','*','*','*','*',' ',
		' ',' ','*','+','+','*',' ',' ',' ',' ',' ',
		' ','+','*','*',' ','*',' ','#','#','#','#',
		'#',' ',' ','*',' ','#',' ','#','#','#','#',
		'+','*',' ','*','*',' ',' ','#','#','#','#',
		'P','*',' ',' ',' ',' ',' ','#','#','#','G'
	};
	const char strmz[] = "    *++#+ ###*#**#  ##  *+ ****# # * +*+ **   *+ * +#  #*********   *++*      +** * #####  * # ####+* **  ####P*     ###G";
	char* cp = &strmaze[10][0];
	printf("欢迎你来玩这个\033[33m钥\033[36m匙\033[31;1m迷宫\033[0m,这个迷宫的规则与50层魔塔的规则基本无异,只不过输入“r”可以使你重新开始这个游戏,而且,这三种颜色的“+”:“\033[33m+\033[0m”“\033[36m+\033[0m”“\033[31;1m+\033[0m”分别代表了50层魔塔里的\033[33m黄钥匙\033[0m,\033[36m蓝钥匙\033[0m和\033[31;1m红钥匙\033[0m,并且那三种颜色的“#”:“\033[33m#\033[0m”“\033[36m#\033[0m”“\033[31;1m#\033[0m”分别代表了50层魔塔里的\033[33m黄门\033[0m,\033[36m蓝门\033[0m和\033[31;1m红门\033[0m,你明白了吗?");
	Sleep(6600);
	system("cls");
	while ('G' == strmaze[10][10]) {
		int ix = (cp - &strmaze[0][0]) / 11;
		int iy = (cp - &strmaze[0][0]) % 11;
		for (ia = 0; ia < 12; ia++) {
			if (k[ia].ix == ix && k[ia].iy == iy && -2 != k[ia].ix + k[ia].iy) {
				apkeys[k[ia].co]++;
				k[ia].ix = -1;
				k[ia].iy = -1;
			}
		}
		printmaze(strmaze, apkeys, &k, &d);
		scanf("%c", &ch);
		while ('\n' != getchar()) {
			;
		}
		*cp = ' ';
		switch (ch) {
		case 'w':
			for (i = 0; i < 11; i++) {
				if (cp == &strmaze[0][i]) {
					break;
				}
			}
			(11 == i && '*' != *(cp - 11) && '#' != *(cp - 11)) && (cp -= 11);
			for (ia = 0; ia < 29; ia++) {
				if (apkeys[d[ia].co] > 0 && -1 != d[ia].ix && -1 != d[ia].iy && d[ia].ix == ix - 1 && d[ia].iy == iy) {
					strmaze[d[ia].ix][d[ia].iy] = ' ';
					apkeys[d[ia].co]--;
					d[ia].ix = -1;
					d[ia].iy = -1;
				}
			}
			break;
		case 'a':
			for (i = 0; i < 11; i++) {
				if (cp == &strmaze[i][0]) {
					break;
				}
			}
			(11 == i && '*' != *(cp - 1) && '#' != *(cp - 1)) && cp--;
			for (ia = 0; ia < 29; ia++) {
				if (apkeys[d[ia].co] > 0 && -1 != d[ia].ix && -1 != d[ia].iy && d[ia].ix == ix && d[ia].iy == iy - 1) {
					strmaze[d[ia].ix][d[ia].iy] = ' ';
					apkeys[d[ia].co]--;
					d[ia].ix = -1;
					d[ia].iy = -1;
				}
			}
			break;
		case 's':
			for (i = 0; i < 11; i++) {
				if (cp == &strmaze[10][i]) {
					break;
				}
			}
			(11 == i && '*' != *(cp + 11) && '#' != *(cp + 11)) && (cp += 11);
			for (ia = 0; ia < 29; ia++) {
				if (apkeys[d[ia].co] > 0 && -1 != d[ia].ix && -1 != d[ia].iy && d[ia].ix == ix + 1 && d[ia].iy == iy) {
					strmaze[d[ia].ix][d[ia].iy] = ' ';
					apkeys[d[ia].co]--;
					d[ia].ix = -1;
					d[ia].iy = -1;
				}
			}
			break;
		case 'd':
			for (i = 0; i < 11; i++) {
				if (cp == &strmaze[i][10]) {
					break;
				}
			}
			(11 == i && '*' != *(cp + 1) && '#' != *(cp + 1)) && cp++;
			for (ia = 0; ia < 29; ia++) {
				if (apkeys[d[ia].co] > 0 && -1 != d[ia].ix && -1 != d[ia].iy && d[ia].ix == ix && d[ia].iy == iy + 1) {
					strmaze[d[ia].ix][d[ia].iy] = ' ';
					apkeys[d[ia].co]--;
					d[ia].ix = -1;
					d[ia].iy = -1;
				}
			}
			break;
		case 'r':
			for (ia = 0; ia < 12; ia++) {
				k[ia] = ka[ia];
				d[ia] = da[ia];
			}
			for (; ia < 29; ia++) {
				d[ia] = da[ia];
			}
			for (i = 0; i < 121; i++) {
				strmaze[0][i] = strmz[i];
			}
			cp = &strmaze[10][0];
			for (i = 0; i < 3; i++) {
				apkeys[i] = 0;
			}
			break;
		default:
			break;
		}
		*cp = 'P';
		system("cls");
	}
	system("color 0A");
	printf("恭喜你,你赢了\n");
	return 0;
}

程序的流程图

等待6.6秒,等待好后就清屏
是(break)
否(break)
清屏
是(break)
否(break)
是(break)
否(break)
是(break)
否(break)
否(break)
否(break)
开始
把宏_CRT_SECURE_NO_WARNINGS定义为1
导入stdio.h
导入string.h
导入Windows.h
创建枚举color,并把枚举color里的“Y”“B”“R”分别初始化为0,1和2
创建一个Key结构体,里面有类型为枚举color的co,整型ix和整型iy,并去掉结构体Key中的struct关键字
创建一个Door结构体,里面有类型为枚举color的co,整型ix和整型iy,并去掉结构体Door中的struct关键字
定义printmaze函数
把有三个整型的整型数组apkeys都初始化为0
把有12个结构体Key的变量的数组k分别初始化为{R,0,5},{Y,0,6},{B,0,8},{R,2,3},{B,3,4},{B,3,6},{Y,4,3},{R,4,7},{Y,6,3},{Y,6,4},{Y,7,1},{Y,9,0}
把有29个结构体Door的变量的数组d分别初始化为{B,0,7}, {Y,0,10}, {Y,1,0}, {B,1,1}, {R,1,3}, {B,1,6}, {Y,1,9}, {B,1,10}, {B,2,9}, {Y,3,0}, {Y,4,8}, {Y,5,0}, {Y,7,7}, {Y,7,8}, {B,7,9}, {Y,7,10}, {Y,8,0}, {R,8,5}, {Y,8,7}, {R,8,8}, {B,8,9}, {B,8,10}, {B,9,7}, {B,9,8}, {R,9,9}, {R,9,10}, {Y,10,7}, {B,10,8}, {R,10,9}
把有12个结构体Key的变量的常量数组ka也分别初始化为{R,0,5},{Y,0,6},{B,0,8},{R,2,3},{B,3,4},{B,3,6},{Y,4,3},{R,4,7},{Y,6,3},{Y,6,4},{Y,7,1},{Y,9,0}
把有29个结构体Door的变量的常量数组da也分别初始化为{B,0,7}, {Y,0,10}, {Y,1,0}, {B,1,1}, {R,1,3}, {B,1,6}, {Y,1,9}, {B,1,10}, {B,2,9}, {Y,3,0}, {Y,4,8}, {Y,5,0}, {Y,7,7}, {Y,7,8}, {B,7,9}, {Y,7,10}, {Y,8,0}, {R,8,5}, {Y,8,7}, {R,8,8}, {B,8,9}, {B,8,10}, {B,9,7}, {B,9,8}, {R,9,9}, {R,9,10}, {Y,10,7}, {B,10,8}, {R,10,9}
定义整型i为0
定义整型ia为0
定义字符ch为0
把有11行11列的二维字符数组strmaze初始化为左边指向的图片
把常量字符串strmz初始化为“ *++#+ ###*#**# ## *+ ****# # * +*+ ** *+ * +# #********* *++* +** * ##### * # ####+* ** ####P* ###G”
把字符指针cp设为二维字符数组strmaze的第10行第0列的地址
输出“欢迎你来玩这个\​033[33m钥\​033[36m匙\​033[31;1m迷宫\​033[0m,这个迷宫的规则与50层魔塔的规则基本无异,而你只需要到达终点“\​033[32;1mG\​033[0m”就可以了,只不过输入“r”可以使你重新开始这个游戏,而且,这三种颜色的“+”:“\​033[33m+\​033[0m”“\​033[36m+\​033[0m”“\​033[31;1m+\​033[0m”分别代表了50层魔塔里的\​033[33m黄钥匙\​033[0m,\​033[36m蓝钥匙\​033[0m和\​033[31;1m红钥匙\​033[0m,并且那三种颜色的“#”:“\​033[33m#\​033[0m”“\​033[36m#\​033[0m”“\​033[31;1m#\​033[0m”分别代表了50层魔塔里的\​033[33m黄门\​033[0m,\​033[36m蓝门\​033[0m和\​033[31;1m红门\​033[0m,你明白了吗?”
'G' == strmaze[10][10]?
定义整型ix为cp与二维字符数组strmaze的第0行第0列的地址的差除以11的结果
定义整型iy为cp与二维字符数组strmaze的第0行第0列的地址的差模11的结果
设i为0
ia < 12?
k[ia].ix == ix && k[ia].iy == iy && -2 != k[ia].ix + k[ia].iy?
把apkeys的第k的第ia项的成员变量co的值项自增1
k的第ia项的成员变量ix设为-1
k的第ia项的成员变量iy设为-1
ia自增1
执行printmaze函数,参数有二维字符数组strmaze,apkeys,结构体Key的变量k的地址和结构体Door的变量d的地址
把ch设为你输入的字符
'\n' != getchar()?
把解引用的cp设为空格
'w' == ch?
设i为0
i < 11?
cp == &strmaze[0][i]?
11 == i && '*' != *(cp - 11) && '#' != *(cp - 11)?
把cp向左移动11位
设ia为0
ia < 29?
apkeys[d[ia].co] > 0 && -1 != d[ia].ix && -1 != d[ia].iy && d[ia].ix == ix - 1 && d[ia].iy == iy?
把二维字符数组strmaze的第d的ia项的成员变量ix的值行第d的第ia项的成员变量iy的值列设为空格
apkeys的第d的第ia项的成员变量co的值项自减1
把d的第ia项的成员变量ix设为-1
把d的第ia项的成员变量iy也设为-1
ia自增1
把解引用的cp设为字符“P”
把窗口的背景色设为黑色,前景色设为淡绿色
输出“恭喜你,你赢了\n”
结束
'a' == ch?
设i为0
i < 11?
cp == &strmaze[i][0]?
11 == i && '*' != *(cp - 1) && '#' != *(cp - 1)?
把cp向左移动一位
设ia为0
ia < 29?
apkeys[d[ia].co] > 0 && -1 != d[ia].ix && -1 != d[ia].iy && d[ia].ix == ix && d[ia].iy == iy - 1?
把二维字符数组strmaze的第d的ia项的成员变量ix的值行第d的第ia项的成员变量iy的值列设为空格
apkeys的第d的第ia项的成员变量co的值项自减1
把d的第ia项的成员变量ix设为-1
把d的第ia项的成员变量iy也设为-1
i自增1
's' == ch?
设i为0
i < 11?
cp == &strmaze[10][i]?
11 == i && '*' != *(cp + 11) && '#' != *(cp + 11)?
把cp向右移动11位
设ia为0
ia < 29?
apkeys[d[ia].co] > 0 && -1 != d[ia].ix && -1 != d[ia].iy && d[ia].ix == ix + 1 && d[ia].iy == iy?
把二维字符数组strmaze的第d的ia项的成员变量ix的值行第d的第ia项的成员变量iy的值列设为空格
apkeys的第d的第ia项的成员变量co的值项自减1
把d的第ia项的成员变量ix设为-1
把d的第ia项的成员变量iy也设为-1
ia自增1
'd' == ch?
设i为0
i < 11?
cp == &strmaze[i][10]?
11 == i && '*' != *(cp + 1) && '#' != *(cp + 1)?
把cp向右移动一位
设ia为0
ia < 29?
apkeys[d[ia].co] > 0 && -1 != d[ia].ix && -1 != d[ia].iy && d[ia].ix == ix && d[ia].iy == iy + 1?
把二维字符数组strmaze的第d的ia项的成员变量ix的值行第d的第ia项的成员变量iy的值列设为空格
apkeys的第d的第ia项的成员变量co的值项自减1
把d的第ia项的成员变量ix设为-1
把d的第ia项的成员变量iy也设为-1
ia自增1
'r' == ch?
设i为0
ia < 12?
把k的第ia项设为ka的第ia项
把d的第ia项设为da的第ia项
ia自增1
ia < 29?
把d的第ia项设为da的第ia项
ia自增1
设i为0
i < 121?
把二维字符数组strmaze第0行第i列设为字符串strmz的第i项
i自增1
把cp设为二维数组strmaze第10行第0列的地址
设i为0
i < 3?
把apkeys的第i项设为0
i自增1
i自增1
i自增1
i自增1
i自增1
printfmaze函数
是(break)
是(break)
结束
开始
把有3行5列二维常量字符串数组sarr分别初始化为“33”“36”和“31;1”
定义结构体Key指针ka为解引用的k
定义结构体Door指针da为解引用的d
定义结构体Key常量指针常量kb为解引用的k加上11的结果
定义结构体Door常量指针常量db为解引用的d加上28的结果
定义整型ia为0
定义整型ib为0
把有5个字符的字符串stc初始化为空字符串
设ia为0
ia < 11?
设ib为0
ib < 11?
ka->ix <= ia?
ka->iy == ib && ka->ix == ia?
把sarr的第ka指向的成员变量co的值项拷贝到字符串stc里面去
ka == kb?
da->ix <= ia?
da->iy == ib && da->ix == ia?
把sarr的第da指向的成员变量co的值项拷贝到字符串stc里面去
da == db?
输出“\​033[%sm%c\​033[0m”(如果字符“G”为二维字符数组strmaze第ia行第ib列的元素,那么就代“32;1”,否则如果stc是否与“33”相等的逻辑值加上stc是否与“36”相等的逻辑值加上stc是否与“32;1”相等的逻辑值的和为2,并且字符“P”不为二维字符数组strmaze第ia行第ib列的元素,而且字符“*”不为二维字符数组strmaze第ia行第ib列的元素,那么就代字符串stc,否则代“0”,“%c”则代二维字符数组strmaze的第ia行第ib列的元素)
把ka设为解引用的k
把da设为解引用的d
把空字符串拷贝到字符串stc里面去
ib自增1
输出“|\​n”
ia自增1
输出“-----------@\​n\​033[33m黄钥匙*%d\​033[0m\​n\​033[36m蓝钥匙*%d\​033[0m\​n\​033[31;1m红钥匙*%d\​033[0m\​n”(三个“%d”分别代apkeys的第0项,apkeys的第1项和apkeys的第2项)
把ka向右移动一位
把da向右移动一位

程序游玩的效果

钥匙迷宫2.0

结尾

在你看到这里之后,可以评论来互动一下我哦。

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

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

相关文章

Linux 开机自动挂载共享文件设置

选择一个要共享的文件 点击确定 -> 确定 启动虚拟机 执行下面的命令 /YumSource 是我选择的共享文件夹&#xff0c;自行替换自已选择的文件夹 mkdir -p /mnt/hgfs cat >> /etc/fstab << EOF .host:/YumSource /mnt/hgfs fuse.vmhgfs-fuse allow_other defaul…

探索生成式AI在文档处理中的应用:llm Whisperer

在现代科技的快速发展中&#xff0c;生成式人工智能&#xff08;Generative AI&#xff09;正逐渐改变我们处理文档的方式。虽然许多生成式AI模型在处理文档时表现出色&#xff0c;但面对复杂文档时&#xff0c;大多数开源模型仍显得力不从心。甚至连GPT-4在某些情况下也会遇到…

性能测试-性能监控分析与调优(三)《实战-CPU瓶颈分析、内存问题分析、gc、tomcat性能调优,数据库监控-redis\mysql》

性能监控 使用命令监控 cpu瓶颈分析 top命令 在进行性能测试时使用top命令&#xff0c;界面如下 上图可以看出 - CPU 概况区&#xff1a; %Cpu(s): - us&#xff08;用户进程占用CPU的百分比&#xff09;, 和 sy&#xff08;系统进程占用CPU的百分比&#xff09; 的数…

【16】暴力递归改dp(上)

目录 一.机器人问题 二.最少硬币问题 一.机器人问题 题目&#xff1a;N表示位置1-N&#xff0c;S表示机器人开始位置&#xff0c;e表示结尾位置&#xff0c;k表示机器人必须走k步&#xff0c;问一共有多少种方法&#xff1f; 情况&#xff1a; 如果第1个位置&#xff0c;下次…

交通感知与车路协同系统-计算机毕设Java|springboot实战项目

&#x1f34a;作者&#xff1a;计算机毕设残哥 &#x1f34a;简介&#xff1a;毕业后就一直专业从事计算机软件程序开发&#xff0c;至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长&#xff1a;按照需求定制化开发项目、 源…

PHP—MySQL(PHP连接数据库)

目录 【学习目标、重难点知识】 【学习目标】 【重难点知识】 二、PHP 和 MySQL 的合作方式 三、PHP连接数据库 3.1、MySQLi拓展 ​编辑 3.2、建立与数据库的连接 &#xff08;4&#xff09;创建SQL语句 &#xff08;5&#xff09;获取结果 &#xff08;6&#xff09…

STM32(二):GPIO

GPIO(General Purpose Input Output)通用输入输出口 1.可配置为8种输入输出模式&#xff0c;引脚电平:0V~3.3V&#xff0c;部分引脚可容忍5V&#xff0c;输出模式下可控制端口输出高低电平&#xff0c;用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等&#xff0c;输入模式下…

在vscode使用markdown格式、自动补齐、以及快捷键

在扩展中搜索markdown all in one&#xff0c;下载使用即可。

人工智能在网络安全中的三大支柱

人工智能 (AI) 席卷了网络安全行业&#xff0c;各种供应商都在努力将 AI 融入其解决方案中。但 AI 与安全之间的关系不仅仅在于实现 AI 功能&#xff0c;还在于攻击者和防御者如何利用该技术改变现代威胁形势。它还涉及如何开发、更新和保护这些 AI 模型。如今&#xff0c;网络…

【qt】基于tcp的服务端编写

实现服务端&#xff0c;连接后拿到客户端ip地址和端口号 ui设计 修改对应行编辑对象名&#xff0c;修改客户端ip为clientip,客户端端口号为clientport 代码实现 1.网络通信需要加network 2.包含头文件 3.定义一个QTcpserver变量&#xff0c;并初始化 4.服务端监听&#…

字符串String概述,遍历字符串

String的注意点 字符串的内容是不会发生改变的&#xff0c;它的对象在创建后不能被更改 string是Java定义好的一个类&#xff0c;定义在java.long包中&#xff0c;所以使用的时候不需要导入包。 Java程序中的所有字符串文字&#xff08;例如“abcdefg”&#xff09;&#xf…

【Go语言初探】(二)、项目文件结构和GOPATH设置

一、go语言项目文件结构 由go/bin、go/src和go/pkg三个子文件夹组成&#xff0c;见下图&#xff1a; 实际项目&#xff1a; 二、gopath路径变量设置 在项目中创建main.go文件后&#xff0c;IDE会提示设置GOPATH路径&#xff1a; 点击“configure GOPATH”&#xff0c;设置GOP…

酒项目加密封装步骤;linux查看IP地址,查看MAC地址, 查看CPU序列号

线上酒项目为例 目录 线上酒项目为例 第一步 第二步 linux查看IP地址 查看MAC地址 方法1: 方法2: 方法3&#xff1a; 查看CPU序列号 为什么不用物理机的不同虚拟机的cpu序列号是相同&#xff0c;给我们的各个系统都是相同的 第一步 在maven模块分层上进行加密&#x…

15:【stm32】时钟树

时钟树 1、时钟树1.1&#xff1a;简要的介绍1.2&#xff1a;基本结构1.2.1&#xff1a;stm32的内部结构1.2.2&#xff1a;树的关键节点1.2.3&#xff1a;系统时钟的来源 2、RCC标准库编程2.1&#xff1a;片上外设的复位与释放2.2&#xff1a;时钟系统配置2.3&#xff1a;时钟树…

算法:DFS之记忆化搜索

目录 记忆化搜索 题目一&#xff1a;不同路径 题目二&#xff1a;最长递增子序列 题目三&#xff1a;猜数字大小II 题目四&#xff1a;矩阵中的最长递增路径 记忆化搜索 说到记忆化搜索&#xff0c;首先就需要引入斐波那契数这道题&#xff0c;非常经典&#xff0c;可以很…

第44课 Scratch入门篇:无限画中画

无限画中画 故事背景: 无止境的显示一幅画。 程序原理: 利用多张基本一样的图,不停循环显示,产生视觉上的错觉,原理很简单,只是一种实现方式而已。 开始编程 1、删除预设的猫咪角色,上传以后在那个无限循环的图片,大小为 480*360 2、接下来复制造型,使用选择工具…

.net 8.0 下 Blazor 通过 SignalR 与 Winform 交互

定义一个Hub using Microsoft.AspNetCore.SignalR;namespace Beatrane.Connect.Blazor {public class DeviceHub : Hub{public async Task SendMessage(string user, string message){await Clients.All.SendAsync("ReceiveMessage", user, message);}public async …

静态分析、动态调试与重打包:去除Android APK烦人广告

最近&#xff0c;一直使用的某款APP&#xff0c;广告越来越多&#xff0c;更令人发指的是&#xff0c;广告弹框最后都变成无法关闭的形式&#xff0c;不使用会员压根没法正常使用。应用市场广大用户的评论说出了我们的心声。 虽说充会员可以免广告&#xff0c;这点小钱&#xf…

《python语言程序设计》2018版第7章第7题代数2x2线性方程式设计一个名为LinearEquation

#大家可以看一下 两道题的内容 第n次刷第4章第3题的代码。朝纲用来函数的概念 def judge_num(a, b, c, d):return (a * d) - (b * c)def run_cont(a, b, c, d, e, f):cc judge_num(a, b, c, d)if cc 0:print("The equation has no solution")else:x ((e * d) - (…

苹果手机怎么清理重复照片的解决方案

随着智能手机摄像头技术的飞速发展&#xff0c;我们越来越依赖iPhone来记录生活中的点点滴滴。不可避免地&#xff0c;这也导致了大量重复照片的产生&#xff0c;这些重复照片不仅占用了宝贵的存储空间&#xff0c;还使得照片库显得混乱无序。本文将介绍苹果手机怎么清理重复照…