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

c++控制台双人格斗小游戏(测试版)

嗨嗨嗨,又是我!

我又来发博客啦!

最近太闲了,又做了个small游戏:小人-格斗(测试版)

上代码!

记得加上gamesio.h哦

#include<cstring>
#include<conio.h>
#include"gamesio.h"
//宏定义一些常量(可更改)
#define BULLETNUM 300//子弹最大数量
#define RUN 1//人物行走速度
#define BULLET_ 5//子弹射击间隔
#define BULLETRUN 2//子弹速度
#define BIGBULLET_TIME 2//手抛式原子弹移动间隔
#define JUMPHIGHT 6//跳跃高度 
using namespace std;
using namespace gio;
//结构体 
struct bullet{int x;int y;char l; char f;int z;};
struct player{int hp;int s1;int s2;int x;int y;bool jump;int ifjump;char f;
float s1_wait;float s2_wait;bool s1_ok;bool s2_ok;bool ifdown;bool ifinvin;
bool canwalk;float walk_wait;int dwontime;int invintime;bool revert;float reverttime;
bool poison;float poisontime;int energy;};//函数 
char map[22][73],OLDMAP[22][73];
void draw_map_delta(char a[22][73] ){for(int i=0;i<22;i++){if (strcmp(a[i],OLDMAP[i])!=0){go(0,i);printf("%s",a[i]);}}for(int i=0;i<22;i++){for(int j=0;j<73;j++){OLDMAP[i][j]=a[i][j];}}	 
}
void clear_map(char map[22][73]){for(int i=0;i<22;i++){for(int j=0;j<72;j++){map[i][j]=' ';}map[i][72]=0;}
}
void add_line(char map[22][73]){for(int i=0;i<72;i++){map[20][i]='-';}
}
void add_wall(char map[22][73]){for(int i=0;i<72;i++){map[21][i]='#';map[0][i]='#';}for(int i=0;i<21;i++){map[i][0]='#';map[i][71]='#';}
}
player p2;
player p1;
bullet p1_b[BULLETNUM];
bullet p2_b[BULLETNUM];
void p1_s(int l_,float*w,float wait){int p1_ii=-1;for(int i=0;i<BULLETNUM;i++){if(p1_b[i].z==0){p1_ii=i;break;}}if(p1_ii>=0){p1_b[p1_ii].l=l_;p1_b[p1_ii].z=1;p1_b[p1_ii].y=p1.y;if(p1.f=='l'){p1_b[p1_ii].x=p1.x-1;}else{p1_b[p1_ii].x=p1.x+1;}p1_b[p1_ii].f=p1.f;}*w=wait;
}
void p2_s(int l_,float*w,float wait){int p2_ii=-1;for(int i=0;i<BULLETNUM;i++){if(p2_b[i].z==0){p2_ii=i;break;}}if(p2_ii>=0){p2_b[p2_ii].l=l_;p2_b[p2_ii].z=1;p2_b[p2_ii].y=p2.y;if(p2.f=='l'){p2_b[p2_ii].x=p2.x-1;}else{p2_b[p2_ii].x=p2.x+1;}p2_b[p2_ii].f=p2.f;}*w=wait;
}
int main(){srand(time(0));int good_x;int good_y;bool good=false;hide();int BIGbullet=0;windows_tle("小人-格斗(双人游戏)");//开始界面windows_size(40,15);int in=1;while(true){system("cls");go(0,0);printf("****************************************\n");go(11,1);printf("M A N - F I G H T");if(in==1){go(13,5);printf(">1.开始游戏<");go(14,7);printf("2.游戏规则");go(14,9);printf("3.退出游戏"); }else if(in==2){go(14,5);printf("1.开始游戏");go(13,7);printf(">2.游戏规则<");go(14,9);printf("3.退出游戏"); }else if(in==3){go(14,5);printf("1.开始游戏");go(14,7);printf("2.游戏规则");go(13,9);printf(">3.退出游戏<"); }go(0,14);printf("↑↓键选择,Enter键确定");getch();if(GetAsyncKeyState(VK_UP)&0x8000){in--;if(in==0){in=1;}}else if(GetAsyncKeyState(VK_DOWN)&0x8000){in++;if(in==4){in=3;}}else if(GetAsyncKeyState(VK_RETURN)&0x8000){if(in==1){break;}else if(in==2){MessageBox(0,"这是一个双人游戏","游戏规则",MB_OK);MessageBox(0,"p1是一个实心小人","游戏规则",MB_OK);MessageBox(0,"p2是一个空心小人","游戏规则",MB_OK);MessageBox(0,"p1用wsad控制小人","游戏规则",MB_OK);MessageBox(0,"p2用↑↓←→控制小人","游戏规则",MB_OK);MessageBox(0,"p1用123键放技能","游戏规则",MB_OK);MessageBox(0,"p2用BNM键放技能","游戏规则",MB_OK);MessageBox(0,"按ESC键退出游戏","游戏规则",MB_OK);}else if(in==3){return 0;}}Sleep(100); }int game=1;while(true){system("cls");go(0,0);printf("****************************************\n");go(11,1);printf("M A N - F I G H T");if(in==1){go(13,6);printf(">1.横版对战<");go(14,8);printf("2.平面对战");}else if(in==2){go(14,6);printf("1.横版对战");go(13,8);printf(">2.平面对战<");}go(0,14);printf("↑↓键选择,Enter键确定");getch();if(GetAsyncKeyState(VK_UP)&0x8000){in--;if(in==0){in=1;}}else if(GetAsyncKeyState(VK_DOWN)&0x8000){in++;if(in==3){in=2;}}else if(GetAsyncKeyState(VK_RETURN)&0x8000){if(in==1){game=1;}else if(in==2){game=2;}break;}Sleep(100); }if(game==1){int Bullet=3;char p1_r;char p2_r;p1.x=20;p1.y=10;p1.jump=false;p1.ifjump=JUMPHIGHT+20;p1.f='r';p1.hp=100;p2.x=52;p2.y=10;p2.jump=false;p2.ifjump=JUMPHIGHT+20;p2.f='l';p2.hp=100;//选择人物界面windows_size(75,31);go(0,0);printf("p1选择人物:\n\n");printf("1.普通小人 100血\n技能1:普通射子弹\n技能2:small炸弹(向前飞,直到碰到敌人,伤害7点,CD:3.0s)\n技能3:手扔式\"原子弹\"(发射一个原子弹,伤害为50,CD:15.0s)\n\n");printf("2.super小人 70血\n技能1:普通射子弹\n技能2:super炸弹(向前飞,速度快,直到碰到敌人,伤害20点!CD:7.0s)\n技能3:super光波(发射一个光波,伤害为25,CD:10.0s)\n\n");printf("3.胖胖小人 200血\n技能1:普通射子弹\n技能2:small紫砂无人机(向前飞,直到碰到敌人,伤害2点,CD:3.0s)\n技能3:BOB(发射一个B,伤害为0,击中敌人后敌人无法攻击,持续3秒,CD:5.0s)\n\n");printf("4.耍技小人 50血\n技能1:普通射子弹\n技能2:躲闪时间!(敌人的攻击对你无效,持续3秒,CD:6.0s)\n技能3:翻滚(向前滚动10格,CD:2.0s)\n\n");printf("5.文明小人 65血\n技能1:普通射子弹\n技能2:口吐芬芳(射出一个速度极快的!,伤害5,CD:4.0s)\n技能3:极快速口吐芬芳(发射一个@,击中敌人后使敌人行动翻转,持续5秒,CD:8.0s)\n\n");printf("6.魔法小人 60血\n技能1:普通射子弹\n技能2:超级光线(射出一个激光,伤害15,CD:6.0s)\n技能3:剧毒诅咒(发射一个&,击中敌人后使敌人持续扣血,持续0.5秒,CD:6.0s)");p1_r=getch();if(p1_r=='1'){p1.hp=100;p1.s1=1;//small炸弹 p1.s1_wait=p1.s2=1;//激光波炸弹 }else if(p1_r=='2'){p1.hp=70;p1.s1=2;//super炸弹 p1.s2=2;//super炸弹 }else if(p1_r=='3'){p1.hp=200;p1.s1=3;//紫砂无人机 p1.s2=3;//BOB }else if(p1_r=='4'){p1.hp=50;p1.s1=4;//躲闪时间 p1.s2=4;//翻滚 }else if(p1_r=='5'){p1.hp=65;p1.s1=5;//口吐芬芳 p1.s2=5;//极快口吐芬芳 }else if(p1_r=='6'){p1.hp=60;p1.s1=6;//口吐芬芳 p1.s2=6;//极快口吐芬芳 }system("cls");go(0,0);printf("p2选择人物:\n\n");printf("1.普通小人 100血\n技能1:普通射子弹\n技能2:small炸弹(向前飞,直到碰到敌人,伤害7点,CD:3.0s)\n技能3:手扔式\"原子弹\"(发射一个原子弹,伤害为50,CD:15.0s)\n\n");printf("2.super小人 70血\n技能1:普通射子弹\n技能2:super炸弹(向前飞,速度快,直到碰到敌人,伤害20点!CD:7.0s)\n技能3:super光波(发射一个光波,伤害为25,CD:10.0s)\n\n");printf("3.胖胖小人 200血\n技能1:普通射子弹\n技能2:small紫砂无人机(向前飞,直到碰到敌人,伤害2点,CD:3.0s)\n技能3:BOB(发射一个B,伤害为0,击中敌人后敌人无法攻击,持续3秒,CD:5.0s)\n\n");printf("4.耍技小人 50血\n技能1:普通射子弹\n技能2:躲闪时间!(敌人的攻击对你无效,持续2秒,CD:6.0s)\n技能3:翻滚(向前滚动10格,CD:2.0s)\n\n");printf("5.文明小人 65血\n技能1:普通射子弹\n技能2:口吐芬芳(射出一个速度极快的!,伤害5,CD:4.0s)\n技能3:极快速口吐芬芳(发射一个@,击中敌人后使敌人行动翻转,持续5秒,CD:8.0s)\n\n");printf("6.魔法小人 60血\n技能1:普通射子弹\n技能2:超级光线(射出一个激光,伤害15,CD:6.0s)\n技能3:剧毒诅咒(发射一个&,击中敌人后使敌人持续扣血,持续0.5秒,CD:6.0s)");p2_r=getch();if(p2_r=='1'){p2.hp=100;p2.s1=1;//small炸弹 p2.s2=1;//手抛式原子弹 }else if(p2_r=='2'){p2.hp=70;p2.s1=2;//super炸弹 p2.s2=2;//super光波 }else if(p2_r=='3'){p2.hp=200;p2.s1=3;//紫砂无人机 p2.s2=3;//BOB }else if(p2_r=='4'){p2.hp=50;p2.s1=4;//躲闪时间 p2.s2=4;//翻滚 }else if(p2_r=='5'){p2.hp=65;p2.s1=5;//口吐芬芳 p2.s2=5;//极快口吐芬芳 }else if(p2_r=='6'){p2.hp=60;p2.s1=6;//口吐芬芳 p2.s2=6;//极快口吐芬芳 }for(int i=0;i<BULLETNUM;i++){p1_b[i].l=0;p2_b[i].l=0;} cls();p1.x=20;p1.y=10;p1.jump=false;p1.ifjump=11;p1.f='r';p1.s1_ok=true;p1.s1_wait=0.0;p1.s2_ok=true;p1.s2_wait=0.0;p2.x=52;p2.y=10;p2.jump=false;p2.ifjump=11;p2.f='l';p2.s1_ok=true;p2.s1_wait=0.0;p2.s2_ok=true;p2.s2_wait=0.0;clear_map(OLDMAP);windows_size(73,22);if(good){map[good_y][good_x]='?';}int ifgood=rand()%6+1;while(true){clear_map(map); //清空为全空格 add_line(map);//加地平线 if (p1.x>70) p1.x=70;if (p2.x>70) p2.x=70;if (p1.x<0) p1.x=0;if (p2.x<0) p2.x=0;//更改地图 if(!p1.revert && !p1.poison){if(!p1.ifdown){map[p1.y][p1.x]=1;if(p1.f=='l'){map[p1.y+1][p1.x]=17;}else{map[p1.y+1][p1.x]=16;}}else{map[p1.y][p1.x]=1;}}else if(p1.revert){if(!p1.ifdown){map[p1.y][p1.x]='@';if(p1.f=='l'){map[p1.y+1][p1.x]=17;}else{map[p1.y+1][p1.x]=16;}}else{map[p1.y][p1.x]=1;}}else{if(!p1.ifdown){map[p1.y][p1.x]='*';if(p1.f=='l'){map[p1.y+1][p1.x]=17;}else{map[p1.y+1][p1.x]=16;}}else{map[p1.y][p1.x]=1;}} if(!p2.revert && !p2.poison){if(!p2.ifdown){map[p2.y][p2.x]=2;if(p2.f=='l'){map[p2.y+1][p2.x]=17;}else{map[p2.y+1][p2.x]=16;}}else{map[p2.y][p2.x]=2;}}else if(p2.revert){if(!p2.ifdown){map[p2.y][p2.x]='@';if(p2.f=='l'){map[p2.y+1][p2.x]=17;}else{map[p2.y+1][p2.x]=16;}}else{map[p2.y][p2.x]=2;}}else{if(!p2.ifdown){map[p2.y][p2.x]='*';if(p2.f=='l'){map[p2.y+1][p2.x]=17;}else{map[p2.y+1][p2.x]=16;}}else{map[p2.y][p2.x]=2;}}for(int i=0;i<BULLETNUM;i++){if(p1_b[i].z==1){if(p1_b[i].l==0){if(p1_b[i].f=='l'){map[p1_b[i].y][p1_b[i].x]='(';}else{map[p1_b[i].y][p1_b[i].x]=')';}}else if(p1_b[i].l==1){map[p1_b[i].y][p1_b[i].x]='#';}else if(p1_b[i].l==2){map[p1_b[i].y][p1_b[i].x]='%';}else if(p1_b[i].l==3){map[p1_b[i].y][p1_b[i].x]='^';}else if(p1_b[i].l==4){if(p1_b[i].f=='l'){map[p1_b[i].y][p1_b[i].x]='[';}else{map[p1_b[i].y][p1_b[i].x]=']';}}else if(p1_b[i].l==5){map[p1_b[i].y][p1_b[i].x]='*';}else if(p1_b[i].l==6){map[p1_b[i].y][p1_b[i].x]='B';}else if(p1_b[i].l==7){map[p1_b[i].y][p1_b[i].x]='!';}else if(p1_b[i].l==8){map[p1_b[i].y][p1_b[i].x]='@';}else if(p1_b[i].l==9){map[p1_b[i].y][p1_b[i].x]='=';}else if(p1_b[i].l==10){map[p1_b[i].y][p1_b[i].x]='&';}}} for(int i=0;i<BULLETNUM;i++){if(p2_b[i].z==1){if(p2_b[i].l==0){if(p2_b[i].f=='l'){map[p2_b[i].y][p2_b[i].x]='{';}else{map[p2_b[i].y][p2_b[i].x]='}';}}else if(p2_b[i].l==1){map[p2_b[i].y][p2_b[i].x]='#';}else if(p2_b[i].l==2){map[p2_b[i].y][p2_b[i].x]='%';}else if(p2_b[i].l==3){map[p2_b[i].y][p2_b[i].x]='^';}else if(p2_b[i].l==4){if(p2_b[i].f=='l'){map[p2_b[i].y][p2_b[i].x]='[';}else{map[p2_b[i].y][p2_b[i].x]=']';}}else if(p2_b[i].l==5){map[p2_b[i].y][p2_b[i].x]='*';}else if(p2_b[i].l==6){map[p2_b[i].y][p2_b[i].x]='B';}else if(p2_b[i].l==7){map[p2_b[i].y][p2_b[i].x]='!';}else if(p2_b[i].l==8){map[p2_b[i].y][p2_b[i].x]='@';}else if(p2_b[i].l==9){map[p2_b[i].y][p2_b[i].x]='=';}else if(p2_b[i].l==10){map[p2_b[i].y][p2_b[i].x]='&';}}} if(p1.dwontime>5 && p1.ifdown){p1.ifdown=false;p1.y--;}if(p2.dwontime>5 && p2.ifdown){p2.ifdown=false;p2.y--;}if(p1.reverttime>50){p1.revert=false;}if(p2.reverttime>50){p2.revert=false;}draw_map_delta(map);//对比 map 和 OLDMAP,有差异的行才重新打印画 ,画完map => OLDMAP go(22,0);printf("p1血量:%d p2血量:%d ",p1.hp,p2.hp);//玩家死亡if(p1.hp<=0){MessageBox(0,"p2玩家胜利!!","提示",MB_OK);return 0;} if(p2.hp<=0){MessageBox(0,"p1玩家胜利!!","提示",MB_OK);return 0;}go(1,1);printf("p1技能2冷却:%.1f ",p1.s1_wait);printf("p1技能3冷却:%.1f     ",p1.s2_wait);printf("p2技能2冷却:%.1f ",p2.s1_wait);printf("p2技能3冷却:%.1f",p2.s2_wait);Sleep(50);//技能CD冷却if(p1.s1_wait>0.0){p1.s1_wait-=0.05;p1.s1_ok=false;}else{p1.s1_ok=true;}if(p1.s2_wait>0.0){p1.s2_wait-=0.05;p1.s2_ok=false;} else{p1.s2_ok=true;}if(p2.s1_wait>0.0){p2.s1_wait-=0.05;p2.s1_ok=false;}else{p2.s1_ok=true;}if(p2.s2_wait>0.0){p2.s2_wait-=0.05;p2.s2_ok=false;} else{p2.s2_ok=true;}//BOB的不可移动if(p1.walk_wait>0.0){p1.walk_wait-=0.05;p1.canwalk=false;}else{p1.canwalk=true;}if(p2.walk_wait>0.0){p2.walk_wait-=0.05;p2.canwalk=false;} else{p2.canwalk=true;}//中毒if(p1.poisontime>0.0){p1.poisontime-=0.05;p1.hp-=1;p1.poison=true;}else{p1.poison=false;}if(p2.poisontime>0.0){p2.poisontime-=0.05;p2.hp-=1;p2.poison=true;} else{p2.poison=false;}//子弹移动for(int i=0;i<BULLETNUM;i++){if(p1_b[i].z==1){if(p1_b[i].l==0){if(p1_b[i].f=='l'){p1_b[i].x-=BULLETRUN;}else{p1_b[i].x+=BULLETRUN;}}else if(p1_b[i].l==1){if(p1_b[i].f=='l'){p1_b[i].x--;}else{p1_b[i].x++;}}else if(p1_b[i].l==2 && BIGbullet%BIGBULLET_TIME==0){if(p1_b[i].f=='l'){p1_b[i].x--;}else{p1_b[i].x++;}}else if(p1_b[i].l==3){if(p1_b[i].f=='l'){p1_b[i].x--;}else{p1_b[i].x++;}}else if(p1_b[i].l==4){if(p1_b[i].f=='l'){p1_b[i].x-=2;}else{p1_b[i].x+=2;}}else if(p1_b[i].l==5){if(p1_b[i].f=='l'){p1_b[i].x--;}else{p1_b[i].x++;}}else if(p1_b[i].l==6){if(p1_b[i].f=='l'){p1_b[i].x--;}else{p1_b[i].x++;}}else if(p1_b[i].l==7){if(p1_b[i].f=='l'){p1_b[i].x-=3;}else{p1_b[i].x+=3;}}else if(p1_b[i].l==8){if(p1_b[i].f=='l'){p1_b[i].x--;}else{p1_b[i].x++;}}else if(p1_b[i].l==9){if(p1_b[i].f=='l'){p1_b[i].x-=2;}else{p1_b[i].x+=2;}}else if(p1_b[i].l==10){if(p1_b[i].f=='l'){p1_b[i].x-=2;}else{p1_b[i].x+=2;}}if(p1_b[i].x>70 || p1_b[i].x<0){p1_b[i].z=0;}}} if(!p2.ifinvin){for(int i=0;i<BULLETNUM;i++){if(p1_b[i].z==1){if((p1_b[i].x==p2.x && p1_b[i].y==p2.y) || (p1_b[i].x==p2.x+1 && p1_b[i].y==p2.y) || (p1_b[i].x==p2.x-1 && p1_b[i].y==p2.y)){if(p1_b[i].l==0){p2.hp--;}else if(p1_b[i].l==1){p2.hp-=7;}else if(p1_b[i].l==2){p2.hp-=40;}else if(p1_b[i].l==3){p2.hp-=20;}else if(p1_b[i].l==4){p2.hp-=25;}else if(p1_b[i].l==5){p2.hp-=2;}else if(p1_b[i].l==6){p2.walk_wait=3;p2.canwalk=false;}else if(p1_b[i].l==7){p2.hp-=5;}else if(p1_b[i].l==8){p2.reverttime=0;p2.revert=true;}else if(p1_b[i].l==9){p2.hp-=15;}else if(p1_b[i].l==10){p2.poison=true;p2.poisontime=0.5;}p1_b[i].z=0;}}} }for(int i=0;i<BULLETNUM;i++){if(p2_b[i].z==1){if(p2_b[i].l==0){if(p2_b[i].f=='l'){p2_b[i].x-=BULLETRUN;}else{p2_b[i].x+=BULLETRUN;}}else if(p2_b[i].l==1){if(p2_b[i].f=='l'){p2_b[i].x--;}else{p2_b[i].x++;}}else if(p2_b[i].l==2 && BIGbullet%BIGBULLET_TIME==0){if(p2_b[i].f=='l'){p2_b[i].x--;}else{p2_b[i].x++;}}else if(p2_b[i].l==3){if(p2_b[i].f=='l'){p2_b[i].x--;}else{p2_b[i].x++;}}else if(p2_b[i].l==4){if(p2_b[i].f=='l'){p2_b[i].x-=2;}else{p2_b[i].x+=2;}}else if(p2_b[i].l==5){if(p2_b[i].f=='l'){p2_b[i].x--;}else{p2_b[i].x++;}}else if(p2_b[i].l==6){if(p2_b[i].f=='l'){p2_b[i].x--;}else{p2_b[i].x++;}}else if(p2_b[i].l==7){if(p2_b[i].f=='l'){p2_b[i].x-=3;}else{p2_b[i].x+=3;}}else if(p2_b[i].l==8){if(p2_b[i].f=='l'){p2_b[i].x--;}else{p2_b[i].x++;}}else if(p2_b[i].l==9){if(p2_b[i].f=='l'){p2_b[i].x-=2;}else{p2_b[i].x+=2;}}else if(p2_b[i].l==10){if(p2_b[i].f=='l'){p2_b[i].x-=2;}else{p2_b[i].x+=2;}}if(p2_b[i].x>70 || p2_b[i].x<0){p2_b[i].z=0;}}}if(!p1.ifinvin){for(int i=0;i<BULLETNUM;i++){if(p2_b[i].z==1){if((p2_b[i].x==p1.x && p2_b[i].y==p1.y) || (p2_b[i].x==p1.x+1 && p2_b[i].y==p1.y) || (p2_b[i].x==p1.x-1 && p2_b[i].y==p1.y)){if(p2_b[i].l==0){p1.hp--;}else if(p2_b[i].l==1){p1.hp-=7;}else if(p2_b[i].l==2){p1.hp-=40;}else if(p2_b[i].l==3){p1.hp-=20;}else if(p2_b[i].l==4){p1.hp-=25;}else if(p2_b[i].l==5){p1.hp-=2;}else if(p2_b[i].l==6){p1.walk_wait=3;p1.canwalk=false;}else if(p2_b[i].l==7){p1.hp-=5;}else if(p2_b[i].l==8){p1.reverttime=0;p1.revert=true;}else if(p2_b[i].l==9){p1.hp-=15;}else if(p2_b[i].l==10){p1.poison=true;p1.poisontime=0.5;}p2_b[i].z=0;}}} }if(p1.invintime>59){p1.ifinvin=false;}if(p2.invintime>59){p2.ifinvin=false;}if(!p1.jump && p1.ifjump>JUMPHIGHT){p1.y++;if(map[p1.y+2][p1.x]=='-'){p1.jump=true;}}else if(p1.ifjump<JUMPHIGHT){p1.y--;}if(!p2.jump && p2.ifjump>JUMPHIGHT){p2.y++;if(map[p2.y+2][p2.x]=='-'){p2.jump=true;}}else if(p2.ifjump<JUMPHIGHT){p2.y--;}if(!p2.ifdown){//p2玩家 if(Key(left)){if(!p2.revert){p2.x-=RUN;p2.f='l';}else{p2.x+=RUN;p2.f='r';}}if(Key(right)){if(!p2.revert){p2.x+=RUN;p2.f='r';}else{p2.x-=RUN;p2.f='l';}}if(Key(up) && p2.jump){p2.jump=false;p2.ifjump=0;}if(p2.canwalk){if(Key('B') && Bullet%BULLET_==0){int p2_ii=-1;for(int i=0;i<BULLETNUM;i++){if(p2_b[i].z==0){p2_ii=i;break;}}if(p2_ii>=0){p2_b[p2_ii].z=1;p2_b[p2_ii].y=p2.y;if(p2.f=='l'){p2_b[p2_ii].x=p2.x-1;}else{p2_b[p2_ii].x=p2.x+1;}p2_b[p2_ii].f=p2.f;}}if(Key('N') && p2.s1_ok){if(p2.s1==1){p2_s(1,&p2.s1_wait,3);}else if(p2.s1==2){p2_s(3,&p2.s1_wait,7);}else if(p2.s1==3){int p2_ii=-1;for(int i=0;i<BULLETNUM;i++){if(p2_b[i].z==0){p2_ii=i;break;}}if(p2_ii>=0){p2_b[p2_ii].l=5;p2_b[p2_ii].z=1;p2_b[p2_ii].y=p2.y;if(p2.x>p1.x){p2_b[p2_ii].x=p2.x-1;p2_b[p2_ii].f='l';}else if(p2.x<p1.x){p2_b[p2_ii].x=p2.x+1;p2_b[p2_ii].f='r';}else{p2_b[p2_ii].z=0;p1.hp-=2;}}p2.s1_wait=3;}else if(p2.s1==4 && !p2.ifdown && !p2.ifinvin){p2.ifinvin=true;p2.invintime=0;p2.s1_wait=6;}else if(p2.s1==5){p2_s(7,&p2.s1_wait,3);}else if(p2.s2==6){p2_s(9,&p2.s1_wait,6);}}if(Key('M') && p2.s2_ok){if(p2.s2==1){p2_s(2,&p2.s2_wait,15);}else if(p2.s2==2){p2_s(4,&p2.s2_wait,10);}else if(p2.s2==3){p2_s(6,&p2.s2_wait,7);}else if(p2.s2==4 && !p2.ifdown){p2.ifdown=true;p2.y++;p2.dwontime=0;p2.s2_wait=2;}else if(p2.s2==5){p2_s(8,&p2.s2_wait,7);}else if(p2.s2==6){p2_s(10,&p2.s2_wait,6);}}}}else{if(p2.f=='r'){p2.x+=2;}else{p2.x-=2;}}if(!p1.ifdown){//p1玩家 if(Key('A')){if(!p1.revert){p1.x-=RUN;p1.f='l';}else{p1.x+=RUN;p1.f='r';}}if(Key('D')){if(!p1.revert){p1.x+=RUN;p1.f='r';}else{p1.x-=RUN;p1.f='l';}}if(Key('W')&& p1.jump){p1.jump=false;p1.ifjump=0;}if(p1.canwalk){if(Key('1') && Bullet%BULLET_==0){int p1_ii=-1;for(int i=0;i<BULLETNUM;i++){if(p1_b[i].z==0){p1_ii=i;break;}}if(p1_ii>=0){p1_b[p1_ii].l=0;p1_b[p1_ii].z=1;p1_b[p1_ii].y=p1.y;if(p1.f=='l'){p1_b[p1_ii].x=p1.x-1;}else{p1_b[p1_ii].x=p1.x+1;}p1_b[p1_ii].f=p1.f;}}if(Key('2') && p1.s1_ok){if(p1.s1==1){p1_s(1,&p1.s1_wait,3);}else if(p1.s1==2){p1_s(3,&p1.s1_wait,7);}else if(p1.s1==3){int p1_ii=-1;for(int i=0;i<BULLETNUM;i++){if(p1_b[i].z==0){p1_ii=i;break;}}if(p1_ii>=0){p1_b[p1_ii].l=5;p1_b[p1_ii].z=1;p1_b[p1_ii].y=p1.y;if(p1.x>p2.x){p1_b[p1_ii].x=p1.x-1;p1_b[p1_ii].f='l';}else if(p1.x<p2.x){p1_b[p1_ii].x=p1.x+1;p1_b[p1_ii].f='r';}else{p1_b[p1_ii].z=0;p2.hp-=2;}}p1.s1_wait=3;}else if(p1.s1==4 && !p1.ifdown && !p1.ifinvin){p1.ifinvin=true;p1.invintime=0;p1.s1_wait=6;}else if(p1.s1==5){p1_s(7,&p1.s1_wait,4);}else if(p1.s1==6){p1_s(9,&p1.s1_wait,6);}}if(Key('3') && p1.s2_ok){if(p1.s2==1){p1_s(2,&p1.s2_wait,15);}else if(p1.s2==2){p1_s(4,&p1.s2_wait,10);}else if(p1.s2==3){p1_s(6,&p1.s2_wait,7);}else if(p1.s2==4 && !p1.ifdown){p1.ifdown=true;p1.y++;p1.dwontime=0;p1.s2_wait=2;}else if(p1.s2==5){p1_s(8,&p1.s2_wait,7);}else if(p1.s2==6){p1_s(10,&p1.s2_wait,6);}}}}else{if(p1.f=='r'){p1.x+=2;}else{p1.x-=2;}}p1.dwontime++;p1.invintime++;p2.dwontime++;p2.invintime++;p2.ifjump++;p1.ifjump++;p1.reverttime++;p2.reverttime++;//子弹射击间隔Bullet++;BIGbullet++;//判断游戏退出if(Key(esc)){return 0;} }}else{int Bullet=3;windows_size(72,25);clear_map(OLDMAP);p1.x=20;p1.y=10;p1.f='r';p1.energy=100;p2.x=52;p2.y=10;p2.f='l';p2.energy=100;while(true){clear_map(map);add_wall(map);if(p1.x<1){p1.x=1;}if(p1.x>70){p1.x=70;}if(p1.y<1){p1.y=1;}if(p1.y>20){p1.y=20;}if(p2.x<1){p2.x=1;}if(p2.x>70){p2.x=70;}if(p2.y<1){p2.y=1;}if(p2.y>20){p2.y=20;}//更改地图 map[p2.y][p2.x]=2;map[p1.y][p1.x]=1;for(int i=0;i<BULLETNUM;i++){if(p1_b[i].z==1){if(p1_b[i].l==0){map[p1_b[i].y][p1_b[i].x]='&';}}}for(int i=0;i<BULLETNUM;i++){if(p2_b[i].z==1){if(p2_b[i].l==0){map[p2_b[i].y][p2_b[i].x]='@';}}}draw_map_delta(map);go(2,1);printf("p1能量:%d ",p1.energy);go(60,1);printf("p2能量:%d ",p2.energy);Sleep(100);if(p1.energy<100){p1.energy+=1;}if(p2.energy<100){p2.energy+=1;}//子弹移动for(int i=0;i<BULLETNUM;i++){if(p1_b[i].z==1){if(p1_b[i].l==0){if(p1_b[i].f=='u'){p1_b[i].y-=BULLETRUN;}if(p1_b[i].f=='d'){p1_b[i].y+=BULLETRUN;}if(p1_b[i].f=='r'){p1_b[i].x+=BULLETRUN;}if(p1_b[i].f=='l'){p1_b[i].x-=BULLETRUN;}}if(p1_b[i].y>=20 || p1_b[i].y<=0 || p1_b[i].x<=0 || p1_b[i].x>=70){p1_b[i].z=0;}}} for(int i=0;i<BULLETNUM;i++){if(p2_b[i].z==1){if(p2_b[i].l==0){if(p2_b[i].f=='u'){p2_b[i].y-=BULLETRUN;}if(p2_b[i].f=='d'){p2_b[i].y+=BULLETRUN;}if(p2_b[i].f=='r'){p2_b[i].x+=BULLETRUN;}if(p2_b[i].f=='l'){p2_b[i].x-=BULLETRUN;}}if(p2_b[i].y>=20 || p2_b[i].y<=0 || p2_b[i].x<=0 || p2_b[i].x>=70){p2_b[i].z=0;}}} //p1玩家 if(Key('A')){if(!p1.revert){p1.x-=RUN;p1.f='l';}else{p1.x+=RUN;p1.f='r';}}if(Key('D')){if(!p1.revert){p1.x+=RUN;p1.f='r';}else{p1.x-=RUN;p1.f='l';}}if(Key('W')){if(!p1.revert){p1.y-=RUN;p1.f='u';}else{p1.y+=RUN;p1.f='d';}}if(Key('S')){if(!p1.revert){p1.y+=RUN;p1.f='d';}else{p1.y-=RUN;p1.f='u';}}if(Key('1') && Bullet%BULLET_==0){int p1_ii=-1;for(int i=0;i<BULLETNUM;i++){if(p1_b[i].z==0){p1_ii=i;break;}}if(p1_ii>=0){p1_b[p1_ii].l=0;p1_b[p1_ii].z=1;p1_b[p1_ii].y=p1.y;p1_b[p1_ii].x=p1.x;if(p1.f=='l'){p1_b[p1_ii].x=p1.x-1;}else if(p1.f=='r'){p1_b[p1_ii].x=p1.x+1;}else if(p1.f=='u'){p1_b[p1_ii].y=p1.y-1;}else if(p1.f=='d'){p1_b[p1_ii].y=p1.y+1;}p1_b[p1_ii].f=p1.f;}}if(Key('2') && p1.energy>=50){int p1_ii=-1;for(int i=0;i<BULLETNUM;i++){if(p1_b[i].z==0){p1_ii=i;break;}}if(p1_ii>=0){p1_b[p1_ii].l=0;p1_b[p1_ii].z=1;p1_b[p1_ii].y=p1.y;p1_b[p1_ii].x=p1.x+1;p1_b[p1_ii].f='r';}p1_ii=-1;for(int i=0;i<BULLETNUM;i++){if(p1_b[i].z==0){p1_ii=i;break;}}if(p1_ii>=0){p1_b[p1_ii].l=0;p1_b[p1_ii].z=1;p1_b[p1_ii].y=p1.y;p1_b[p1_ii].x=p1.x-1;p1_b[p1_ii].f='l';}p1_ii=-1;for(int i=0;i<BULLETNUM;i++){if(p1_b[i].z==0){p1_ii=i;break;}}if(p1_ii>=0){p1_b[p1_ii].l=0;p1_b[p1_ii].z=1;p1_b[p1_ii].y=p1.y+1;p1_b[p1_ii].x=p1.x;p1_b[p1_ii].f='d';}p1_ii=-1;for(int i=0;i<BULLETNUM;i++){if(p1_b[i].z==0){p1_ii=i;break;}}if(p1_ii>=0){p1_b[p1_ii].l=0;p1_b[p1_ii].z=1;p1_b[p1_ii].y=p1.y+1;p1_b[p1_ii].x=p1.x;p1_b[p1_ii].f='u';}p1.energy-=50;}//p1玩家 if(Key(VK_LEFT)){if(!p2.revert){p2.x-=RUN;p2.f='l';}else{p2.x+=RUN;p2.f='r';}}if(Key(VK_RIGHT)){if(!p2.revert){p2.x+=RUN;p2.f='r';}else{p2.x-=RUN;p2.f='l';}}if(Key(VK_UP)){if(!p2.revert){p2.y-=RUN;p2.f='u';}else{p2.y+=RUN;p2.f='d';}}if(Key(VK_DOWN)){if(!p2.revert){p2.y+=RUN;p2.f='d';}else{p2.y-=RUN;p2.f='u';}}if(Key('B') && Bullet%BULLET_==0){int p2_ii=-1;for(int i=0;i<BULLETNUM;i++){if(p2_b[i].z==0){p2_ii=i;break;}}if(p2_ii>=0){p2_b[p2_ii].l=0;p2_b[p2_ii].z=1;p2_b[p2_ii].y=p2.y;p2_b[p2_ii].x=p2.x;if(p2.f=='l'){p2_b[p2_ii].x=p2.x-1;}else if(p2.f=='r'){p2_b[p2_ii].x=p2.x+1;}else if(p2.f=='u'){p2_b[p2_ii].y=p2.y-1;}else if(p2.f=='d'){p2_b[p2_ii].y=p2.y+1;}p2_b[p2_ii].f=p2.f;}}if(Key('N') && p2.energy>=50){int p2_ii=-1;for(int i=0;i<BULLETNUM;i++){if(p2_b[i].z==0){p2_ii=i;break;}}if(p2_ii>=0){p2_b[p2_ii].l=0;p2_b[p2_ii].z=1;p2_b[p2_ii].y=p2.y;p2_b[p2_ii].x=p2.x+1;p2_b[p2_ii].f='r';}p2_ii=-1;for(int i=0;i<BULLETNUM;i++){if(p2_b[i].z==0){p2_ii=i;break;}}if(p2_ii>=0){p2_b[p2_ii].l=0;p2_b[p2_ii].z=1;p2_b[p2_ii].y=p2.y;p2_b[p2_ii].x=p2.x-1;p2_b[p2_ii].f='l';}p2_ii=-1;for(int i=0;i<BULLETNUM;i++){if(p2_b[i].z==0){p2_ii=i;break;}}if(p2_ii>=0){p2_b[p2_ii].l=0;p2_b[p2_ii].z=1;p2_b[p2_ii].y=p2.y+1;p2_b[p2_ii].x=p2.x;p2_b[p2_ii].f='d';}p2_ii=-1;for(int i=0;i<BULLETNUM;i++){if(p2_b[i].z==0){p2_ii=i;break;}}if(p2_ii>=0){p2_b[p2_ii].l=0;p2_b[p2_ii].z=1;p2_b[p2_ii].y=p2.y-1;p2_b[p2_ii].x=p2.x;p2_b[p2_ii].f='u';}p2.energy-=50;}Bullet++;//判断游戏退出if(Key(esc)){return 0;}}} 
} 

目前平面对战没有做完,只能先玩横版对战哦~

点个赞吧QWQ

相关文章:

c++控制台双人格斗小游戏(测试版)

嗨嗨嗨,又是我! 我又来发博客啦! 最近太闲了,又做了个small游戏:小人-格斗(测试版) 上代码! 记得加上gamesio.h哦 #include<cstring> #include<conio.h> #include"gamesio.h" //宏定义一些常量(可更改) #define BULLETNUM 300//子弹最大数量 #defin…...

flink jira 提交开源bug

注册apache issue账号,并申请flink空间的权限后. 提问题/bug 查看已经提交的问题:...

华为杯”研究生数学建模竞赛2018年-【华为杯】D题:基于卫星高度计海面高度异常资料 获取潮汐调和常数方法及应用(续)

目录 5.3 沿轨道各分潮的潮汐调和常数的正压潮和内潮的分离 5.3.1 数据处理 5.3.2 模型准备...

HTTP连接管理

基础知识&#xff1a;非持久连接 HTTP初始时1.0版本在浏览器每一次向服务器请求完资源都会立即断开TCP连接&#xff0c;如果想要请求多个资源&#xff0c;就必须建立多个连接&#xff0c;这就导致了服务端和客户端维护连接的开销。 例如&#xff1a;一个网页中包含文字资源也包…...

漏洞指北-VulFocus靶场专栏-初级02

漏洞指北-VulFocus靶场02-初级 初级005 &#x1f338;phpunit 远程代码执行 (CVE-2017-9841)&#x1f338;step1&#xff1a;进入漏洞页step2&#xff1a; burpsuite 抓包,等待请求页&#xff0c;获得flag 初级006 &#x1f338;splunk 信息泄露 &#xff08;CVE-2018-11409&am…...

无论是小说、公文还是新闻稿,爱校对都是你的最佳选择

在这个数字化的时代&#xff0c;写作已经渗透到我们生活的方方面面。从小说家到政府官员&#xff0c;再到新闻记者&#xff0c;每个人都需要确保他们的文本内容无瑕疵、逻辑清晰。这就是“爱校对”进入舞台的地方。它不仅仅是一个校对工具&#xff0c;更是每个写作者都不可或缺…...

MySQL数据表的损坏及容灾解决方案

引言 在互联网应用中&#xff0c;MySQL是最常用的关系型数据库之一。然而&#xff0c;数据表的损坏可能会导致数据丢失或无法正常访问&#xff0c;给业务运营带来严重影响。本文将讨论MySQL数据表容易损坏的情况&#xff0c;并提供相应的容灾解决方案。 推荐阅读 AI文本 OCR…...

【仿写tomcat】二、扫描java文件,获取带有@WebServlet注解的类

tomcat仿写 项目结构扫描文件servlet注解map容器servlet工具类启动类调用 项目结构 扫描文件之前当然要确定一下项目结构了&#xff0c;我这里的方案是tomcat和项目同级 项目的话就仿照我们平时使用的结构就好了&#xff0c;我们规定所有的静态资源文件都在webApp目录下存放…...

pytorch2.0.1 安装部署(cpu+gpu) linux+windows

官网打开可能较慢&#xff0c;耐心等待 pytorch官网 以下操作在默认网络环境即可使用&#xff0c;2023年8月20日更新 一、说明和前期准备 1.pytorch是一个和tensorflow类似的框架 如果需要安装tensorflow&#xff0c;可以参考&#xff1a; tensorflow 1&#xff0c;2 cpugpu…...

Java数据结构学习和源码阅读(线性数据结构)

线性数据结构 链表 LinkList 链表的数据结构 一组由节点组成的数据结构&#xff0c;每个元素指向下一个元素&#xff0c;是线性序列。 最简单的链表结构&#xff1a; 数据指针&#xff08;存放执行下一个节点的指针&#xff09; 不适合的场景&#xff1a; 需要循环遍历将…...

华为网络篇 多区域OSPF-32

难度2复杂度2 目录 一、实验原理 二、实验拓扑 三、实验步骤 四、实验过程 总结 一、实验原理 OSPF是一种具有区域概念的路由协议&#xff0c;为什么需要分区域&#xff1f;像RIP那样都在一个区域配置也不多这样简单点不是更好吗&#xff1f;OSPF它是一种功能十分强大的IG…...

【HCIP】03.VLAN高级技术

Eth-trunk 链路聚合&#xff0c;定义出一个逻辑聚合口&#xff0c;把物理接口和逻辑接口关联&#xff0c;此时在STP中&#xff0c;会把多个物理接口看成一个逻辑接口&#xff0c;此时不会出现环路。 接口负载分担&#xff08;逐包|逐流&#xff09; 基于IP的散列算法能保证包…...

WebSocket服务端数据推送及心跳机制(Spring Boot + VUE)

一、WebSocket简介 HTML5规范在传统的web交互基础上为我们带来了众多的新特性&#xff0c;随着web技术被广泛用于web APP的开发&#xff0c;这些新特性得以推广和使用&#xff0c;而websocket作为一种新的web通信技术具有巨大意义。WebSocket是HTML5新增的协议&#xff0c;它的…...

根据Dockerfile创建容器案例讲解

-f为dokerfile的路径&#xff0c; -t为新镜像的名称及版本。 后面这个点是寻址路径。...

CF 1328 D Carousel(环构造)

CF 1328 D. Carousel(环构造) Problem - D - Codeforces 大意&#xff1a;给出一个 n 个数组成的环 &#xff0c; 要对环上的点染色 &#xff0c; 要求任意一个相邻数不同的点对染色不同 &#xff0c;求使用最少的颜色数 &#xff0c; 并用颜色数排列构造一种染色方案。 思路…...

什么是SaaS、PaaS、aPaaS、iPaaS、IaaS,一文讲透

在数字化的带动下&#xff0c;各行业对云服务的需求进入快速增长期。 SaaS、PaaS、aPaaS、iPaaS、IaaS…… 这些词经常出现&#xff0c;那么他们分别是什么意思&#xff1f;又有什么区别&#xff1f;小帆带大家一起来看看~ SaaS SaaS&#xff0c;Software as a Service&…...

Mac nvm 切换为淘宝镜像

编辑环境配置 # 或者 vim ~/.bash_profile $ vim ~/.zshrc贴入镜像 # 淘宝镜像 export NVM_NODEJS_ORG_MIRRORhttp://npm.taobao.org/mirrors/node export NVM_IOJS_ORG_MIRRORhttp://npm.taobao.org/mirrors/iojs# nvm环境配置 export NVM_DIR"$HOME/.nvm"[ -s &quo…...

aardio简单网站css或js下载练习

import win.ui; /*DSG{{*/ var winform win.form(text"下载网站css或js";right664;bottom290;maxfalse) winform.add( buttonClose{cls"button";text"退出";left348;top204;right498;bottom262;color14120960;fontLOGFONT(h-14);note" &qu…...

“维度削减+逻辑回归”:如何使用PCA大幅提升乳腺癌的预测成功率?

一、引言 乳腺癌是女性中最常见的恶性肿瘤之一&#xff0c;也影响着全球范围内许多人们的健康。据世界卫生组织&#xff08;WHO&#xff09;的数据&#xff0c;乳腺癌是全球癌症发病率和死亡率最高的肿瘤之一&#xff0c;其对个体和社会的危害不可忽视。因此&#xff0c;早期乳…...

Python程序设计基础:random库的使用

文章目录 一、常见的random库函数二、应用实例 一、常见的random库函数 在使用Python语言进行编程计算时&#xff0c;计算机完成的计算主要是确定的&#xff0c;但是在将其进行应用时&#xff0c;人们会模拟现实生活中的现象和活动&#xff0c;希望其增加一些随机性&#xff0…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

面试高频问题

文章目录 &#x1f680; 消息队列核心技术揭秘&#xff1a;从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"&#xff1f;性能背后的秘密1.1 顺序写入与零拷贝&#xff1a;性能的双引擎1.2 分区并行&#xff1a;数据的"八车道高速公路"1.3 页缓存与批量处理…...

图解JavaScript原型:原型链及其分析 | JavaScript图解

​​ 忽略该图的细节&#xff08;如内存地址值没有用二进制&#xff09; 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么&#xff1a;保存在堆中一块区域&#xff0c;同时在栈中有一块区域保存其在堆中的地址&#xff08;也就是我们通常说的该变量指向谁&…...