FUN GAME 一款普通的C++游戏

凑合看吧,不是完整版。

#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
using namespace std;
#define pt puts
#define pf printf
#define pc putchar
#define sf scanf
#define gt gets
#define sl Sleep
char name[101];
stack<int>gun;
bool chance;
const char Y[101]={"烟:可以回复一格血量"};
const char J[101]={"酒:可以弹出弹仓里的一枚子弹"};
const char F[101]={"放大镜:可以查看弹仓里的一枚子弹"};
const char D[101]={"刀:可以使下一发实弹伤害翻倍"};
const char S[101]={"手铐:可以使自己多操作一回合"};
void home();
void first();
void second();
void third();
inline int randtool(int x)//x枚子弹,y枚实弹 
{
	int y=rand()%((x+1)/2)+1;
	bool use[101];
	memset(use,false,sizeof(use));
	for(int i=1;i<=y;i++)
	{
		int z=rand()%x+1;
		if(use[z]==true)
		{
			i--;
		}
		else
		{
			use[z]=true;
		}
	}
	for(int i=1;i<=x;i++)
	{
		if(use[i]==true)
		{
			gun.push(1);
		}
		else
		{
			gun.push(0);
		}
	}
	return y;
}
void first()
{
	system("cls");
	int ai=2,player=2;
	bool quan=true;
	pt("进入第一关");
	sl(3000); 
	while(ai>0&&player>0)
	{
		system("cls");
		pf("您的剩余血量为%d\n",player);
		pf("对方的剩余血量为%d\n",ai);
		sl(3000);
		if(gun.empty())
		{
			system("cls");
			int m=rand()%2+3;
			int n=randtool(m);
			pf("%d枚实弹 %d枚空弹\n",n,m-n);
			pt("子弹装填中……");
			sl(3000);
		}
		int l=gun.top();
		gun.pop();
		int did=0;
		if(quan==true)
		{
			system("cls");
			pt("现在是您的回合");
			pt("按9使用桌上的枪");
			while(did!='9')
			{
				did=getch();
			}
			system("cls");
			pt("按1对对方开枪");
			pt("按0对自己开枪");
			while(did!='0'&&did!='1')
			{
				did=getch();
			}
			system("cls");
			if(did=='0')
			{
				pt("您选择对自己开枪");
				sl(3000);
				if(l==1)
				{
					pt("枪中是实弹");
					sl(3000);
					player--;
				}
				else
				{
					pt("枪中是空弹");
					sl(3000);
				}
			}
			else
			{
				pt("您选择对对方开枪");
				sl(3000);
				if(l==1)
				{
					pt("枪中是实弹");
					sl(3000);
					ai--;
				}
				else
				{
					pt("枪中是空弹");
					sl(3000);
				}
				if(ai>0)
				{
					pt("主动权来到了对方手上");
					sl(3000);
					quan=false;
				}
			}
		}
		else
		{
			system("cls");
			pt("人机计算中……");
			did=rand()%2;
			system("cls");
			if(did==0)
			{
				pt("对方选择对自己开枪");
				sl(3000);
				if(l==1)
				{
					pt("枪中是实弹");
					sl(3000);
					ai--;
				}
				else
				{
					pt("枪中是空弹");
					sl(3000);
				}
			}
			else
			{
				pt("对方选择对您开枪");
				sl(3000);
				if(l==1)
				{
					pt("枪中是实弹");
					sl(3000);
					player--;
				}
				else
				{
					pt("枪中是空弹");
					sl(3000);
				}
				if(player>0)
				{
					pt("主动权来到了您手上");
					sl(3000); 
					quan=true;
				}
			}
		}
	}
	while(gun.empty()==false)
	{
		gun.pop();
	}
	system("cls");
	if(player>0)
	{
		system("color 06");
		pt("您赢了");
		sl(3000);
		second();
	}
	else
	{
		system("color 04");
		pt("您输了");
		sl(3000);
		home();
	}
}
void second()
{
	system("cls");
	system("color 07");
	int ai=4,player=4,atl[99],prtl[99],quan=1;
	memset(atl,0,sizeof(atl));
	memset(prtl,0,sizeof(prtl));
	int atnum=0,atpl[11];
	bool fin=true;
	pt("进入第二关");
	sl(3000);
	while(ai>0&&player>0)
	{
		system("cls");
		pf("您的剩余血量为%d\n",player);
		pf("对方的剩余血量为%d\n",ai);
		sl(3000);
		if(gun.empty())
		{
			system("cls");
			int m=rand()%4+3;
			int n=randtool(m);
			pf("%d枚实弹 %d枚空弹\n",n,m-n);
			pt("子弹装填中……");
			sl(3000);
			int at1=rand()%5+1,at2=rand()%5+1,prt;
			atnum++;
			atl[atnum]=rand()%5+1;
			atpl[atl[atnum]]++;
			atnum++;
			atl[atnum]=rand()%5+1;
			atpl[atl[atnum]]++;
			for(int i=1;i<=2;i++)
			{
				system("cls");
				char pl=' ';
				prt=rand()%5+1;
				pt("获得新道具!");
				sl(3000);
				if(prt==1)
				{
					pt(Y);
				}
				if(prt==2)
				{
					pt(J);
				}
				if(prt==3)
				{
					pt(F);
				}
				if(prt==4)
				{
					pt(D);
				}
				if(prt==5)
				{
					pt(S);
				}
				sl(3000);
				system("cls");
				pt("请选择您要放置它的位置(1~8)");//处理满原情况 
				while(1==1)
				{
					while(pl<'1'||pl>'8')
					{
						pl=getch();
					}
					if(prtl[pl]>0)
					{
						system("cls");
						pl=' ';
						pt("抱歉,该位置已有物品");
					}
					else
					{
						system("cls");
						pt("完成!");
						sl(3000);
						prtl[pl]=prt;
						break;
					}
				}
			}
		}
		int l=gun.top();
		gun.pop();
		if(quan>0)
		{
			fin=false;
			system("cls");
			pt("现在是您的回合");
			pt("按1~8查看并使用相应的道具");
			pt("按-查看敌人道具");
			pt("按9使用桌上的枪");
			while(fin==false)
			{
				char c=getch(),d;
				if(c>='1'&&c<='8')
				{
				}
				if(c=='-')
				{
				}
				if(c=='9')
				{
					fin=true;
				}
			}
		}
		else
		{
		}
	}
	while(gun.empty()==false)
	{
		gun.pop();
	}
	system("cls");
	if(player>0)
	{
		system("color 06");
		pt("您赢了");
		sl(3000);
		third();
	}
	else
	{
		system("color 04");
		pt("您输了");
		sl(3000);
		home();
	}
}
void third()
{
}
void begin()
{
	system("cls");
	pt("剧情已跳过(doge)");
	sl(3000);
	if(strlen(name)==0)
	{
		pf("请输入昵称:");
		sf("%s",name);
		pt("完成!");
		sl(3000);
	}
	first();
	second();
}
void end()
{
}
void home()
{
	system("color 07");
	system("cls");
	char c=' ';
	pt("    一款很新的游戏    ");
	pt("");
	pt("    		 按 s 开始");
	pt("    		 按 e 退出");
	while(c!='e'&&c!='s')
	{
		c=getch();
	}
	chance=true;
	if(c=='e')
	{
		exit(0);
	}
	else
	{
		begin();
	}
}
void kong()
{
}
int main()
{
	srand((unsigned)time(NULL));
	home();
}
//更新进度:第二关主体尚未完成 
//更新公告
//2024/4/2
//增加了道具文案
//再次优化了子弹系统
//进行了操作系统的一部分制作
//2024/3/19=========
//修复了道具无法放置的BUG
//增加了更新公告栏
//更早=========
//优化了第二关的子弹系统
posted @ 2024-02-19 12:02  一位很会的教授er~  阅读(259)  评论(16)    收藏  举报