#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;
}
有需要
的点个赞