当前位置: 首页 > news >正文

c++ 小游戏(2种)

目录

介绍

游戏1

游戏2


介绍

因为DEV C++的编译环境较小,所以大部分的游戏代码都无法在此上运行,我收集了一部分摸鱼小游戏的源码,在此呈现,如果有能在DEV C++上运行的我会先作声明:

游戏1

扫雷

#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#include<queue>
#include<ctype.h>
#define A 17 //地图的高
#define B 17 //地图的宽
#define C 30 //雷的总数
using namespace std;//全局变量
DWORD a,b;
char map[A][B],news,spare;
int BoomTotalNum,floatx,floaty,flag[A][B],flagnum,mode,slect[A][B],game;//颜色属性
const WORD FORE_BLUE = FOREGROUND_BLUE; //蓝色文本属性
const WORD FORE_GREEN = FOREGROUND_GREEN; //绿色文本属性
const WORD FORE_RED = FOREGROUND_RED; //红色文本属性//开垦地图结构体
struct node {int x;int y;
};
queue <node> dui;//打印位置
void position(int x,int y) {COORD pos= {x,y};HANDLE Out=GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorPosition(Out,pos);
}//隐藏光标
void Hide() {HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_CURSOR_INFO CursorInfo;GetConsoleCursorInfo(handle, &CursorInfo);//获取控制台光标信息CursorInfo.bVisible = false; //隐藏控制台光标SetConsoleCursorInfo(handle, &CursorInfo);//设置控制台光标状态
}//初始化
void Beginning() {while(!dui.empty()) {dui.pop();}game=1;
//BoomTotalNum=C;floatx=A/2;floaty=B/2;flagnum=0;BoomTotalNum=C;mode=0;HANDLE handle_out = GetStdHandle(STD_OUTPUT_HANDLE); //获得标准输出设备句柄CONSOLE_SCREEN_BUFFER_INFO csbi;      //定义窗口缓冲区信息结构体GetConsoleScreenBufferInfo(handle_out, &csbi);   //获得窗口缓冲区信息int x,y;srand((unsigned)time(0));for(int i=0; i<A; i++) for(int j=0; j<B; j++) {map[i][j]=' ';flag[i][j]=0;slect[i][j]=0;}while(BoomTotalNum) {x=rand()%A;y=rand()%B;if(map[x][y]==' ') {map[x][y]='@';BoomTotalNum--;}}SetConsoleTextAttribute(handle_out, FORE_GREEN);for(int i=0; i<A; i++) {for(int j=0; j<B; j++) printf("█");printf("\n");}position(floaty*2,floatx);SetConsoleTextAttribute(handle_out, FORE_RED);printf(""); //光标位置position(44,9);printf("扫雷模式");position(44,5);printf("剩余雷数:%d ",C-flagnum);SetConsoleTextAttribute(handle_out, FORE_GREEN);position(5,22);printf("按“空格”切换模式");position(5,23);printf("按“Enter”确认");position(5,24);printf("按“方向键”选择方块");}//打印地图的一块儿
void Lump(int xx,int yy) {switch(map[xx][yy]) {case '1' :printf("①");break; //周围雷的数量(下同)case '2' :printf("②");break;case '3' :printf("③");break;case '4' :printf("④");break;case '5' :printf("⑤");break;case '6' :printf("⑥");break;case '7' :printf("⑦");break;case '8' :printf("⑧");break;case ' ' :if(xx==floatx&&yy==floaty) {if(flag[xx][yy]==0) {if(mode%2==0) printf("");else printf("");} else printf("");} else {if(flag[xx][yy]==0) printf("█");else printf("");}break;case '@' :if(xx==floatx&&yy==floaty) {if(flag[xx][yy]==0) {if(mode%2==0) printf("");else printf("");} else printf("");} else {if(flag[xx][yy]==0) printf("█");else printf("");}break;case 'x' :if(floatx==xx&&floaty==yy) printf("");else printf(" ");break; //已经挖开的空白}
}//移动光标
void Move() {HANDLE handle_out = GetStdHandle(STD_OUTPUT_HANDLE); //获得标准输出设备句柄CONSOLE_SCREEN_BUFFER_INFO csbi;      //定义窗口缓冲区信息结构体GetConsoleScreenBufferInfo(handle_out, &csbi);   //获得窗口缓冲区信息int xxx,yyy;xxx=floatx;yyy=floaty;switch(news) {case 72 :floatx--;break; //上case 80 :floatx++;break; //下case 75 :floaty--;break; //左case 77 :floaty++;break; //右}if(floatx==-1) floatx=A-1;floatx%=A; //两端穿模处理if(floaty==-1) floaty=B-1;floaty%=B;position(yyy*2,xxx);SetConsoleTextAttribute(handle_out, FORE_GREEN);Lump(xxx,yyy); //删除原位置if(map[floatx][floaty]=='x') {position(floaty*2,floatx);printf(" ");}position(floaty*2,floatx);SetConsoleTextAttribute(handle_out, FORE_BLUE);Lump(floatx,floaty); //更新新位置
}//插旗和排雷模式切换
void Mode() {HANDLE handle_out = GetStdHandle(STD_OUTPUT_HANDLE); //获得标准输出设备句柄CONSOLE_SCREEN_BUFFER_INFO csbi;      //定义窗口缓冲区信息结构体GetConsoleScreenBufferInfo(handle_out, &csbi);   //获得窗口缓冲区信息mode++;SetConsoleTextAttribute(handle_out, FORE_BLUE);position(floaty*2,floatx);if(mode%2==0) printf("");else printf("");position(44,9);if(mode%2==0) {SetConsoleTextAttribute(handle_out, FORE_BLUE);printf("扫雷模式");} else {SetConsoleTextAttribute(handle_out, FORE_RED);printf("插旗模式");}
}//该点周围地雷数
int Boomnum(int xx,int yy) {int num=0;if((xx-1>=0)&&(yy-1>=0)&&(map[xx-1][yy-1]=='@')) num++;if((xx-1>=0)&&(yy+0>=0)&&(map[xx-1][yy]=='@')) num++;if((xx-1>=0)&&(yy+1<B) &&(map[xx-1][yy+1]=='@')) num++;if((xx+0>=0)&&(yy-1>=0)&&(map[xx][yy-1]=='@')) num++;if((xx+0>=0)&&(yy+1<B) &&(map[xx][yy+1]=='@')) num++;if((xx+1<A)&&(yy-1>=0) &&(map[xx+1][yy-1]=='@')) num++;if((xx+1<A)&&(yy+0>=0) &&(map[xx+1][yy]=='@')) num++;if((xx+1<A)&&(yy+1<B) &&(map[xx+1][yy+1]=='@')) num++;return num;
}//更新地图
void Open() {node c;node d;while(!dui.empty()) {dui.pop();}c.x=floatx;c.y=floaty;dui.push(c);slect[c.x][c.y]=1;while(!dui.empty()) {c=dui.front();dui.pop();if(Boomnum(c.x,c.y)!=0) {map[c.x][c.y]=(Boomnum(c.x,c.y)+48);continue;} else {map[c.x][c.y]='x';if((c.x-1>=0)&&(c.y-1>=0)&&(map[c.x-1][c.y-1]==' ')&&(slect[c.x-1][c.y-1]==0)) {d.x=c.x-1;d.y=c.y-1;dui.push(d);slect[d.x][d.y]=1;}if((c.x-1>=0)&&(c.y-0>=0)&&(map[c.x-1][c.y]==' ')&&(slect[c.x-1][c.y]==0)) {d.x=c.x-1;d.y=c.y-0;dui.push(d);slect[d.x][d.y]=1;}if((c.x-1>=0)&&(c.y+1<B)&&(map[c.x-1][c.y+1]==' ')&&(slect[c.x-1][c.y+1]==0)) {d.x=c.x-1;d.y=c.y+1;dui.push(d);slect[d.x][d.y]=1;}if((c.x-0>=0)&&(c.y-1>=0)&&(map[c.x][c.y-1]==' ')&&(slect[c.x][c.y-1]==0)) {d.x=c.x-0;d.y=c.y-1;dui.push(d);slect[d.x][d.y]=1;}if((c.x-0>=0)&&(c.y+1<B)&&(map[c.x][c.y+1]==' ')&&(slect[c.x][c.y+1]==0)) {d.x=c.x-0;d.y=c.y+1;dui.push(d);slect[d.x][d.y]=1;}if((c.x+1<A)&&(c.y-1>=0)&&(map[c.x+1][c.y-1]==' ')&&(slect[c.x+1][c.y-1]==0)) {d.x=c.x+1;d.y=c.y-1;dui.push(d);slect[d.x][d.y]=1;}if((c.x+1<A)&&(c.y-0>=0)&&(map[c.x+1][c.y]==' ')&&(slect[c.x+1][c.y]==0)) {d.x=c.x+1;d.y=c.y-0;dui.push(d);slect[d.x][d.y]=1;}if((c.x+1<A)&&(c.y+1<B)&&(map[c.x+1][c.y+1]==' ')&&(slect[c.x+1][c.y+1]==0)) {d.x=c.x+1;d.y=c.y+1;dui.push(d);slect[d.x][d.y]=1;}}}
}int main() {freopen("排名.txt","r",stdin);
Relife: //重玩处HANDLE handle_out = GetStdHandle(STD_OUTPUT_HANDLE); //获得标准输出设备句柄CONSOLE_SCREEN_BUFFER_INFO csbi;      //定义窗口缓冲区信息结构体GetConsoleScreenBufferInfo(handle_out, &csbi);   //获得窗口缓冲区信息Hide();Beginning();a=GetTickCount();while(1) {if(kbhit()!=0) {spare=getch();if((spare!=(-32))&&(spare!=13)&&(spare!=' ')) continue;if(spare==13) {;if(mode%2==0) {if(map[floatx][floaty]=='@'&&flag[floatx][floaty]==0) {break;game=0;}if(flag[floatx][floaty]==1) continue;Open();position(0,0);SetConsoleTextAttribute(handle_out, FORE_GREEN);for(int i=0; i<A; i++) {for(int j=0; j<B; j++) Lump(i,j);printf("\n");}position(floaty*2,floatx);SetConsoleTextAttribute(handle_out, FORE_BLUE);Lump(floatx,floaty);}else {if(map[floatx][floaty]=='x'||(map[floatx][floaty]>'0'&&map[floatx][floaty]<'9'))continue;if(flag[floatx][floaty]==0) {flagnum++;flag[floatx][floaty]=1;position(floaty*2,floatx);SetConsoleTextAttribute(handle_out, FORE_BLUE);Lump(floatx,floaty);}else {flagnum--;flag[floatx][floaty]=0;position(floaty*2,floatx);SetConsoleTextAttribute(handle_out, FORE_BLUE);Lump(floatx,floaty);}}}if(spare==' ') Mode();//按方向键if(spare==-32) {news=getch();Move();}for(int i=0; i<A; i++) for(int j=0; j<B; j++) if(map[i][j]=='x'||(map[i][j]>'0'&&map[i][j]<'9')) game++;if(game==A*B-C+1) break;else game=1;SetConsoleTextAttribute(handle_out, FORE_RED);position(44,5);printf("剩余雷数:%d ",C-flagnum);} else Sleep(10);b=GetTickCount();SetConsoleTextAttribute(handle_out, FORE_RED);position(44,7);printf("用时:");if((b-a)/60000<10) printf("0");printf("%d:",(b-a)/60000);if(((b-a)/1000)%60<10) printf("0");printf("%d:",((b-a)/1000)%60);if(((b-a)/10)%100<10) printf("0");printf("%d",((b-a)/10)%100);}SetConsoleTextAttribute(handle_out, FORE_RED);position(5,5);if(game==1) printf("游戏结束!");else printf("恭喜通关!");position(5,8);printf("任意键重玩");scanf("%c%c",&spare,&spare);system("cls");position(0,0);goto Relife;
}

游戏2

狼人杀

#include <iostream>//C++输入输出流库
#include <cstdlib>//使用srand函数要用到这个库
#include <ctime>//使用time函数要用到这个库
#include <Windows.h>
#include <conio.h>
long long sr=0;
using namespace std;
void brc()
{system("cls");long long jy=1,wd=3;long long sy=3,wj=3;srand((int)time(0));long long n=rand()%15+1;cout<<"                                你是"<<n<<"号"<<endl;cout<<"                               正在分配身份"<<endl;Sleep(1500);long long m[20];for(long long i=1;i<=15;i++)m[i]=1;long long s[20]={0};long long yy[20]={0};long long l=0,w=0,j=0,p=0;for(long long i=1;i<=15;i++){do{long long a=rand()%4+1;if(a==1&&l<1){l++;s[i]=1;sr=i;}else if(a==2&&w<2){w++;s[i]=2;}else if(a==4&&p<3){p++;s[i]=4;}else if(a==3&&j<9){j++;s[i]=3;}}while(s[i]==0);}if(s[n]==1)cout<<"                               你是>>杀手<<"<<endl;else if(s[n]==2)cout<<"                               你是>>预言家<<"<<endl;else if(s[n]==3)cout<<"                               你是>>平民<<"<<endl;elsecout<<"                               你是>>法师<<"<<endl;cout<<"                             游戏将在5秒后开始"<<endl; Sleep(5000);long long c=15;long long f=0,flag=0;long long day=1;long long lr;long long tp[20]={0};do{lr=0;system("cls");cout<<"                                 第"<<day<<"晚开始"<<endl;cout<<"你是"<<n<<"号"<<endl;long long x;for(long long i=1;i<=15;i++) {if(i==n&&m[n]==1){if(s[n]==1){cout<<"                                 你是杀手"<<endl;for(long long j=1;j<=15;j++)if(m[j]==1&&s[j]!=1)cout<<j<<" ";cout<<endl;cout<<"                                 你选择杀掉"<<endl; long long a;cin>>a;m[a]=0;cout<<endl;cout<<"                                 杀手杀了"<<a<<"号"; if(s[a]==1)cout<<"(杀手)"<<endl;else if(s[a]==2)cout<<"(预言家)"<<endl;else if(s[a]==3)cout<<"(平民)"<<endl;elsecout<<"(法师)"<<endl;c--;}	elseif(s[n]==2){cout<<"                                 你是预言家"<<endl;cout<<"                               ";for(long long j=1;j<=15;j++)if(m[j]==1)cout<<j<<" ";cout<<endl<<"                              你选择预言谁的身份"<<endl;long long a;cin>>a;if(s[a]==1){cout<<"                        "<<a<<"号是杀手,请注意"<<endl;Sleep(1000);}elsecout<<"                            "<<a<<"号是好人"<<endl; }}else if(s[i]==1&&m[i]==1){long long a;do{a=rand()%15+1;}while(a==i||m[a]==0||s[a]==1);cout<<"                           杀手杀掉了"<<a<<"号"; if(s[a]==1)cout<<"(杀手)"<<endl;else if(s[a]==2)cout<<"(预言家)"<<endl;else if(s[a]==3)cout<<"(平民)"<<endl;elsecout<<"(法师)"<<endl;m[a]=0;c--;break;//}else if(s[i]==2){if(flag==0||m[flag]==0){long long a;do{a=rand()%15+1;}while(a==i||m[a]==0);if(s[a]==1)yy[a]=1;	else if(s[a]==3)yy[a]=3;}	}else if(s[i]==4){f=0;while(f==0){long long a;a=rand()%3+1;if(a==3)break;if(a==1){if(sy>0){sy--;f=1; long long b;do{b=rand()%15+1;b=rand()%15+1;}while(b==i||m[b]==0);m[b]=0;cout<<"                           法师毒死了"<<b<<"号"; if(s[b]==1)cout<<"(杀手)"<<endl;else if(s[b]==2)cout<<"(预言家)"<<endl;else if(s[b]==3)cout<<"(平民)"<<endl;c--;if(s[b]==1&&n!=sr){cout<<endl<<"							   "<<sr<<"号是杀手!"; cout<<endl<<"								杀手已死亡!"<<endl;cout<<"                          	游戏结束"<<endl;return ;}break;//}}else if(a==2&&day>1){if(jy>0){jy--;f=1; long long b;do{b=rand()%15+1;}while(b==i||m[b]==1);c++;cout<<"                           法师复活了"<<b<<"号"<<endl;m[b]=1;if(m[sr]==0&&n!=sr){cout<<endl<<"							   "<<sr<<"号是杀手!"; cout<<endl<<"						杀手已死亡!"<<endl;cout<<"                          	游戏结束"<<endl;return ;}break;//}}}}}if(s[n]==4){cout<<"                                 你是法师"<<endl;cout<<"存活状况:"<<endl; for(long long j=1;j<=15;j++)if(m[j]==1)cout<<j<<" ";cout<<endl;cout<<"                        你选择 1.* 杀 *还是 2.* 救 * 3.* 啥都不做 *"<<endl;long long a,f=0;while(f==0){cin>>a;if(a==3) break;if(a==1){if(wd>0){wd--;f=1; cout<<"                                你选择了杀人"<<endl;for(long long i=1;i<=15;i++)if(m[i]==1)cout<<i<<" ";cout<<endl; long long b;cin>>b;if(s[b]==1)cout<<"(杀手)"<<endl;else if(s[b]==2)cout<<"(预言家)"<<endl;else if(s[b]==3)cout<<"(平民)"<<endl;elsecout<<"(法师)"<<endl;m[b]=0;c--; if(m[sr]==0&&n!=sr){cout<<endl<<"							   "<<sr<<"号是杀手!"; cout<<endl<<"						杀手已死亡!"<<endl;cout<<"                          	游戏结束"<<endl;return ;}}else{cout<<">>毒药<<不足"<<endl; }}else if(a==2){if(wj>0){wj--;f=1; cout<<"你选择了复活"<<endl;cout<<"阵亡名单:"<<endl;for(long long i=1;i<=15;i++)if(m[i]==0)cout<<i<<"号,身份:"<<s[i]<<" "<<endl;;long long b;cin>>b;m[b]=1;c++;}else{cout<<">>复活药水<<不足"<<endl; }}}}Sleep(1000);long double p[20]={0};cout<<"                                 第"<<day<<"晚结束"<<endl;cout<<endl;if(m[n]==0){cout<<"                             你已经>>死<<了";	break;}cout<<"                                    存活:"<<endl;cout<<"                       ";for(long long i=1;i<=15;i++)if(m[i]==1)cout<<i<<" ";cout<<endl;cout<<"                                    请投票...."<<endl;for(long long i=1;i<=15;i++){if(i==n&&m[n]==1){cout<<endl;cout<<"                                 你选择投几号"<<endl; long long a=99;while(a==99) {cin>>a;if(a==99)for(long long i=1;i<=15;i++)if(m[i]==1)cout<<"                                    "<<i<<"."<<s[i]<<endl;}if(s[i]==3&&day>4)p[a]+=1.5;elsep[a]++;	cout<<endl;cout<<"                                    "<<i<<"->"<<a<<endl;if(s[a]==3){tp[a]=i;}}else if(s[i]==1&&m[i]==1){long long a;do{a=rand()%15+1;	}while(m[a]==0||a==i||s[a]==1);p[a]++;cout<<"                                    "<<i<<"->"<<a<<endl;if(s[a]==3){tp[a]=i;}}else if(s[i]==2&&m[i]==1){if(flag!=0){p[f]++;cout<<"                                    "<<i<<"->"<<flag<<endl;}else{long long a;do{a=rand()%15+1;	}while(m[a]==0||a==i||yy[a]==3);p[a]++;if(s[a]==3)	{tp[a]=i;}cout<<"                                    "<<i<<"->"<<a<<endl;}} else if(s[i]==3&&m[i]==1){if(tp[i]==0){long long a;do{a=rand()%15+1;	}while(m[a]==0||a==i);p[a]++;cout<<"                                    "<<i<<"->"<<a<<endl;}else{if(m[tp[i]]==1){p[tp[i]]++;cout<<"                                    "<<i<<"->"<<tp[i]<<endl;}else{long long a;do{a=rand()%15+1;	}while(m[a]==0||a==i);p[a]++;cout<<"                                    "<<i<<"->"<<a<<endl;}}}else if(s[i]==4&&m[i]==1){long long a;do{a=rand()%15+1;	}while(m[a]==0||a==i);p[a]++;cout<<"                                    "<<i<<"->"<<a<<endl;}}system("cls");cout<<"                                 投票情况:"<<endl;for(long long i=1;i<=15;i++)if(m[i]==1)cout<<"                                 "<<i<<"号"<<"  票数:"<<p[i]<<endl; long long sw,max=-100; for(long long i=1;i<=15;i++){if(p[i]>max){sw=i;max=p[i];}}m[sw]=0;cout<<"                                  "<<sw<<"死了"<<endl;c--;cout<<"                              "<<sw<<"号的身份是"; if(s[sw]==1)cout<<"杀手"<<endl;else if(s[sw]==2)cout<<"预言家"<<endl;else if(s[sw]==3)cout<<"平民"<<endl;else cout<<"法师"<<endl; if(s[sw]==1&&n!=sr){cout<<endl<<"							   "<<sr<<"号是杀手!"; cout<<endl<<"						杀手已死亡!"<<endl;cout<<"                          	游戏结束"<<endl;return ;}day++;  if(s[n]!=1)   {for(long long i=1;i<=15;i++)if(s[i]==1&&m[i]==1)lr=1;}else{if(s[n]==1&&c==2)lr=0;}system("pause"); cout<<endl;if(m[sr]==0&&n!=sr){cout<<endl<<"							   "<<sr<<"号是杀手!"<<endl; cout<<endl<<"						杀手已死亡!"<<endl;cout<<"                          	游戏结束"<<endl;return ;}}while(m[n]==1&&c>1);if(sr==n&&m[n]==1){cout<<"								你杀掉了所有人!!!"<<endl;}cout<<"                          	游戏结束"<<endl;return ;
}
int main()
{srand((int)time(0));  char a='1';while(1){system("cls");cout<<"                                   			杀手游戏"<<endl;cout<<"------------------------------------------------------------------------------------------------------------------------";cout<<"                                 		   1.开始游戏"<<endl;cout<<"                                		  2.查看游戏规则"<<endl;a=getch();if(a=='1'){cout<<"                                 		   1. 15人场"<<endl;cout<<"                          			2. 30人娱乐战(10猎人)<敬请期待>"<<endl;a='2';while(a=='2'){a=getch();switch(a){case '1':brc();break;}if(a=='1')break;}if(a=='1')break;}else if(a=='2'){cout<<"杀手:每当晚上的时候可使用杀人权杀掉一人"<<endl;//1cout<<"预言家:每天晚上可以知道一个人的身份"<<endl;//2 cout<<"平民:无技能,当玩家是平民时,在第5天拥有1.5票的投票权"<<endl;//3cout<<"猎人:此身份仅限于30人娱乐局中,死亡后可带走一人"<<endl; cout<<"投票细则:\n(游戏中除了你以外全是由超级AI人工代替)"<<endl;cout<<"预言家如果预言到杀手将一直对他投票,如果预言到好人将永远不会对他投票"<<endl;cout<<"平民将投上一个晚上对他投票他的人"<<endl;cout<<"********利用好超级AI游戏规则找出杀手**********"<<endl;system("pause");}}return 0;
}

在这里给大家一个编译器(直接下载)(很多人都有了):DEV-C++

dev-c++ 下载

相关文章:

c++ 小游戏(2种)

目录 介绍 游戏1 游戏2 介绍 因为DEV C的编译环境较小&#xff0c;所以大部分的游戏代码都无法在此上运行&#xff0c;我收集了一部分摸鱼小游戏的源码&#xff0c;在此呈现&#xff0c;如果有能在DEV C上运行的我会先作声明&#xff1a; 游戏1 扫雷 #include<stdio.…...

电阻详解:定义、公式、影响因素及电阻器类型解析

电阻定义 电阻是指当电流通过导体时&#xff0c;导体对电流流动所呈现的阻碍作用的物理量。它是电路元件的一个基本参数&#xff0c;用于量化导体阻止电荷定向移动的能力。#电阻#的大小决定了通过导体的电流与两端电压之间的关系&#xff0c;遵循欧姆定律&#xff0c;即在恒定…...

LabVIEW动车组谐波分析与检测系统

LabVIEW动车组谐波分析与检测系统 随着中国高速铁路网络的快速发展&#xff0c;动车组数量和运行速度的不断提升&#xff0c;其产生的谐波问题对电网产生了不小的影响。基于图形化编程语言LabVIEW&#xff0c;开发了一套动车组谐波分析与检测系统&#xff0c;旨在实时监控与分…...

H5移动端 Vue3 + vue-virtual-scroller 实现长列表性能优化

文章目录 安装 vue-virtual-scroller引入&#x1f4e2;注意事项使用基础使用上拉加载下拉刷新 移动端在渲染长列表时 大量dom节点的渲染和重绘重排会导致页面卡顿、滚动不流畅、设备耗电加快、影响移动设备电池寿命等性能问题 这里分享使用【虚拟滚动】方案进行长列表优化&…...

第20章-IP路由原理

目录 1. 概述 2. 路由表 3. 查表规则 4. 路由来源类型 5. 路由优先级 6. 路由的度量值 7. 路由器写表规则 1. 概述 1. 定义 路由器:异构网络互联机制; 路由:指导路由器如何进行数据发送的路径信息; 路由表:目的地址、下一跳、出接口等; 2. IP连通的条件 沿途的每…...

SBCFormer:能够在单板计算机上以每秒1帧的速度进行全尺寸ImageNet分类的轻量级网络

文章目录 摘要1、引言2、 相关工作2.1、用于移动设备的卷积网络2.2、移动设备上的ViT和CNN-ViT混合模型2.3、评估指标 3、CNN-ViT 混合模型在低端CPU上的应用3.1、设计原则3.2、SBCFormer的整体设计3.3、SBCFormer块3.4、改进的注意力机制 4、实验结果4.1、实验设置4.2、ImageN…...

【opencv】教程代码 —features2D(8)AKAZE 特征点匹配和图像拼接

graf1.png graf3.png <?xml version"1.0"?> <opencv_storage> <H13 type_id"opencv-matrix"><rows>3</rows><cols>3</cols><dt>d</dt><data>7.6285898e-01 -2.9922929e-01 2.2567123e02…...

ssm基于springboot的数字家庭亲子视频分享网站java+vue

本网站的模块主要分为前台展示模块和后台管理模块。 前台展示模块功能如下&#xff1a; 1&#xff09;家庭照片模块 主要功能是对家庭照片的分类显示&#xff0c;如旅游、运动、生活、工作、学习等&#xff0c;每一类中的照片按时间轴展示出来。 2&#xff09;家庭亲子视频模块…...

产品经理功法修炼(1)之自我管理

点击下载《产品经理功法修炼(1)之自我管理》 1. 前言 产品经理的能力修炼并非局限于某一技能的速成,而是需要全面参与到产品的整个生命周期中,通过不断的实践来逐步提升自己的各项能力。尽管在企业的日常运作中,我们不可能身兼数职去扮演每一个角色,但作为产品的核心负…...

2024年04月IDE流行度最新排名

点击查看最新IDE流行度最新排名&#xff08;每月更新&#xff09; 2024年04月IDE流行度最新排名 顶级IDE排名是通过分析在谷歌上搜索IDE下载页面的频率而创建的 一个IDE被搜索的次数越多&#xff0c;这个IDE就被认为越受欢迎。原始数据来自谷歌Trends 如果您相信集体智慧&am…...

17.应用负载压力测试

早些点&#xff0c;下午题考&#xff0c;最近几年出现的少&#xff1b; 备考较为简单&#xff1b;历年真题相似度高&#xff1b; 主要议题&#xff1a; 1.负载压力测试概述 注意这些测试细微的差别&#xff1b; 负载测试和压力测试的方法比较相似&#xff0c;但是目的不同&a…...

Gauss到底是不是国产数据库

华为GaussDB数据库深度解析 引言 在数字化转型的浪潮中&#xff0c;数据成为企业最宝贵的资产之一。如何高效地管理和利用这些数据&#xff0c;成为企业面临的一大挑战。数据库作为数据存储和管理的核心系统&#xff0c;其性能、安全性、可用性和扩展性等特性直接影响到企业的…...

spark sql执行引擎原理及配置

如果我们想要给上层开发人员配置好一个统一的sql开发界面&#xff0c;让他们统一通过sql开发即可&#xff0c;可通过spark中的thriftserver服务实现&#xff0c;与hive中的thriftserver类似&#xff0c;配置好该服务后&#xff0c;上层通过db client或者代码中通过jdbc连接即可…...

【C语言基础】:自定义类型(二) -->联合和枚举

文章目录 一、联合体1.1 联合体类型的声明1.2 联合体的特点1.3 相同成员的结构体和联合体对比1.4 联合体大小的计算1.5 联合体练习 二、枚举类型2.1 枚举类型的声明2.2 枚举的优点 书山有路勤为径&#xff0c;学海无涯苦作舟。 创作不易&#xff0c;宝子们&#xff01;如果这篇…...

【授时防火墙】GPS北斗卫星授时信号安全防护装置系统

【授时防火墙】GPS北斗卫星授时信号安全防护装置系统 【授时防火墙】GPS北斗卫星授时信号安全防护装置系统 1、装置概述 卫星信号安全防护装置&#xff08;以下简称“防护装置”&#xff09;是一款专门针对卫星导航授时安全的设备。该设备能接收 BD 系统和 GPS 系统卫星信号&am…...

关于 MySQL 优化(详解)

文章目录 关于 MySQL 优化一、硬件方面的优化1、关于 CPU2、关于内存3、关于磁盘 二、MySQL 配置文件1、 default-time-zone8:002、interactive_timeout 1203、wait_timeout 1204、open_files_limit 102405、group_concat_max_len 1024006、usermysql7、character-set-serv…...

Hive详解(5)

Hive 窗口函数 案例 需求&#xff1a;连续三天登陆的用户数据 步骤&#xff1a; -- 建表 create table logins (username string,log_date string ) row format delimited fields terminated by ; -- 加载数据 load data local inpath /opt/hive_data/login into table log…...

阿里云效codeup如何执行github flow工作流

在阿里云效中执行 GitHub 工作流&#xff0c;实质上是在使用 Git 进行版本控制的过程中遵循 GitHub Flow 的原则。GitHub Flow 是一种简洁高效的工作流程&#xff0c;特别适用于追求快速迭代的团队。下面是在阿里云效中执行 GitHub 工作流的基本步骤&#xff1a; 1. 准备工作 …...

node.js的模块化 与 CommonJS规范

一、node.js的模块化 (1)什么是模块化&#xff1f; 将一个复杂的程序文件依据一定的规则拆分成为多个文件的过程就是模块化 在node.js中&#xff0c;模块化是指把一个大文件拆分成独立并且相互依赖的多个小模块&#xff0c;将每个js文件被认为单独的一个模块&#xff1b;模块…...

RK3588平台开发系列讲解(PWM开发篇)

目录 前⾔ 驱动文件 DTS 节点配置 PWM 流程 PWM 使⽤ 常⻅问题 PWM 在 U-Boot 与 kernel 之间的衔接问题 PWM Regulator 时 PWM pin 脚上下拉配置问题 前⾔ 脉宽调制&#xff08; PWM &#xff0c; Pulse Width Modulation &#xff09;功能在嵌⼊式系统中是⾮常常⻅的…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON&#xff0c;依赖模型推理阶段输出进行差分测试&#xff0c;但在训练阶段是不可行的&#xff0c;因为训练阶段直到最后才有固定输出&#xff0c;中间过程是不断变化的。API 库覆盖低&#xff0c;因为各个 API 都是在各种具体场景下使用。…...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程

STM32F1 本教程使用零知标准板&#xff08;STM32F103RBT6&#xff09;通过I2C驱动ICM20948九轴传感器&#xff0c;实现姿态解算&#xff0c;并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化&#xff0c;适合嵌入式及物联网开发者。在基础驱动上新增…...

《Docker》架构

文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器&#xff0c;docker&#xff0c;镜像&#xff0c;k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...