人机打怪小游戏(非常人机)

按q攻击 按箭头进行控制 玩家是@ 怪是* 攻击是^

cpp 复制代码
​
​
#include<bits/stdc++.h>
#include<Windows.h>
#include<conio.h>
#define fr(i,a,b) for(int i=a;i<=b;i++)
#define rd(a,b) rand()%(b-a+1)+a
using namespace std;
int x=16,y=21,dx[4]={-1,0,1,0},dy[4]={0,1,0,-1},timeand,defe,times_q;
int b[2][1100000],q1=1,z1,times,vik[1100000];
int c[2][1100000],q2=1,z2,vis[1100000];
const int N=30,M=40;
void color(int clr)
{
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),clr);
}
void gb_close()
{
	CONSOLE_CURSOR_INFO cur;
	cur.dwSize=1;
	cur.bVisible=FALSE;
	HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleCursorInfo(handle,&cur);
}
void gb_jump(int x,int y)
{
	gb_close();
	COORD pos;
	pos.X=x;
	pos.Y=y;
	HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleCursorPosition(handle,pos);
	gb_close();
}
void print()
{
	color(11);
	for(int i=1;i<=M+1;i++)
	{
		gb_jump(i,1);
		printf("_");
	}
	for(int i=2;i<=N+1;i++)
	{
		gb_jump(1,i);
		printf("|");
		gb_jump(M+1,i);
		printf("|");
	}
	for(int i=2;i<=M;i++)
	{
		gb_jump(i,N+1);
		printf("_");
	}
	gb_jump(50,15);
	printf("得分:%d",defe); 
	color(7);
}
void make()
{
	b[0][++z1]=2;
	b[1][z1]=rd(2,40);
}
void make2()
{
	c[0][++z2]=x-1;
	c[1][z2]=y;
}
void KO()
{
	system("cls");
	color(4);
	printf("  |       /      _____     \n");
	printf("  |      /      /     \\    \n");
	printf("  |     /      /       \\   \n");
	printf("  |    /      |         |  \n");
	printf("  |   /       |         |  \n");
	printf("  |  /        |         |  \n");
	printf("  | /         |         |  \n");
	printf("  |/          |         |         得分:%d \n",defe/30);
	printf("  |\\          |         |  \n");
	printf("  | \\         |         |  \n");
	printf("  |  \\        |         |  \n");
	printf("  |   \\       |         |  \n");
	printf("  |    \\      |         |  \n");
	printf("  |     \\      \\        /  \n");
	printf("  |      \\      \\      /   \n");
	printf("  |       \\      \\____/    \n");
	color(0);
	Sleep(100000);
	exit(0);
}
int main()
{
	system("mode con cols=3000 lines=200");
	srand(time(NULL));
	system("pause");
	system("cls");
	printf("选择难度:\n1.入门		2.普通		3.较难		4.地狱\n");
	int qjqjq;
	scanf("%d",&qjqjq);
	if(qjqjq==1)
	{
		timeand=2e4;
	}
	else if(qjqjq==2)
	{
		timeand=1e4;
	}
	else if(qjqjq==3)
	{
		timeand=5e3;
	}
	else if(qjqjq==4)
	{
		timeand=2e3;
	}
	else
	{
		system("cls");
		return 0;
	}
	system("cls");
	printf("开始");
	Sleep(3000);
	system("cls");
	print();
	gb_jump(y,x);
	color(6);
	printf("@");
	color(7);
	while(true)
	{
		if(times_q>=100)
		{
			system("cls");
			color(4);
			printf("吃屎吧!!!!!!!!!!!!!");
			Sleep(10000000);
			return 0; 
		}
		while(!kbhit())
		{
			times++;
			if(times>=timeand)
			{
				color(6);
				gb_jump(y,x);
				printf("@");
				color(7);
				defe++;
				color(11);
				gb_jump(50,15);
				printf("得分:%d",defe/30);
				color(7);
				times=0;
				make();
				for(int i=q1;i<=z1;i++)
				{
					if(vik[i])
					{
						continue;
					}
					if(b[0][i]>=N)
					{
						q1++;
						gb_jump(b[1][i],b[0][i]);
						printf(" ");
						continue;
					}
					gb_jump(b[1][i],b[0][i]);
					printf(" ");
					b[0][i]++;
					gb_jump(b[1][i],b[0][i]);
					if(b[0][i]==x&&b[1][i]==y)
					{
						KO();
					}
					bool flag=0;
					for(int j=q2;j<=z2;j++)
					{
						if(vis[j]==0&&b[0][i]==c[0][j]&&b[1][i]==c[1][j])
						{
							vik[i]=1;
							vis[j]=1;
							flag=1;
							gb_jump(c[1][j],c[0][j]);
							printf(" ");
							break;
						}
					}
					if(!flag)
					{
						color(13);
						gb_jump(b[1][i],b[0][i]);
						printf("*");
						color(7);
					}
				}
				for(int i=q2;i<=z2;i++)
				{
					if(vis[i])
					{
						continue;
					}
					if(c[0][i]<=2)
					{
						q2++;
						gb_jump(c[1][i],c[0][i]);
						printf(" ");
						continue;
					}
					gb_jump(c[1][i],c[0][i]);
					printf(" ");
					c[0][i]--;
					gb_jump(c[1][i],c[0][i]);
					bool flag2=0;
					for(int j=q1;j<=z1;j++)
					{
						if(vik[j]==0&&b[0][j]==c[0][i]&&b[1][j]==c[1][i])
						{
							vik[j]=1;
							vis[i]=1;
							flag2=1;
							gb_jump(b[1][i],b[0][i]);
							printf(" ");
							break;
						}
					}
					if(!flag2)
					{
						color(10);
						printf("^");
						color(7);
					}
				}
			}
		}
		char tsg=getch();
		if(tsg=='a')
		{
			char lk=getch();
			while(lk!='a')
			{
				lk=getch();
			}
			continue;
		}
		if(tsg=='q')
		{
			times_q++;
			make2();
			continue;
		}
		char k=getch();
		if(k!=72&&k!=75&&k!=77&&k!=80&&k!='a'&&k!='q')
		{
			continue;
		}
		gb_jump(y,x);
		printf(" ");
		if(k==72)
		{
			if(x>2)
			{
				x--;
			}
		}
		if(k==75)
		{
			if(y>2)
			{
				y--;
			}
		}
		if(k==77)
		{
			if(y<M)
			{
				y++;
			}
		}
		if(k==80)
		{
			if(x<N)
			{
				x++;
			}
		}
		gb_jump(y,x);
		color(6);
		printf("@");
		color(7);
	}
	return 0;
}

​

​
相关推荐
qq_428639614 小时前
植物明星大乱斗15
c++·算法·游戏
捕鲸叉5 小时前
C++创建型模式之生成器模式
开发语言·c++·建造者模式
oioihoii5 小时前
单例模式详解
c++·单例模式·c#·大学必学
ikkkkkkkl5 小时前
深述C++模板类
开发语言·c++
Peter_chq6 小时前
【计算机网络】HTTP协议
linux·c语言·开发语言·网络·c++·后端·网络协议
vir026 小时前
好奇怪的游戏(BFS)
数据结构·c++·算法·游戏·深度优先·图论·宽度优先
kitesxian6 小时前
Leetcode128. 最长连续序列(HOT100)
c++
m0_675988236 小时前
Leetcode3244:新增道路查询后的最短距离 II(C++)
c++·算法·leetcode
胜天半子_王二_王半仙7 小时前
c++源码阅读__ThreadPool__正文阅读
开发语言·c++·开源