战术卡牌C++版(游戏,暗区)

#include<bits/stdc++.h>
#include<windows.h>
#include<ctime>
using namespace std; 
string player1;//玩家1 姓名
string player2;//玩家2 姓名
int HP_1=440;  //玩家1 血量 
int HP_2=440;  //玩家2 血量    
int DEF_1=100;   //玩家1 防御 
int DEF_2=100;   //玩家2 防御 
int ZT_1=100;   //玩家1 状态 
int ZT_2=100;   //玩家2 状态
int n1,n2;     //玩家出牌的编号 
string f;      //任意键字符串 
int kkk;       //回合++ 
struct sk{
	string cardname;//卡牌名称 
	int ATK;		//伤害
	int HPI;		//恢复
	int DEF;		//防御 
	int ZT;			//状态
	int SY;         //卡牌是否被使用 
}play1[5],play2[5]; //所持卡牌数组 
struct cardMAX{		//卡牌种类大全 
	string cardname;//卡牌名称 
	int ATK;		//伤害
	int HPI;		//恢复
	int DEF;		//防御 
	int ZT;			//状态	
}cardMAX[11];		//一共十种 
void FH(){
	cout<<"请";Sleep(1*100);
	cout<<"输";Sleep(1*100);
	cout<<"入";Sleep(1*100);
	cout<<"玩";Sleep(1*100);
	cout<<"家";Sleep(1*100);
	cout<<"1";Sleep(1*100);
	cout<<"的";Sleep(1*100);
	cout<<"名";Sleep(1*100);
	cout<<"字";Sleep(1*100);
	cout<<":";Sleep(1*100);
	cin >> player1;
	cout<<endl;
	cout<<"请";Sleep(1*100);
	cout<<"输";Sleep(1*100);
	cout<<"入";Sleep(1*100);
	cout<<"玩";Sleep(1*100);
	cout<<"家";Sleep(1*100);
	cout<<"2";Sleep(1*100);
	cout<<"的";Sleep(1*100);
	cout<<"名";Sleep(1*100);
	cout<<"字";Sleep(1*100);
	cout<<":";Sleep(1*100);
	cin >> player2;
	cout<<endl;
	system("cls"); 
	cout<<"温";Sleep(1*100);
	cout<<"馨";Sleep(1*100);
	cout<<"提";Sleep(1*100);
	cout<<"示";Sleep(1*100);
	cout<<":";Sleep(1*100);
    cout<<"这";Sleep(1*100);
	cout<<"是";Sleep(1*100);
	cout<<"一";Sleep(1*100);
	cout<<"个";Sleep(1*100);
	cout<<"双";Sleep(1*100);
	cout<<"人";Sleep(1*100);
	cout<<"卡";Sleep(1*100);
	cout<<"牌";Sleep(1*100);
	cout<<"游";Sleep(1*100);
	cout<<"戏";Sleep(1*100);
	cout<<",";Sleep(1*100);
	cout<<"每";Sleep(1*100);
	cout<<"人";Sleep(1*100);
	cout<<"初";Sleep(1*100);
	cout<<"始";Sleep(1*100);
	cout<<"拥";Sleep(1*100);
	cout<<"有";Sleep(1*100);
	cout<<"4";Sleep(1*100);
	cout<<"张";Sleep(1*100);
	cout<<"牌";Sleep(1*100);
	cout<<",";Sleep(1*100);
	cout<<"双";Sleep(1*100);
	cout<<"方";Sleep(1*100);
	cout<<"轮";Sleep(1*100);
	cout<<"流";Sleep(1*100);
	cout<<"出";Sleep(1*100);
	cout<<"牌";Sleep(1*100);
	cout<<",";Sleep(1*100);
	cout<<"其";Sleep(1*100);
	cout<<"中";Sleep(1*100);
	cout<<"一";Sleep(1*100);
	cout<<"方";Sleep(1*100);
	cout<<"血";Sleep(1*100);
	cout<<"量";Sleep(1*100);
	cout<<"为";Sleep(1*100);
	cout<<"0";Sleep(1*100);
	cout<<"即";Sleep(1*100);
	cout<<"为";Sleep(1*100);
	cout<<"结";Sleep(1*100);
	cout<<"束";Sleep(1*100);
	cout<<",";Sleep(1*100);
	cout<<"卡";Sleep(1*100);
	cout<<"牌";Sleep(1*100);
	cout<<"功";Sleep(1*100);
	cout<<"能";Sleep(1*100);
	cout<<"会";Sleep(1*100);
	cout<<"在";Sleep(1*100);
	cout<<"出";Sleep(1*100);
	cout<<"牌";Sleep(1*100);
	cout<<"时";Sleep(1*100);
	cout<<"介";Sleep(1*100);
	cout<<"绍";Sleep(2*1000);
	cout<<endl;
	cout<<"(提示:状态为0即为挂掉)" <<endl;
	cout<<"(血量初始为440,状态为100,防御为100)"<<endl; 
	Sleep(5*1000);
	system("cls");
} 
void CARDMAX(){		//卡牌附加属性 
	cardMAX[1].cardname="狙仔的克星:兵工铲";
	cardMAX[1].ATK=+25;
	cardMAX[1].DEF=-10;
	cardMAX[1].HPI=-5;
	cardMAX[1].ZT=-5;
	
	cardMAX[2].cardname="朴弟的变大变强的药水";
	cardMAX[2].ATK=+40;
	cardMAX[2].DEF=+0;
	cardMAX[2].HPI=+40;
	cardMAX[2].ZT=+50; 
	
	cardMAX[3].cardname="绿蓝红三针";
	cardMAX[3].ATK=+0;
	cardMAX[3].DEF=+15;
	cardMAX[3].HPI=+15;
	cardMAX[3].ZT=+30; 
	
	cardMAX[4].cardname="老鼠套装";
	cardMAX[4].ATK=+50;
	cardMAX[4].DEF=+10;
	cardMAX[4].HPI=+10;
	cardMAX[4].ZT=-50;
	
	cardMAX[5].cardname="BTR(特维拉)";
	cardMAX[5].ATK=+80;
	cardMAX[5].DEF=+80;
	cardMAX[5].HPI=+50;
	cardMAX[5].ZT=-60; 
	
	cardMAX[6].cardname="一百发弹夹";
	cardMAX[6].ATK=+40;
	cardMAX[6].DEF=-5;
	cardMAX[6].HPI=+0;
	cardMAX[6].ZT=-5; 
	
	cardMAX[7].cardname="AR30";
	cardMAX[7].ATK=+70;
	cardMAX[7].DEF=-50;
	cardMAX[7].HPI=-10;
	cardMAX[7].ZT=-10; 

	cardMAX[8].cardname="STO套装";
	cardMAX[8].ATK=+0;
	cardMAX[8].DEF=+0;
	cardMAX[8].HPI=+50;
	cardMAX[8].ZT=+10;

	cardMAX[9].cardname="俄式重甲";
	cardMAX[9].ATK=+0;
	cardMAX[9].DEF=+50;
	cardMAX[9].HPI=+0; 
	cardMAX[9].ZT=-10;
	
	cardMAX[10].cardname="M995";
	cardMAX[10].ATK=+40;
	cardMAX[10].DEF=+0;
	cardMAX[10].HPI=+0;
	cardMAX[10].ZT=+0; 	
	 	  
} 
void sxfz(int x1,int x2,int x3,int x4,int player,int m){//属性附加 
	if(player==1){
		//HP_2-=x1;
		if(DEF_2>x1)DEF_2-=x1;					
		else{
			m=x1-DEF_2;
			DEF_2=0;
		    HP_2-=m;
			m=0;	
		}
		DEF_1+=x2;
		if(HP_1+x3>100)
			HP_1=100;
		else
			HP_1+=x3;
		ZT_1+=x4;
	} 
	else if(player==2){	
	    //HP_1-=x1;
		if(DEF_1>x1)DEF_1-=x1;					
		else{
			m=x1-DEF_1;
			DEF_1=0;
		    HP_1-=m;
			m=0;	
		}	    
		DEF_2+=x2;
		if(HP_2+x3>100)
			HP_2=100;
		else
			HP_2+=x3;
		ZT_2+=x4;		
	}
} 
void cardRefresh(){//卡牌刷新
		for(int i=1;i<=4;i++){
			play1[i].SY=1;
			play2[i].SY=1;
		} 
		srand(static_cast<unsigned int>(time(0)));
		int mi=1,mx=10;
		int kf=mx-mi+1;
		int kz;
		for(int i=1;i<=4;i++){			
			kz=mi+rand()%kf;
			play1[i].cardname=cardMAX[kz].cardname;			
			play1[i].ATK=cardMAX[kz].ATK;
			play1[i].DEF=cardMAX[kz].DEF;
			play1[i].HPI=cardMAX[kz].HPI;
			play1[i].ZT=cardMAX[kz].ZT;
		} 
		for(int i=1;i<=4;i++){
			kz=mi+rand()%kf;
			play2[i].cardname=cardMAX[kz].cardname;
			play2[i].ATK=cardMAX[kz].ATK;
			play2[i].DEF=cardMAX[kz].DEF;
			play2[i].HPI=cardMAX[kz].HPI;
			play2[i].ZT=cardMAX[kz].ZT;
		} 	
} 
int main(){
	//打字幕系列 	
	CARDMAX();
	FH();
	for(int i=1;i<=5;i++){
		cout<<"正在随机卡牌.";
		Sleep(1*80);
		system("cls");
		cout<<"正在随机卡牌..";
		Sleep(1*80);
		system("cls");
		cout<<"正在随机卡牌...";
		Sleep(1*80);
		system("cls");
	} 
	while(1){
		kkk++;				
		cardRefresh();
		//卡牌刷新 
		for(int j=1;j<=4;j++){
			//玩家1出牌 
			cout<<"玩";Sleep(1*100);
			cout<<"家";Sleep(1*100);
			cout<<player1;Sleep(1*100);
			cout<<"出";Sleep(1*100);
			cout<<"牌";Sleep(1*100);
			cout<<"时";Sleep(1*100);
			cout<<"间";Sleep(1*100);
			cout<<endl;	
			cout<<"(回合 "<<kkk<<"-"<<j<<"-1)";
			cout<<endl;		
			for(int i=1;i<=4;i++){
				if(play1[i].SY==1){
					cout<<"卡牌"<<i<<":"<<play1[i].cardname<<endl;Sleep(1*100);
					cout<<"伤害"<<i<<":"<<play1[i].ATK<<endl;Sleep(1*100);
					cout<<"恢复"<<i<<":"<<play1[i].HPI<<endl;Sleep(1*100); 
					cout<<"防御"<<i<<":"<<play1[i].DEF<<endl;Sleep(1*100);	
					cout<<"状态"<<i<<":"<<play1[i].ZT<<endl;Sleep(1*100);	
					cout<<endl;					
				}
			}
			cout<<"输入您出牌的编号:";
			cin>>n1;
			play1[n1].SY=0;
			sxfz(play1[n1].ATK,play1[n1].DEF,play1[n1].HPI,play1[n1].ZT,1,0);
			cout<<"玩家"<<player1<<"血量为"<<HP_1<<endl;
			cout<<"玩家"<<player1<<"防御为"<<DEF_1<<endl;
			cout<<"玩家"<<player1<<"状态为"<<ZT_1<<endl;
			cout<<"玩家"<<player2<<"血量为"<<HP_2<<endl;
			cout<<"玩家"<<player2<<"防御为"<<DEF_2<<endl;
			cout<<"按'1'键(+Enter)继续...";
			cin>>f;
			if(f!="")system("cls");			 			
						
			if((HP_1<0||ZT_1<0)&&(HP_2>0||ZT_2>0)){
				cout<<"玩家2胜利" ;
				return 0; 			 
			}
			else if((HP_2<0||ZT_2<0)&&(HP_1>0||ZT_1>0)){
				cout<<"玩家1胜利" ;
				return 0; 			 			
			} 
			f="";
		
			//玩家2出牌 
			cout<<"玩";Sleep(1*100);
			cout<<"家";Sleep(1*100);
			cout<<"2 ";Sleep(1*100);
			cout<<"出";Sleep(1*100);
			cout<<"牌";Sleep(1*100);
			cout<<"时";Sleep(1*100);
			cout<<"间";Sleep(1*100);
			cout<<endl;
			cout<<"(回合 "<<kkk<<"-"<<j<<"-2)";
			cout<<endl;			
			for(int i=1;i<=4;i++){
				if(play2[i].SY==1){
					cout<<"卡牌"<<i<<":"<<play2[i].cardname<<endl;Sleep(1*100);
					cout<<"伤害"<<i<<":"<<play2[i].ATK<<endl;Sleep(1*100);
					cout<<"恢复"<<i<<":"<<play2[i].HPI<<endl;Sleep(1*100); 
					cout<<"防御"<<i<<":"<<play2[i].DEF<<endl;Sleep(1*100);	
					cout<<"状态"<<i<<":"<<play2[i].ZT<<endl;Sleep(1*100);
					cout<<endl;
				}	
			}
			cout<<"输入您出牌的编号:";
			cin>>n2;
			play2[n2].SY=0;
			sxfz(play2[n2].ATK,play2[n2].DEF,play2[n2].HPI,play2[n2].ZT,2,0);
			cout<<"玩家"<<player2<<"血量为"<<HP_2<<endl;
			cout<<"玩家"<<player2<<"防御为"<<DEF_2<<endl;
			cout<<"玩家"<<player2<<"状态为"<<ZT_2<<endl;
			cout<<"玩家"<<player1<<"血量为"<<HP_1<<endl;
			cout<<"玩家"<<player1<<"防御为"<<DEF_1<<endl;
			cout<<"按'1'键(+Enter)继续..."; 
			cin>>f;
			if(f!="")system("cls");			
						
			if((HP_1<0||ZT_1<0)&&(HP_2>0||ZT_2>0)){
				cout<<"玩家"<<player2<<"胜利" ;
				return 0; 			 
			}
			else if((HP_2<0||ZT_2<0)&&(HP_1>0||ZT_1>0)){
				cout<<"玩家"<<player1<<"胜利" ;
				return 0; 			 			
			} 
			f="";							
		} 		
	}
	return 0;
}

有需要

的点个赞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值