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

嗨嗨嗨,又是我!

我又来发博客啦!

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

上代码!

记得加上gamesio.h哦

#include
#include
#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=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=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;i70) 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;i5 && 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;i70 || p1_b[i].x<0){p1_b[i].z=0;}
				}
			} 
			if(!p2.ifinvin){
				for(int i=0;i70 || p2_b[i].x<0){p2_b[i].z=0;}
				}
			}
			if(!p1.ifinvin){
				for(int i=0;i59){
				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.ifjumpJUMPHIGHT){
				p2.y++;
				if(map[p2.y+2][p2.x]=='-'){
					p2.jump=true;
				}
			}else if(p2.ifjump=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=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=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=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.x70){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=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=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=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=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=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=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=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=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=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=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=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=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++,自制,小游戏,c++,小游戏,自制)