三国杀小代码
2026-05-10 16:30:23
发布于:浙江
#include<bits/stdc++.h>
using namespace std;
int hp,sha,shan,wzsy,wxkj,guohe,shunshou;
int dn_hp,dn_sha,dn_shan,dn_wzsy,dn_wxkj,dn_guohe,dn_shunshou;
string weapon,armor,dn_weapon,dn_armor;
bool lebusishu,shandian,dn_lebusishu,dn_shandian;
string s,j;
int n;
void showHelp(){cout<<"\n======== 三国杀操作说明 ========\n";cout<<"出牌指令:杀 / 闪 / 无中生有 / 无懈可击\n";cout<<"锦囊:过河拆桥 / 顺手牵羊 / 乐不思蜀 / 闪电\n";cout<<"装备:装备武器 / 装备防具\n";cout<<"规则:\n";cout<<"杀:攻击对方,无闪扣1血\n";cout<<"闪:仅防御,不能主动出\n";cout<<"无中生有:摸1杀1闪\n";cout<<"过河拆桥:拆对方一张手牌\n";cout<<"顺手牵羊:拿对方一张手牌\n";cout<<"乐不思蜀:对方跳过出牌回合\n";cout<<"闪电:判定失败随机掉2血\n";cout<<"八卦阵:判定红牌自动当闪\n";cout<<"==============================\n";}
void showInfo(){cout<<"\n———— 你的状态 ————\n";cout<<"血量:"<<hp<<"\n";cout<<"手牌-> 杀:"<<sha<<" 闪:"<<shan<<" 无中生有:"<<wzsy<<" 无懈可击:"<<wxkj<<"\n";cout<<"锦囊-> 过河拆桥:"<<guohe<<" 顺手牵羊:"<<shunshou<<"\n";cout<<"装备-> 武器:"<<weapon<<" 防具:"<<armor<<"\n";cout<<"判定-> 乐不思蜀:"<<(lebusishu?"有":"无")<<" 闪电:"<<(shandian?"有":"无")<<"\n";cout<<"\n—— 敌方状态 ——\n";cout<<"血量:"<<dn_hp<<"\n";cout<<"敌方装备-> 武器:"<<dn_weapon<<" 防具:"<<dn_armor<<"\n";cout<<"敌方判定-> 乐不思蜀:"<<(dn_lebusishu?"有":"无")<<" 闪电:"<<(dn_shandian?"有":"无")<<"\n";}
void initHero(int id){hp=4;sha=shan=wzsy=wxkj=guohe=shunshou=0;weapon="无";armor="无";lebusishu=false;shandian=false;if(id==1){cout<<"你选择了:刘备\n";hp=5;sha=2;shan=3;wzsy=1;wxkj=1;guohe=1;shunshou=0;}else if(id==2){cout<<"你选择了:曹操\n";hp=4;sha=3;shan=2;wzsy=1;wxkj=0;guohe=1;shunshou=1;}else if(id==3){cout<<"你选择了:孙权\n";hp=4;sha=2;shan=4;wzsy=1;wxkj=1;guohe=0;shunshou=1;}else if(id==4){cout<<"你选择了:诸葛亮\n";hp=3;sha=1;shan=2;wzsy=2;wxkj=2;guohe=1;shunshou=1;}else if(id==5){cout<<"你选择了:赵云\n";hp=4;sha=3;shan=3;wzsy=0;wxkj=1;guohe=0;shunshou=0;}else if(id==6){cout<<"你选择了:关羽\n";hp=4;sha=4;shan=2;wzsy=1;wxkj=0;guohe=1;shunshou=0;weapon="青龙偃月刀";cout<<"关羽自带装备:青龙偃月刀,杀数量超多\n";}else if(id==7){cout<<"你选择了:张飞\n";hp=4;sha=5;shan=1;wzsy=0;wxkj=0;guohe=0;shunshou=0;weapon="丈八蛇矛";cout<<"张飞自带装备:丈八蛇矛,暴力多杀\n";}else if(id==8){cout<<"你选择了:吕布\n";hp=5;sha=4;shan=2;wzsy=1;wxkj=1;guohe=1;shunshou=1;weapon="方天画戟";armor="八卦阵";cout<<"吕布自带全套装备,血量高攻守拉满\n";}dn_hp=4;dn_sha=2;dn_shan=2;dn_wzsy=1;dn_wxkj=1;dn_guohe=1;dn_shunshou=1;dn_weapon="无";dn_armor="仁王盾";dn_lebusishu=false;dn_shandian=false;}
void playerJudge(){if(lebusishu){cout<<"\n【乐不思蜀】判定中...跳过本回合出牌!\n";lebusishu=false;return;}if(shandian){cout<<"\n【闪电】判定中...";int rnd=rand()%4;if(rnd==0){cout<<"判定失败!受到2点伤害!\n";hp-=2;}else{cout<<"判定成功,无事发生\n";}shandian=false;}}
void dnJudge(){if(dn_lebusishu){cout<<"\n敌方【乐不思蜀】生效,跳过出牌回合\n";dn_lebusishu=false;return;}if(dn_shandian){cout<<"\n敌方【闪电】判定...";int rnd=rand()%4;if(rnd==0){cout<<"劈中!敌方掉2血\n";dn_hp-=2;}else{cout<<"平安无事\n";}dn_shandian=false;}}
void playerTurn(){cout<<"\n请输入出牌:";cin>>s;if(s=="杀"){if(sha<=0){cout<<"你没有杀!\n";return;}sha--;cout<<"你出【杀】\n";if(dn_armor=="八卦阵"){cout<<"敌方八卦阵发动,自动出闪\n";return;}if(dn_shan>0){dn_shan--;cout<<"敌方出闪躲开\n";}else{dn_hp--;cout<<"敌方受伤,剩余血量:"<<dn_hp<<endl;}}else if(s=="无中生有"){if(wzsy<=0){cout<<"无中生有没有了\n";return;}wzsy--;sha++;shan++;cout<<"摸1杀1闪\n";}else if(s=="过河拆桥"){if(guohe<=0){cout<<"没有过河拆桥\n";return;}guohe--;if(dn_sha>0)dn_sha--,cout<<"拆掉敌方一张杀\n";else if(dn_shan>0)dn_shan--,cout<<"拆掉敌方一张闪\n";else cout<<"敌方无牌可拆\n";}else if(s=="顺手牵羊"){if(shunshou<=0){cout<<"没有顺手牵羊\n";return;}shunshou--;if(dn_sha>0)dn_sha--,sha++,cout<<"拿走敌方一张杀\n";else if(dn_shan>0)dn_shan--,shan++,cout<<"拿走敌方一张闪\n";else cout<<"无牌可拿\n";}else if(s=="乐不思蜀"){lebusishu=true;cout<<"你给敌方贴上乐不思蜀\n";}else if(s=="闪电"){shandian=true;cout<<"场上放置闪电\n";}else if(s=="闪"){cout<<"闪不能主动出!\n";}else{cout<<"输入无效\n";}}
void aiTurn(){cout<<"\n===== 敌方回合 =====\n";dnJudge();if(dn_wzsy>0){dn_wzsy--;dn_sha++;dn_shan++;cout<<"敌方使用无中生有\n";}if(dn_sha>0){dn_sha--;cout<<"敌方对你出杀!请出闪防御\n";cin>>s;if(s=="闪"&&shan>0){shan--;cout<<"闪避成功\n";}else if(armor=="八卦阵"){cout<<"你的八卦阵自动挡杀\n";}else{hp--;cout<<"你受伤,当前血量:"<<hp<<endl;}}if(dn_guohe>0&&sha+shan>0){dn_guohe--;if(sha>0)sha--,cout<<"敌方拆了你一张杀\n";else if(shan>0)shan--,cout<<"敌方拆了你一张闪\n";}}
bool isGameOver(){if(hp<=0){cout<<"\n你阵亡,游戏失败!\n";return true;}if(dn_hp<=0){cout<<"\n敌方阵亡,你胜利!\n";return true;}return false;}
int main(){srand((unsigned)time(NULL));cout<<"======== 三国杀完整版 ========\n";cout<<"是否看操作说明?(是/否)\n";cin>>j;if(j=="是")showHelp();else cout<<"直接开始游戏\n";cout<<"\n===== 可选武将 1~8 =====\n";cout<<"1刘备 2曹操 3孙权 4诸葛亮\n";cout<<"5赵云 6关羽 7张飞 8吕布\n";cout<<"请选择编号:";cin>>n;initHero(n);cout<<"\n游戏开始!\n";while(1){showInfo();playerJudge();playerTurn();if(isGameOver())break;aiTurn();if(isGameOver())break;}return 0;}
这里空空如也












有帮助,赞一个