C语言实现贪吃蛇小游戏

    ✅博客主页:爆打维c-CSDN博客​​​​​​ 🐾

🔹分享c语言知识及代码 🐾

目录

游戏展示视频

一、项目准备工作

二、功能实现分析

1.游戏开始

a.设置本地化、创建窗口、标题

b.隐藏光标,封装定位光标的函数

c.打印欢迎界面及提示信息

d.打印游戏地图及右侧的提示信息

e.创建蛇

f.创建食物

2.游戏运行

a.打印右侧帮助信息

b.按键判断

c.蛇移动过程中

3.游戏结束

a.打印游戏结束原因

b.销毁蛇结点

c.销毁食物结点

三、游戏代码实现如下

snack.h

snack.cpp

test.cpp


游戏展示视频

c语言 贪吃蛇游戏实现

一、项目准备工作

1. 打开VS新建一个空项目

2. 创建三个文件

  • snack.h       写游戏需要的数据类型和函数声明
  • snack.cpp   写函数的定义
  • test.cpp      写游戏的测试逻辑

准备工作就绪,现在我们来分析需要实现的功能


二、功能实现分析

1.游戏开始

a.设置本地化、创建窗口、标题

需要用到的函数:

int system (const char* command);   //头文件为<stdlib.h> 用于执行系统指令

char *setlocale(int category, const char *locale); 

//头文件为<locate.h> 用于设置或查询程序的本地化信息

//设置为本地模式 支持宽字符(汉字)的输出
setlocale(LC_ALL, ""); //设置标题
system("title 贪吃蛇");//设置窗体长和宽
system("mode con cols=100 lines=30");

b.隐藏光标,封装定位光标的函数

 //获取句柄HANDLE houtput = GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_CURSOR_INFO cursor_info;   //包含有关控制台游标的信息的结构体GetConsoleCursorInfo(houtput, &cursor_info);  //获取控制台光标信息cursor_info.bVisible = false;  //设置光标可见度SetConsoleCursorInfo(houtput, &cursor_info);   //设置光标
//定位光标的函数
void Setpos(short x,short y) {//获取句柄HANDLE handle = NULL;handle = GetStdHandle(STD_OUTPUT_HANDLE);//设置光标位置COORD pos = { x,y };SetConsoleCursorPosition(handle, pos);
}

对于Win32 API控制台函数 的使用不清楚的同学可以去查阅官方文档,里面给出了详细的解释

控制台函数 - Windows Console | Microsoft Learnicon-default.png?t=O83Ahttps://learn.microsoft.com/zh-cn/windows/console/console-functions

c.打印欢迎界面及提示信息

实现效果如图

void WelcomeToGame() {Setpos(40, 15);printf("欢迎来到贪吃蛇游戏!\n");Setpos(40, 25);    //设置按任意键继续的位置system("pause");system("cls");Setpos(25, 13);printf("使用按键“↑↓←→”控制蛇的移动,按F3加速,F4减速\n");Setpos(40, 25);   //设置按任意键继续的位置system("pause");system("cls");
}

d.打印游戏地图及右侧的提示信息

void PrintMap() {int i = 0;//打印上横排for (i = 0; i < 58; i+=2) {  //0~56Setpos(i, 0);wprintf(L"%c",WALL);}//打印下横排for (i = 0; i < 58; i+=2) {  //0~56Setpos(i, 26);wprintf(L"%c", WALL);}//打印左竖排for (i = 1; i < 26; i++) {Setpos(0, i);wprintf(L"%c", WALL);}//打印右竖排for (i = 1; i < 26; i++) {Setpos(56, i);wprintf(L"%c", WALL);}
}

e.创建蛇

先在snack.h中声明维护蛇的结构体

//蛇的方向
enum DIRECTTION {UP = 1,DOWN,LEFT,RIGHT
};
//蛇的状态
enum GAME_STATUS {OK,            //存活KILL_BY_SELF,  //撞到自己KILL_BY_WALL, //撞墙死亡END_NORMAL  //正常退出
};
//蛇节点结构体 单链表
typedef struct SnackNode {int x;int y;struct SnackNode* next;
}SnakcNode, * pSnackNode;
//蛇结构体 维护蛇的信息
typedef struct Snack {int _sleep_time;    //休眠时间越短 蛇越快int _foodscore;  //一个食物的得分int _score;    //总得分enum DIRECTTION _dir;//蛇的方向enum GAME_STATUS _status;  //蛇的状态pSnackNode _pfood; //指向食物的指针pSnackNode _phead; //指向蛇头的指针
}Snack, * pSnack;

初始化蛇身

//初始化蛇身
void InitSnack(pSnack ps){//蛇身初始化五个节点int i = 0;pSnackNode cur = NULL;for (i = 0; i < 5; i++) {cur = (pSnackNode)malloc(sizeof(SnackNode));if (cur == NULL) {perror("malloc cur fail");return;}cur->next = NULL;cur->x = SNACK_X + i * 2;cur->y = SNACK_Y;if (ps->_phead == NULL) {  //空链表ps->_phead = cur;}else {//头插法cur->next = ps->_phead;ps->_phead = cur;}}cur = ps->_phead;while (cur) {Setpos(cur->x, cur->y);wprintf(L"%c",BODY);cur = cur->next;}//设置其他属性ps->_dir = RIGHT;ps->_foodscore = 20;ps->_score = 0;ps->_sleep_time = 200;ps->_status = OK;
}

f.创建食物

//创建食物
void CreateFood(pSnack ps) {int x=0, y=0;
again:do {x = rand() % 53 + 2; //2~54y = rand() % 25 + 1;//1~25} while (x % 2 != 0);//x必须要是2的倍数//x,y坐标不能与蛇身重合pSnackNode cur = ps->_phead;while (cur) {if (cur->x == x && cur->y == y) { goto again;}cur = cur->next;}//创建食物节点pSnackNode pfood = (pSnackNode)malloc(sizeof(SnackNode));if (!pfood) {perror("malloc pfood fail");return;}else {pfood->x = x;pfood->y = y;ps->_pfood = pfood;Setpos(x, y);wprintf(L"%c",FOOD);}
}

2.游戏运行

a.打印右侧帮助信息

b.按键判断

判断用户是否按键 

  •   按下上下左右则改变蛇的方向 f3则加速 f4则减速 暂停键 退出键

c.蛇移动过程中

判断蛇下一步往哪走 是否吃掉食物?

  •          如果吃掉食物那么蛇身增长 加分
  •          如果没吃掉食物 那么往前移动

判断是否存活

  •         如果存活 继续游戏
  •         如果撞到自己或撞到墙 游戏结束

3.游戏结束

a.打印游戏结束原因

b.销毁蛇结点

c.销毁食物结点


三、游戏代码实现如下

snack.h

#pragma once
#include<stdio.h>
#include<Windows.h>
#include<locale.h>
#include<stdbool.h>
#define BODY L'●'
#define FOOD L'★'
#define WALL L'□'
#define SNACK_X 26
#define SNACK_Y 5
//判断?个键是否被按过,可以检测GetAsyncKeyState返回值的最低值是否为1.
#define KEY_PRESS(VK) ((GetAsyncKeyState(VK)&0x1)?1:0)//蛇的方向
enum DIRECTTION {UP = 1,DOWN,LEFT,RIGHT
};
//蛇的状态
enum GAME_STATUS {OK,            //存活KILL_BY_SELF,  //撞到自己KILL_BY_WALL, //撞墙死亡END_NORMAL  //正常退出
};
//蛇节点结构体 单链表
typedef struct SnackNode {int x;int y;struct SnackNode* next;
}SnakcNode, * pSnackNode;
//蛇结构体 维护蛇的信息
typedef struct Snack {int _sleep_time;    //休眠时间越短 蛇越快int _foodscore;  //一个食物的得分int _score;    //总得分enum DIRECTTION _dir;//蛇的方向enum GAME_STATUS _status;  //蛇的状态pSnackNode _pfood; //指向食物的指针pSnackNode _phead; //指向蛇头的指针
}Snack, * pSnack;void Setpos(short x, short y);
void WelcomeToGame();
void My_time();
void PrintMap();
void CreateFood(pSnack ps);
void GameStart(pSnack ps);
void GameRun(pSnack ps);
void GameOver(pSnack ps);

snack.cpp

//函数的声明
#include"snake.h"
void Setpos(short x,short y) {//获取句柄HANDLE handle = NULL;handle = GetStdHandle(STD_OUTPUT_HANDLE);//设置光标位置COORD pos = { x,y };SetConsoleCursorPosition(handle, pos);
}void WelcomeToGame() {Setpos(40, 15);printf("欢迎来到贪吃蛇游戏!\n");Setpos(40, 25);    //设置按任意键继续的位置system("pause");system("cls");Setpos(25, 13);printf("使用按键“↑↓←→”控制蛇的移动,按F3加速,F4减速\n");Setpos(40, 25);   //设置按任意键继续的位置system("pause");system("cls");
}
void PrintMap() {int i = 0;//打印上横排for (i = 0; i < 58; i+=2) {  //0~56Setpos(i, 0);wprintf(L"%c",WALL);}//打印下横排for (i = 0; i < 58; i+=2) {  //0~56Setpos(i, 26);wprintf(L"%c", WALL);}//打印左竖排for (i = 1; i < 26; i++) {Setpos(0, i);wprintf(L"%c", WALL);}//打印右竖排for (i = 1; i < 26; i++) {Setpos(56, i);wprintf(L"%c", WALL);}
}
//初始化蛇身
void InitSnack(pSnack ps){//蛇身初始化五个节点int i = 0;pSnackNode cur = NULL;for (i = 0; i < 5; i++) {cur = (pSnackNode)malloc(sizeof(SnackNode));if (cur == NULL) {perror("malloc cur fail");return;}cur->next = NULL;cur->x = SNACK_X + i * 2;cur->y = SNACK_Y;if (ps->_phead == NULL) {  //空链表ps->_phead = cur;}else {//头插法cur->next = ps->_phead;ps->_phead = cur;}}cur = ps->_phead;while (cur) {Setpos(cur->x, cur->y);wprintf(L"%c",BODY);cur = cur->next;}//设置其他属性ps->_dir = RIGHT;ps->_foodscore = 20;ps->_score = 0;ps->_sleep_time = 200;ps->_status = OK;
}
//创建食物
void CreateFood(pSnack ps) {int x=0, y=0;
again:do {x = rand() % 53 + 2; //2~54y = rand() % 25 + 1;//1~25} while (x % 2 != 0);//x必须要是2的倍数//x,y坐标不能与蛇身重合pSnackNode cur = ps->_phead;while (cur) {if (cur->x == x && cur->y == y) { goto again;}cur = cur->next;}//创建食物节点pSnackNode pfood = (pSnackNode)malloc(sizeof(SnackNode));if (!pfood) {perror("malloc pfood fail");return;}else {pfood->x = x;pfood->y = y;ps->_pfood = pfood;Setpos(x, y);wprintf(L"%c",FOOD);}
}
void GameStart(pSnack ps) {//设置窗体长和宽system("mode con cols=100 lines=30");//获取句柄HANDLE houtput = GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_CURSOR_INFO cursor_info;  GetConsoleCursorInfo(houtput, &cursor_info);  //获取控制台光标信息cursor_info.bVisible = false;  //设置光标可见度SetConsoleCursorInfo(houtput, &cursor_info);   //设置光标//1.打印欢迎窗口 //2.功能展示WelcomeToGame();//3.打印地图PrintMap();//4.创建蛇InitSnack(ps);//5.创建食物CreateFood(ps);
}void PrintHelpInfo() {Setpos(62, 14);printf("不能撞到墙,不能撞到自己");Setpos(62,15);printf("使用按键“↑↓←→”控制蛇的移动");Setpos(62,16);printf("按F3加速,F4减速");Setpos(62, 17);printf("按空格暂停游戏,按ESC退出游戏");}
void Pause() {while (1) {Sleep(200);if (KEY_PRESS(VK_SPACE)) {break;}}
}
int NextisFood(pSnackNode psn,pSnack ps) {return (psn->x == ps->_pfood->x) && (psn->y == ps->_pfood->y);
}
void EatFood(pSnackNode psn, pSnack ps) {//头插法psn->next = ps->_phead;ps->_phead = psn;//加分ps->_score += ps->_foodscore;//打印蛇身pSnackNode cur = ps->_phead;while (cur) {Setpos(cur->x, cur->y);wprintf(L"%lc", BODY);cur = cur->next;}//释放食物节点free(ps->_pfood);//创建新的⻝物CreateFood(ps);
}
void NoFood(pSnackNode psn, pSnack ps){psn->next = ps->_phead;ps->_phead = psn;pSnackNode cur = ps->_phead;while (cur->next->next!=NULL) {Setpos(cur->x, cur->y);wprintf(L"%lc", BODY);cur = cur->next;}//最后一个节点空格覆盖Setpos(cur->next->x, cur->next->y);printf("  ");//释放最后一个节点 并把此时的蛇尾next指针置为空 free(cur->next);cur->next = NULL;
}
int KillbySelf(pSnack ps) {//判断蛇身与蛇头是否重合pSnackNode cur = ps->_phead->next;while (cur) {if (ps->_phead->x == cur->x && ps->_phead->y == cur->y) {   //撞到自己 ps->_status = KILL_BY_SELF;return 1;}cur = cur->next;}return 0;
}
int KillbyWall(pSnack ps) {//判断蛇头是否撞墙if (ps->_phead->x == 0 || ps->_phead->x == 56 || ps->_phead->y == 0 || ps->_phead->y == 26) {ps->_status = KILL_BY_WALL;return 1;}return 0;
}
void SnackMove(pSnack ps) {//创建一个新的节点 表示蛇下一步到的位置 pSnackNode pNextNode = (pSnackNode)malloc(sizeof( SnackNode));if (!pNextNode) {perror("SnakeMove()::malloc()");return;}//判断下一步的方向switch (ps->_dir) {case UP:pNextNode->x = ps->_phead->x;pNextNode->y = ps->_phead->y - 1;break;case DOWN:pNextNode->x = ps->_phead->x;pNextNode->y = ps->_phead->y + 1;break;case LEFT:pNextNode->x = ps->_phead->x - 2;pNextNode->y = ps->_phead->y;break;case RIGHT:pNextNode->x = ps->_phead->x + 2;pNextNode->y = ps->_phead->y;break;}if (NextisFood(pNextNode,ps)) {EatFood(pNextNode, ps);}else {NoFood(pNextNode, ps);}KillbySelf(ps);KillbyWall(ps);}
void GameRun(pSnack ps) {PrintHelpInfo();  //打印右侧帮助信息//按键判断do {Setpos(62, 10);printf("总得分:%d",ps->_score);Setpos(62, 11);printf("一个食物的分数:%d", ps->_foodscore);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_RIGHT) && ps->_dir != LEFT) {ps->_dir = RIGHT;}else if (KEY_PRESS(VK_LEFT) && ps->_dir != RIGHT) {ps->_dir = LEFT;}else if (KEY_PRESS(VK_ESCAPE)) {ps->_status = END_NORMAL; //正常退出break;}else if (KEY_PRESS(VK_SPACE)) {Pause();  //让页面暂停 再按一次空格恢复}else if (KEY_PRESS(VK_F3)) {//加速if (ps->_sleep_time < 320) {ps->_sleep_time -= 30;ps->_foodscore += 10;}}else if (KEY_PRESS(VK_F4)) {//减速if (ps->_sleep_time>=80) {ps->_sleep_time += 30;ps->_foodscore -= 10;}}SnackMove(ps);Sleep(ps->_sleep_time);} while (ps->_status==OK);
}
void GameOver(pSnack ps) {pSnackNode cur = ps->_phead;Setpos(30, 12);switch (ps->_status){case END_NORMAL:printf("您主动退出游戏\n");break;case KILL_BY_SELF:printf("您撞上自己了 ,游戏结束!\n");break;case KILL_BY_WALL:printf("您撞墙了,游戏结束!\n");break;} //释放蛇身的节点while (cur){pSnackNode del = cur;cur = cur->next;free(del);}}

test.cpp

void game() {char c ='Y';do {Snack snack = { 0 };GameStart(&snack);GameRun(&snack);GameOver(&snack);Setpos(30, 13);printf("是否再来一局:Y/N >");c=getchar();getchar();} while (c == 'Y'||c=='y');
} 
int main(){setlocale(LC_ALL, ""); //设置为本地模式 支持宽字符(汉字)的输出等。system("title 贪吃蛇"); //设置标题srand((unsigned int)time(0));game();system("pause");return 0;
}

如果这篇文章对你有帮助的话,请给博主一个免费的赞鼓励一下吧~ 💓

本文仅简单介绍了有关类和对象的一些基本概念和相关代码实现,以上个人拙见,若有错误之处,希望各位能提出宝贵的建议和更正,感谢您的观看!

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

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

相关文章

网盘隐私照片泄露?教你如何保护自己的隐私照片!

网盘内的隐私照片 好兄弟最近遇到了一个困难&#xff1a;“我之前一直都是把照片存在网盘里面的&#xff0c;但是最近听说了某网盘的照片泄露了&#xff0c;自己的生活照啊&#xff0c;私密照啊都被人看光了&#xff0c;这太可怕了&#xff01;我现在也很担心自己的网盘上照片…

2021高教社杯全国大学生数学建模竞赛C题 Python代码演示

目录 问题一1.1 根据附件 1&#xff0c;对 402 家供应商的供货特征进行量化分析计算供货特征数据标准化对正向指标归一化对负向指标归一化 1.2 建立反映保障企业生产重要性的数学模型熵权法熵权法-TOPSISAHP 1.3 在此基础上确定 50 家最重要的供应商&#xff0c;并在论文中列表…

钢轨缺陷检测-目标检测数据集(包括VOC格式、YOLO格式)

钢轨缺陷检测-目标检测数据集&#xff08;包括VOC格式、YOLO格式&#xff09; 数据集&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1h7Dc0MiiRgtd7524cBUOFQ?pwdfr9y 提取码&#xff1a;fr9y 数据集信息介绍&#xff1a; 共有 1493 张图像和一一对应的标注文件 标…

Neo4j入门案例:三星堆

创建一个关于三星堆的知识图谱可以是一个非常有趣的项目&#xff0c;它可以帮助理解如何使用Neo4j来存储和查询复杂的关系数据。三星堆文化以其独特的青铜器、金器和其他文物而闻名&#xff0c;这为我们提供了一个丰富的历史背景来构建知识图谱。 数据模型定义 实体类型&#…

RTMP直播播放器的几种选择

如何选择RTMP播放器&#xff1f; 在选择RTMP播放器时&#xff0c;需要综合考虑多个因素&#xff0c;以确保选择的播放器能够满足实际需求并提供良好的用户体验。以下是一些选择RTMP播放器的建议&#xff1a; 1. 功能需求 低延迟&#xff1a;对于直播场景&#xff0c;低延迟是…

解读 Java 经典巨著《Effective Java》90条编程法则,第5条:优先考虑依赖注入来引用资源

【前言】欢迎订阅【解读《Effective Java》】系列专栏 《Effective Java》是 Java 开发领域的经典著作&#xff0c;作者 Joshua Bloch 以丰富的经验和深入的知识&#xff0c;全面探讨了 Java 编程中的最佳实践。这本书被公认为 Java 开发者的必读经典&#xff0c;对提升编码技…

STM32巡回研讨会总结(2024)

前言 本次ST公司可以说是推出了7大方面&#xff0c;几乎可以说是覆盖到了目前生活中的方方面面&#xff0c;下面总结下我的感受。无线类 支持多种调制模式&#xff08;LoRa、(G)FSK、(G)MSK 和 BPSK&#xff09;满足工业和消费物联网 (IoT) 中各种低功耗广域网 (LPWAN) 无线应…

MelosBoom:解锁数据价值的新纪元

在当今的数字时代&#xff0c;数据被誉为“新的石油”&#xff0c;但用户在传统的Web2环境中&#xff0c;往往无法真正享受到自己贡献数据的价值。大型互联网公司通过集中化的系统和算法&#xff0c;垄断了数据的使用权&#xff0c;并从中获取巨大的商业利益&#xff0c;而数据…

计算机三级网络技术总结(一)

RPR环中每一个节点都执行SRP公平算法IEEE 802.11a和g将传输速率提高到54Mbps一个BGP发言人与其他自治系统中的BGP发言人要交换路由信息就要先建立TCP连接在一个区域内的路由器数一般不超过200个进入接口配置模式&#xff1a;Router(config)#interface <接口名> 封装ppp协…

Qt 实现自定义截图工具

目录 Qt 实现自定义截图工具实现效果图PrintScreen 类介绍PrintScreen 类的主要特性 逐步实现第一步&#xff1a;类定义第二步&#xff1a;初始化截图窗口第三步&#xff1a;处理鼠标事件第四步&#xff1a;计算截图区域第五步&#xff1a;捕获和保存图像 完整代码PrintScreen.…

WLAN实验简述

一&#xff1a;配置生产AP1上级接入层交换机LSW3 sys [Huawei]sysname LSW3 [LSW3]undo info-center enable [LSW3]vlan batch 10 100 [LSW3]int g0/0/2 [LSW3-GigabitEthernet0/0/2]port link-type trunk [LSW3-GigabitEthernet0/0/2]port trunk allow-pass vlan 10 100 [LSW…

Java企业面试题3

1. break和continue的作用(智*图) break&#xff1a;用于完全退出一个循环&#xff08;如 for, while&#xff09;或一个 switch 语句。当在循环体内遇到 break 语句时&#xff0c;程序会立即跳出当前循环体&#xff0c;继续执行循环之后的代码。continue&#xff1a;用于跳过…

STM32 的 CAN 通讯全攻略

目录 一、CAN 通讯概述 二、 CAN 通讯原理 1.ISO11898 标准下的物理层特征 2.CAN 协议的帧类型 3. 总线仲裁介绍 4.位时序 5.STM32 CAN 控制器简介 6.标识符筛选器 三、软件设计 1.发送流程 1.1初始化 CAN 控制器 1.2准备发送数据 1.3 将数据填充到发送缓冲区 1.4…

Vue.js入门系列(二十九):深入理解编程式路由导航、路由组件缓存与路由守卫

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

pikachu下

CSRF(跨站请求伪造) CSRF(get) url变成了这样了&#xff0c;我们就可以新开个页面直接拿url去修改密码 http://pikachu-master/vul/csrf/csrfget/csrf_get_login.php?username1&password2&submitLogin CSRF(post&#xff09; 这里只是请求的方式不同&#xff0c;…

简洁明了!中缀表达式转为后缀表达式规则及代码

简单来说&#xff0c;就是弄两个栈&#xff0c;判断执行&#xff1a; 上代码&#xff1a; #include<iostream> #include<stack> #include<cstring> using namespace std; stack<char>s1,s2; char now; int main(){string c;cin>>c;for(int i0;…

Linux 开发工具(vim、gcc/g++、make/Makefile)+【小程序:进度条】-- 详解

目录 一、Linux软件包管理器 - yum&#xff08;ubuntu用apt代替yum&#xff09;1、Linux下安装软件的方式2、认识 yum3、查找软件包4、安装软件5、如何实现本地机器和云服务器之间的文件互传 二、Linux编辑器 - vim1、vim 的基本概念2、vim 下各模式的切换3、vim 命令模式各命令…

形式向好、成本较低、可拓展性较高的名厨亮灶开源了

简介 AI视频监控平台, 是一款功能强大且简单易用的实时算法视频监控系统。愿景在最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;减少企业级应用约 95%的开发成本&#xff0c;在强大视频算法加…

电子连接器温升仿真教程 一

电子连接器温升是指电子连接器的所有端子在施加额定电载荷的情况下,经过一段时间后,达成热平衡,连接器局部温度不再继续升高,此时规定测试点的温度与测试环境温度的差值。连接器的温升规格值因其应用环境不同,而不同。工业应用,且不与人体接触的电子连接器一般允许温升会…

mybatis 查询Not Found TableInfoCache

近期在工程迁移中遇到一个mybatis查询的问题&#xff0c;检查代码没有问题&#xff0c;但是报Not Found TableInfoCache 解决过程 是不是数据库对应表错误或者实体类指定的表名错误 查看配置文件链接的数据源是否正确TableName中指定的表名然后去数据库看一下是否存在 如果…