注:(代码转载请告知原作者)

#include<iostream>
#include<time.h>
#include<stdio.h>
#include <stdlib.h>
using namespace std;
struct pai
{int paifu;int huase;int yanse;int dianshu;int leixing;int changdu;void Kanpai(){if (paifu == 0 || paifu == 1);elseprintf("牌副参数错误!\n");switch (huase){case 0:cout << "黑桃"; break;case 1:cout << "红桃"; break;case 2:cout << "草花"; break;case 3:cout << "方片"; break;case -1:cout << "无色"; break;default:printf("花色错误!\n"); break;}switch (dianshu){case 0:cout << "A "; break;case 1:cout << "2 "; break;case 2:cout << "3 "; break;case 3:cout << "4 "; break;case 4:cout << "5 "; break;case 5:cout << "6 "; break;case 6:cout << "7 "; break;case 7:cout << "8 "; break;case 8:cout << "9 "; break;case 9:cout << "10 "; break;case 10:cout << "J "; break;case 11:cout << "Q "; break;case 12:cout << "K "; break;case -1:cout << "无点数"; break;default:printf("点数错误!\n"); break;}switch (leixing){case 101:cout << "【杀】" << endl; break;case 102:cout << "【闪】" << endl; break;case 103:cout << "【桃】" << endl; break;case 201:cout << "【过河拆桥】" << endl; break;case 202:cout << "【顺手牵羊】" << endl; break;case 203:cout << "【无中生有】" << endl; break;case 204:cout << "【决斗】" << endl; break;case 205:cout << "【借刀杀人】" << endl; break;case 206:cout << "【桃园结义】" << endl; break;case 207:cout << "【五谷丰登】" << endl; break;case 208:cout << "【南蛮入侵】" << endl; break;case 209:cout << "【万箭齐发】" << endl; break;case 210:cout << "【无懈可击】" << endl; break;case 251:cout << "【乐不思蜀】" << endl; break;case 252:cout << "【闪电】" << endl; break;case 301:cout << "【诸葛连弩(1)】" << endl; break;case 302:cout << "【雌雄双股剑(2)】" << endl; break;case 303:cout << "【青釭剑(2)】" << endl; break;case 304:cout << "【青龙偃月刀(3)】" << endl; break;case 305:cout << "【丈八蛇矛(3)】" << endl; break;case 306:cout << "【贯石斧(3)】" << endl; break;case 307:cout << "【方天画戟(4)】" << endl; break;case 308:cout << "【麒麟弓(5)】" << endl; break;case 331:cout << "【八卦阵】" << endl; break;case 361:cout << "【赤兔(-1)】" << endl; break;case 362:cout << "【大宛(-1)】" << endl; break;case 363:cout << "【紫辛(-1)】" << endl; break;case 381:cout << "【爪黄飞电(+1)】" << endl; break;case 382:cout << "【的卢(+1)】" << endl; break;case 383:cout << "【绝影(+1)】" << endl; break;default:printf("类型参数错误!"); break;}}
};
void Qishixipai(pai A[2][4][13], pai paidui[104])
{int i, m, x, y, z, a[104] = { 0 };srand((unsigned)time(NULL));for (i = 1; i <= 104; i++){while (a[m = rand() % 104]);a[m] = i;}for (i = 0; i <= 103; i++){x = (a[i] - 1) / 52;y = ((a[i] - 1) - 52 * x) / 13;z = (a[i] - 1) % 13;paidui[i] = A[x][y][z];}
}
void Xipai(pai paidui[104], int* paiduishu, pai qipaidui[104], int* qipaishu)
{int i, m, a[104] = { 0 };srand((unsigned)time(NULL));for (i = 1; i <= (*qipaishu); i++){while (a[m = rand() % (*qipaishu)]);a[m] = i;}for (i = 0; i <= ((*qipaishu) - 1); i++){paidui[i] = qipaidui[a[i]];qipaidui[a[i]].leixing = -1;(*paiduishu)++;(*qipaishu)--;}for (i = (*paiduishu); i <= 103; i++)paidui[i].leixing = -1;
}
pai Mo1pai(pai A[104], int* x, pai B[104], int* y, int* b)
{pai p;if ((*x) == 0)Xipai(A, x, B, y);else if ((*x) < 0)printf("摸牌参数错误!");else;p = A[104 - (*x)];(*x)--;(*b)++;return(p);
}
struct wujiang
{char name;int tili;int tilishangxian;int shoupaishangxian;int huihekaishi;int panding;int mopai;int chupai;int qipai;int huihejieshu;int juese;pai shoupai[20];int shoupaishu;pai zhuangbei[4];int zhuangbeishu;pai pandingpai[3];int pandingshu;int juli[1];void Kanshoupai(){printf("玩家当前手牌:\n");if (shoupaishu){int m;for (m = 0; m <= (shoupaishu - 1); m++){printf("%d ", m);(shoupai[m]).Kanpai();}}else printf("空城!\n");printf("\n");}void Kanzhuangbei(){if (juese)printf("玩家");else printf("电脑");printf("当前装备:\n");printf("0 武器: ");if ((zhuangbei[0]).leixing == -1)printf("空\n");else (zhuangbei[0]).Kanpai();printf("1 防具: ");if ((zhuangbei[1]).leixing == -1)printf("空\n");else (zhuangbei[1]).Kanpai();printf("2 进攻马: ");if ((zhuangbei[2]).leixing == -1)printf("空\n");else (zhuangbei[2]).Kanpai();printf("3 防御马: ");if ((zhuangbei[3]).leixing == -1)printf("空\n");else (zhuangbei[3]).Kanpai();printf("\n");}void Kanpandingpai(){if (juese)printf("玩家");else printf("电脑");printf("当前判定区:\n");if ((pandingpai[0]).leixing == -1)printf("空\n");else{printf("0 ");(pandingpai[0]).Kanpai();if ((pandingpai[1]).leixing == -1);else{printf("1 ");(pandingpai[1]).Kanpai();if ((pandingpai[2]).leixing == -1);else{printf("2 ");(pandingpai[2]).Kanpai();}}}}
};
void Mopai(int* shoupaishu, pai shoupai[20], pai A[104], int* x, pai B[104], int* y, int juese)
{if (juese)printf("玩家从牌堆摸2张牌\n");else printf("电脑从牌堆摸2张牌\n");pai p;p = Mo1pai(A, x, B, y, shoupaishu);shoupai[*shoupaishu - 1] = p;pai q;q = Mo1pai(A, x, B, y, shoupaishu);shoupai[*shoupaishu - 1] = q;int m;if (juese){printf("玩家当前手牌:\n");for (m = 0; m <= (*shoupaishu - 1); m++){printf("%d ", m);(shoupai[m]).Kanpai();}}printf("牌堆还剩%d张牌!\n\n", *x);
}
void Qishishoupai(wujiang* w, pai A[104], int* x, pai B[104], int* y)
{pai a;a = Mo1pai(A, x, B, y, &((*w).shoupaishu));(*w).shoupai[(*w).shoupaishu - 1] = a;pai b;b = Mo1pai(A, x, B, y, &((*w).shoupaishu));(*w).shoupai[(*w).shoupaishu - 1] = b;pai c;c = Mo1pai(A, x, B, y, &((*w).shoupaishu));(*w).shoupai[(*w).shoupaishu - 1] = c;pai d;d = Mo1pai(A, x, B, y, &((*w).shoupaishu));(*w).shoupai[(*w).shoupaishu - 1] = d;int m;if ((*w).juese)printf("玩家从牌堆摸4张牌\n");else printf("电脑从牌堆摸4张牌\n");if ((*w).juese){printf("玩家当前手牌:\n");for (m = 0; m <= ((*w).shoupaishu - 1); m++){printf("%d ", m);((*w).shoupai[m]).Kanpai();}}printf("牌堆还剩%d张牌!\n\n", *x);
}
void Panding(pai paidui[104], int* paiduishu, pai qipaidui[104], int* qipaishu)
{paidui[*paiduishu].Kanpai();qipaidui[*qipaishu] = paidui[*paiduishu];(*paiduishu)--;(*qipaishu)++;
}
pai Zhangba(wujiang* w, pai qipaidui[104], int* qipaishu)
{int x, y;pai p;for (;;){int i, j;printf("请输入任意两张手牌之前的编号,以空格隔开,以回车结束!\n");scanf("%d", &x);scanf("%d", &y);if ((x >= 0) && (x < (*w).shoupaishu) && (y >= 0) && (y < (*w).shoupaishu - 1)){switch ((((*w).shoupai[x].huase) % 2) + (((*w).shoupai[y].huase) % 2)){case 0:p.yanse = 0; break;case 2:p.yanse = 1; break;case 1:p.yanse = 2; break;default:printf("【丈八蛇矛】函数参数错误!\n");}qipaidui[*qipaishu] = (*w).shoupai[x];(*w).shoupai[x].leixing = -1;((*w).shoupaishu)--;(*qipaishu)++;qipaidui[*qipaishu] = (*w).shoupai[y];(*w).shoupai[y].leixing = -1;((*w).shoupaishu)--;(*qipaishu)++; printf("弃牌数:%d", *qipaishu);for (i = 0; i <= (((*w).shoupaishu) + 1); i++){if ((*w).shoupai[i].leixing == -1){for (j = i + 1; j <= (((*w).shoupaishu) + 2); j++)(*w).shoupai[j - 1] = (*w).shoupai[j];i--;}}printf("玩家把:\n");qipaidui[(*qipaishu) - 2].Kanpai();qipaidui[(*qipaishu) - 1].Kanpai();printf("当作一张");switch (p.yanse){case 0:printf("黑色"); break;case 2:printf("红色"); break;case 1:printf("无色"); break;default:printf("绿色"); break;}printf("无点数的【杀】");p.dianshu = -1;p.leixing = 101;return p;break;}printf("你将两张空气当作一张空气属性的【杀】使用或打出!\n");}
}
int Xuanpai(wujiang* w, int t)
{int x;if ((*w).juese){for (;;){printf("出牌请输入手牌之前的编号,以回车结束!\n如果你想结束出牌阶段,请输入“-1”,以回车结束!\n");scanf("%d", &x);if ((x >= -1 && x < ((*w).shoupaishu)) || ((x == 100) && ((*w).zhuangbei[0].leixing == 305))){return x;break;}printf("你打出了一张空气!\n");}}else return t;
}
pai Panpai(wujiang* w1, int* sha, int y, pai qipaidui[104], int* qipaishu)
{pai p, q;p.leixing = 0;q.leixing = -1;if (y == -1)return q;else{if (y == 100){if ((*sha) > 0){q = Zhangba(w1, qipaidui, qipaishu);printf("使用!\n");return q;}else{printf("当前回合使用【杀】的次数已用尽,你也不能使用【丈八蛇矛】效果!\n");return p;}}switch ((*w1).shoupai[y].leixing){case 101:if (((*sha) > 0) || ((*w1).zhuangbei[0].leixing == 301)){if (((*w1).zhuangbei[0].leixing == 301))printf("武器【诸葛连弩】效果被触发!\n");return (*w1).shoupai[y];break;}else{if ((*w1).juese)printf("当前回合使用【杀】的次数已用尽,你不能使用【杀】!\n");return p; break;}case 102:if ((*w1).juese)printf("当前不需要响应任何操作,你不能主动打出【闪】!\n");return p; break;case 103:if (((*w1).tili) < ((*w1).tilishangxian)){return (*w1).shoupai[y];break;}else{if ((*w1).juese)printf("你并未受伤,不能对自己使用【桃】!\n");}return p; break;case 210:if ((*w1).juese)printf("当前不需要响应任何锦囊,你不能主动打出【无懈可击】!\n");return p; break;case 201:case 202:case 203:case 204:case 205:case 206:case 207:case 208:case 209:case 251:case 252:case 301:case 302:case 303:case 304:case 305:case 306:case 307:case 308:case 331:case 361:case 362:case 363:case 381:case 382:case 383:return (*w1).shoupai[y]; break;default:printf("手牌类型参数错误!\n"); return p; break;}}
}
int Mubiao(pai p, wujiang* w1, wujiang* w2, int* sha)
{int x;switch (p.leixing){case 101:if ((*w1).juese){printf("请选择【杀】的目标!\n输入目标前的编号,以回车结束!\n0 电脑1\n");scanf("%d", &x);if (x == 0){if ((*w1).zhuangbei[0].changdu >= (*w1).juli[0]){(*sha)--;return((*w2).juese);}else{printf("武器长度不够!\n");return -2;}}else{printf("目标错误!\n");return -2;}}else{if ((*w1).zhuangbei[0].changdu >= (*w1).juli[0]){(*sha)--;return((*w2).juese);}else return -2;}break;case 103:return((*w1).juese); break;case 201:if ((*w1).juese){printf("请选择【过河拆桥】的目标!\n输入目标前的编号,以回车结束!\n0 电脑1\n");scanf("%d", &x);if (x == 0){if ((*w2).shoupaishu || (*w2).zhuangbeishu || (*w2).pandingshu)return((*w2).juese);else{printf("目标没有牌!\n");return -2;}}else{printf("目标错误!\n");return -2;}}else return((*w2).juese);break;case 202:if ((*w1).juese){printf("请选择【顺手牵羊】的目标!\n输入目标前的编号,以回车结束!\n0 电脑1\n");scanf("%d", &x);if (x == 0){if (((*w2).shoupaishu || (*w2).zhuangbeishu || (*w2).pandingshu) && ((*w1).juli[0] <= 1))return((*w2).juese);else{printf("目标没有牌!\n");return -2;}}else{printf("目标错误!\n");return -2;}}else{if ((*w1).juli[0] <= 1)return((*w2).juese);else return -2;}break;case 203:return((*w1).juese); break;case 204:if ((*w1).juese){printf("请选择【决斗】的目标!\n输入目标前的编号,以回车结束!\n0 电脑1\n");scanf("%d", &x);if (x == 0)return((*w2).juese);else{printf("目标错误!\n");return -2;}}else return((*w2).juese);break;case 205:int y;if ((*w1).juese){printf("请选择【借刀杀人】的目标!\n输入目标前的编号,以回车结束!\n0 电脑1\n");scanf("%d", &x);if (x != 0){printf("目标错误!\n");return -2;}else{if (((*w2).zhuangbei[0]).leixing <= 300 || ((*w2).zhuangbei[0]).leixing >= 331){printf("目标装备区里没有武器!\n");return -2;}else{printf("请选择【杀】的目标!\n提示:【杀】的目标必须在【借刀杀人】的目标的攻击范围之内!\n输入目标前的编号,以回车结束!\n0 玩家\n");scanf("%d", &y);if (y != 0){printf("目标错误!\n");return -2;}else{if (((*w2).zhuangbei[0].changdu) < (*w2).juli[0]){printf("武器距离不够!\n");return -2;}elsereturn((*w2).juese);}}}}else{if (((*w2).zhuangbei[0]).leixing <= 300 || ((*w2).zhuangbei[0]).leixing >= 331)return -2;else{if (((*w2).zhuangbei[0].changdu) < (*w2).juli[0])return -2;else return((*w2).juese);}}break;case 206:case 207:return 99; break;case 208:case 209:return 100; break;case 251:if ((*w1).juese){printf("请选择【乐不思蜀】的目标!\n输入目标前的编号,以回车结束!\n0 电脑1\n");scanf("%d", &x);if (x == 0){int i;for (i = 0; i <= 2; i++){if ((*w2).pandingpai[i].leixing == 251)i = -1;break;}if (i == -1){printf("目标判定区里不能同时存在两张相同的延时类锦囊!\n");return -2;}else return((*w2).juese);}else{printf("目标错误!\n");return -2;}}else{int i;for (i = 0; i <= 2; i++){if ((*w2).pandingpai[i].leixing == 251)i = -1;break;}if (i == -1)return -2;else return((*w2).juese);}break;case 252:int i;for (i = 0; i <= 2; i++){if ((*w1).pandingpai[i].leixing == 252)i = -1;break;}if (i == -1){if ((*w1).juese)printf("目标判定区里不能同时存在两张相同的延时类锦囊!\n");return -2;}else return ((*w1).juese);break;case 301:case 302:case 303:case 304:case 305:case 306:case 307:case 308:case 331:case 361:case 362:case 363:case 381:case 382:case 383:return((*w1).juese); break;default:return -2; break;}
}
void Da1pai(wujiang* w1, wujiang* w2, pai qipaidui[104], int* qipaishu, int x)
{int i;if ((x < 0 || x >= ((*w1).shoupaishu)) && x != 100)printf("你的牌呢?!\n");else{switch (((*w1).shoupai)[x].leixing){case 101:case 102:case 103:case 201:case 202:case 203:case 204:case 205:case 206:case 207:case 208:case 209:case 210:qipaidui[*qipaishu] = ((*w1).shoupai)[x];for (i = x + 1; i <= ((*w1).shoupaishu); i++)((*w1).shoupai)[i - 1] = ((*w1).shoupai)[i];((*w1).shoupaishu)--;(*qipaishu)++;break;case 251:for (i = 1; i >= 0; i--)(*w2).pandingpai[i + 1] = (*w2).pandingpai[i];(*w2).pandingpai[0] = (*w1).shoupai[x];for (i = x + 1; i <= ((*w1).shoupaishu); i++)((*w1).shoupai)[i - 1] = ((*w1).shoupai)[i];((*w1).shoupaishu)--;((*w2).pandingshu)++;break;case 252:for (i = 1; i >= 0; i--)(*w1).pandingpai[i + 1] = (*w1).pandingpai[i];(*w1).pandingpai[0] = (*w1).shoupai[x];for (i = x + 1; i <= ((*w1).shoupaishu); i++)((*w1).shoupai)[i - 1] = ((*w1).shoupai)[i];((*w1).shoupaishu)--;((*w1).pandingshu)++;break;case 301:case 302:case 303:case 304:case 305:case 306:case 307:case 308:if ((*w1).zhuangbei[0].leixing == -1)((*w1).zhuangbeishu)++;else{qipaidui[*qipaishu] = ((*w1).zhuangbei)[0];(*qipaishu)++;}(*w1).zhuangbei[0] = (*w1).shoupai[x];for (i = x + 1; i <= ((*w1).shoupaishu); i++)((*w1).shoupai)[i - 1] = ((*w1).shoupai)[i];((*w1).shoupaishu)--;break;case 331:if ((*w1).zhuangbei[1].leixing == -1)((*w1).zhuangbeishu)++;else{qipaidui[*qipaishu] = ((*w1).zhuangbei)[1];(*qipaishu)++;}(*w1).zhuangbei[1] = (*w1).shoupai[x];for (i = x + 1; i <= ((*w1).shoupaishu); i++)((*w1).shoupai)[i - 1] = ((*w1).shoupai)[i];((*w1).shoupaishu)--;break;case 361:case 362:case 363:if ((*w1).zhuangbei[2].leixing == -1)((*w1).zhuangbeishu)++;else{qipaidui[*qipaishu] = ((*w1).zhuangbei)[2];(*qipaishu)++;}(*w1).zhuangbei[2] = (*w1).shoupai[x];for (i = x + 1; i <= ((*w1).shoupaishu); i++)((*w1).shoupai)[i - 1] = ((*w1).shoupai)[i];((*w1).shoupaishu)--;break;case 381:case 382:case 383:if ((*w1).zhuangbei[3].leixing == -1)((*w1).zhuangbeishu)++;else{qipaidui[*qipaishu] = ((*w1).zhuangbei)[3];(*qipaishu)++;}(*w1).zhuangbei[3] = (*w1).shoupai[x];for (i = x + 1; i <= ((*w1).shoupaishu); i++)((*w1).shoupai)[i - 1] = ((*w1).shoupai)[i];((*w1).shoupaishu)--;break;default:break;}}
}
void Miaoshu(pai p, int juese, int duixiang)
{if (juese == 0)printf("电脑");else if (juese == 1)printf("玩家");else printf("角色参数错误!\n");if (p.leixing <= 300 && p.leixing > 100){switch (duixiang){case -1:printf("打出"); break;case 0:printf("对电脑使用"); break;case 1:printf("对玩家使用"); break;case 99:printf("使用"); break;case 100:printf("对所有人使用"); break;default:printf("对象参数错误\n"); break;}}else if (p.leixing >= 301 && p.leixing <= 400)printf("装备");else printf("你出的是什么东西?\n");p.Kanpai();if (!juese && (p.leixing == 101 || p.leixing == 204 || p.leixing == 205 || p.leixing == 207 || p.leixing == 208 || p.leixing == 209))printf("请响应!\n");
}
int Wuxie(pai* p, wujiang* w1, wujiang* w2, pai qipaidui[104], int* qipaishu, int a)
{int x;if ((*w1).juese){printf("是否使用【无懈可击】响应?\n\n");for (;;){(*w1).Kanshoupai();printf("如果要使用【无懈可击】请输入手牌之前编号,不需要请输入“-1”,以回车结束!\n");scanf("%d", &x);if (x == -1){for (x = 0; x < ((*w2).shoupaishu); x++){if ((*w2).shoupai[x].leixing == 210){printf("电脑使用");((*w2).shoupai)[x].Kanpai();printf("对象是");(*p).Kanpai();(*p) = ((*w2).shoupai)[x];qipaidui[*qipaishu] = ((*w2).shoupai)[x];for (int i = x + 1; i <= ((*w2).shoupaishu); i++)((*w2).shoupai)[i - 1] = ((*w2).shoupai)[i];((*w2).shoupaishu)--;(*qipaishu)++;a++;break;}}break;}else if ((*w1).shoupai[x].leixing == 210){printf("玩家使用");((*w1).shoupai)[x].Kanpai();printf("对象是");(*p).Kanpai();(*p) = ((*w1).shoupai)[x];qipaidui[*qipaishu] = ((*w1).shoupai)[x];for (int i = x + 1; i <= ((*w1).shoupaishu); i++)((*w1).shoupai)[i - 1] = ((*w1).shoupai)[i];((*w1).shoupaishu)--;(*qipaishu)++;(*w1).Kanshoupai();a++;break;}else printf("你确定你使用的是【无懈可击】?\n");}}else{printf("是否使用【无懈可击】响应?\n");for (;;){(*w2).Kanshoupai();printf("如果要使用【无懈可击】请输入手牌之前编号,不需要请输入“-1”,以回车结束!\n");scanf("%d", &x);if (x == -1)break;else if ((*w2).shoupai[x].leixing == 210){printf("玩家使用");((*w2).shoupai)[x].Kanpai();printf("对象是");(*p).Kanpai();(*p) = ((*w2).shoupai)[x];qipaidui[*qipaishu] = ((*w2).shoupai)[x];for (int i = x + 1; i <= ((*w2).shoupaishu); i++)((*w2).shoupai)[i - 1] = ((*w2).shoupai)[i];((*w2).shoupaishu)--;(*qipaishu)++;(*w2).Kanshoupai();a++;break;}else printf("你确定你使用的是【无懈可击】?\n");}}return a;
}
int Qiutao(wujiang* w, pai qipaidui[104], int* qipaishu)
{int x;if ((*w).juese){for (;;){printf("如果要使用【桃】请输入手牌之前的编号,不需要请输入“-1”,以回车结束!\n");scanf("%d", &x);if (x == -1){return -1;break;}else if ((*w).shoupai[x].leixing == 103){qipaidui[*qipaishu] = ((*w).shoupai)[x];for (int i = x + 1; i <= ((*w).shoupaishu); i++)((*w).shoupai)[i - 1] = ((*w).shoupai)[i];((*w).shoupaishu)--;(*qipaishu)++;return 0;break;}else printf("你确定你使用的是【桃】?\n");}}else{for (x = 0; x < ((*w).shoupaishu); x++){if ((*w).shoupai[x].leixing == 103){qipaidui[*qipaishu] = ((*w).shoupai)[x];for (int i = x + 1; i <= ((*w).shoupaishu); i++)((*w).shoupai)[i - 1] = ((*w).shoupai)[i];((*w).shoupaishu)--;(*qipaishu)++;return 0;break;}}return -1;}
}
int Binsi(wujiang* w1, wujiang* w2, pai qipaidui[104], int* qipaishu)
{if (((*w2).tili) > 0)return 0;else{int i;if ((*w1).juese){for (;;){printf("电脑濒死,是否使用【桃】?\n");i = Qiutao(w1, qipaidui, qipaishu);if (i == 0)((*w2).tili)++;if ((i == -1) || ((*w2).tili > 0))break;}if ((*w2).tili > 0)return 0;else{for (;;){i = Qiutao(w2, qipaidui, qipaishu);if (i == 0)((*w2).tili)++;if ((i == -1) || ((*w2).tili > 0))break;}if ((*w2).tili > 0)return 0;else return -1;}}else{for (;;){printf("玩家濒死,是否使用【桃】?\n");i = Qiutao(w2, qipaidui, qipaishu);if (i == 0)((*w2).tili)++;if ((i == -1) || ((*w2).tili > 0))break;}if ((*w2).tili > 0)return 0;else return -1;}}
}
int Shan(wujiang* w1, wujiang* w2, pai paidui[104], int* paiduishu, pai qipaidui[104], int* qipaishu)
{int x;if ((*w2).juese){if (((*w2).zhuangbei[1].leixing == 331) && ((*w1).zhuangbei[0].leixing != 303)){for (;;){int m;printf("是否发动【八卦阵】防具效果?\n0 否\n1 是\n请输入选项之前的编号,以回车结束!\n");scanf("%d", &m);if (m == 1){Panding(paidui, paiduishu, qipaidui, qipaishu);if (qipaidui[(*qipaishu) - 1].huase % 2){printf("【八卦阵】判定成功!\n");return 0;}}else if (m == 0){printf("【八卦阵】判定失败!\n");break;}else printf("你确定你输入的是“0”或“1”?\n");}}else if (((*w2).zhuangbei[1].leixing == 331) && ((*w1).zhuangbei[0].leixing == 303))printf("【青釭剑】锁定技被触发!\n");for (;;){printf("请输入手牌之前的编号,或者输入“-1”放弃打出【闪】,以回车结束!\n");scanf("%d", &x);if (x == -1){return -1;break;}else if ((*w2).shoupai[x].leixing == 102){printf("玩家打出");((*w2).shoupai)[x].Kanpai();qipaidui[*qipaishu] = ((*w2).shoupai)[x];for (int i = x + 1; i <= ((*w2).shoupaishu); i++)((*w2).shoupai)[i - 1] = ((*w2).shoupai)[i];((*w2).shoupaishu)--;(*qipaishu)++;return 0;break;}else printf("你确定你打出的是【闪】?\n");}}else{if (((*w2).zhuangbei[1].leixing == 331) && ((*w1).zhuangbei[0].leixing != 303)){Panding(paidui, paiduishu, qipaidui, qipaishu);if (qipaidui[(*qipaishu) - 1].huase % 2){printf("【八卦阵】判定成功!\n");return 0;}else printf("【八卦阵】判定失败!\n");}else if (((*w2).zhuangbei[1].leixing == 331) && ((*w1).zhuangbei[0].leixing == 303))printf("【青釭剑】锁定技被触发!\n");int i;for (x = 0; x < ((*w2).shoupaishu); x++){if ((*w2).shoupai[x].leixing == 102){printf("电脑打出");((*w2).shoupai)[x].Kanpai();qipaidui[*qipaishu] = ((*w2).shoupai)[x];for (i = x + 1; i <= ((*w2).shoupaishu); i++)((*w2).shoupai)[i - 1] = ((*w2).shoupai)[i];((*w2).shoupaishu)--;(*qipaishu)++;return 0;break;}}return -1;}
}
int Sha(wujiang* w1, wujiang* w2, pai paidui[104], int* paiduishu, pai qipaidui[104], int* qipaishu)
{int x;if ((*w2).juese){printf("请打出【闪】响应【杀】!否则你将受到1点伤害!\n");x = Shan(w1, w2, paidui, paiduishu, qipaidui, qipaishu);if (x == -1){int i;((*w2).tili)--;printf("电脑对玩家造成1点伤害!\n");i = Binsi(w1, w2, qipaidui, qipaishu);return i;}else if (x == 0 && ((*w1).zhuangbei[0].leixing == 306)){int i;if (((*w1).shoupaishu) >= 2){printf("电脑弃掉:\n");((*w1).shoupai)[0].Kanpai();qipaidui[*qipaishu] = ((*w1).shoupai)[0];for (i = 1; i <= ((*w1).shoupaishu); i++)((*w1).shoupai)[i - 1] = ((*w1).shoupai)[i];((*w1).shoupaishu)--;(*qipaishu)++;((*w1).shoupai)[0].Kanpai();qipaidui[*qipaishu] = ((*w1).shoupai)[0];for (i = 1; i <= ((*w1).shoupaishu); i++)((*w1).shoupai)[i - 1] = ((*w1).shoupai)[i];((*w1).shoupaishu)--;(*qipaishu)++;printf("发动【贯石斧】武器效果使【杀】造成伤害!\n");((*w2).tili)--;i = Binsi(w1, w2, qipaidui, qipaishu);return i;}else return 0;}else if (x == 0 && ((*w1).zhuangbei[0].leixing == 304)){int i;for (x = 0; x < ((*w1).shoupaishu); x++){if ((*w1).shoupai[x].leixing == 101){printf("电脑发动【青龙偃月刀】效果对玩家使用");((*w1).shoupai)[x].Kanpai();qipaidui[*qipaishu] = ((*w1).shoupai)[x];for (i = x + 1; i <= ((*w1).shoupaishu); i++)((*w1).shoupai)[i - 1] = ((*w1).shoupai)[i];((*w1).shoupaishu)--;(*qipaishu)++;i = Sha(w1, w2, paidui, paiduishu, qipaidui, qipaishu);return i;break;}}return 0;}}else{x = Shan(w1, w2, paidui, paiduishu, qipaidui, qipaishu);if (x == -1){if ((*w1).zhuangbei[0].leixing == 308){for (;;){printf("是否发动【麒麟弓】武器效果?\n0 否\n1 是\n");scanf("%d", &x);if (x == 1){if (((*w2).zhuangbei[2].leixing == -1) && ((*w2).zhuangbei[3].leixing == -1)){printf("电脑根本没有马,射你妹的马啊!\n");break;}else{for (;;){printf("0 ");((*w2).zhuangbei[2]).Kanpai();printf("1 ");((*w2).zhuangbei[3]).Kanpai();printf("请选择要弃掉的马,输入之前的编号,以回车结束!\n");scanf("%d", &x);if ((x == 0) && ((*w2).zhuangbei[2].leixing != -1)){printf("你弃掉了电脑的");((*w2).zhuangbei)[2].Kanpai();qipaidui[*qipaishu] = ((*w2).zhuangbei)[2];((*w2).zhuangbeishu)--;(*qipaishu)++;((*w2).zhuangbei)[2].leixing = -1;((*w2).juli[0])++;break;}else if ((x == 1) && ((*w2).zhuangbei[3].leixing != -1)){printf("你弃掉了电脑的");((*w2).zhuangbei)[3].Kanpai();qipaidui[*qipaishu] = ((*w2).zhuangbei)[3];((*w2).zhuangbeishu)--;(*qipaishu)++;((*w2).zhuangbei)[3].leixing = -1;((*w1).juli[0])--;break;}else printf("射你妹的马!");}break;}}else if (x == 0)break;else printf("键盘上的“0”和“1”被你吃了吗?\n");}}int i;((*w2).tili)--;printf("玩家对电脑造成1点伤害!\n");i = Binsi(w1, w2, qipaidui, qipaishu);return i;}else if (x == 0 && ((*w1).zhuangbei[0].leixing == 306)){for (;;){printf("是否发动【贯石斧】武器效果?\n0 否\n1 是\n");scanf("%d", &x);if (x == 1){int i;if ((*w1).shoupaishu + (*w1).zhuangbeishu <= 2){printf("你除了【贯石斧】以外连2张牌都没有,发动你妹的效果!\n");break;}else{printf("请分别弃掉两张牌!\n");for (i = 0; i <= 2; i++){for (;;){printf("请选择区域:\n0 手牌\n1 装备\n");scanf("%d", &x);if (x == 0 && ((*w1).shoupaishu == 0))printf("你根本没有手牌,弃你妹啊!\n");else if (x == 1 && ((*w1).zhuangbeishu == 1))printf("你根本没有别的装备,弃你妹啊!\n");else if (x >= 0 && x <= 1)break;else printf("键盘上的“0”和“1”被你吃了吗?\n");}if (x == 0){for (;;){(*w1).Kanshoupai();printf("弃牌请输入手牌之前的编号,以回车结束!\n");scanf("%d", &x);if (x >= 0 && x < ((*w1).shoupaishu))break;else printf("弃你妹的手牌!\n");}printf("你弃掉了");((*w1).shoupai)[x].Kanpai();qipaidui[*qipaishu] = ((*w1).shoupai)[x];for (i = x + 1; i <= ((*w1).shoupaishu); i++)((*w1).shoupai)[i - 1] = ((*w1).shoupai)[i];((*w1).shoupaishu)--;(*qipaishu)++;}else{for (;;){(*w1).Kanzhuangbei();printf("请输入装备之前的编号,以回车键结束!\n");scanf("%d", &x);if ((((*w1).zhuangbei[x]).leixing != -1) && (x >= 0) && (x <= 3)){printf("你弃掉了");((*w1).zhuangbei)[x].Kanpai();qipaidui[*qipaishu] = ((*w1).zhuangbei)[x];((*w1).zhuangbeishu)--;(*qipaishu)++;((*w1).zhuangbei)[x].leixing = -1;break;}else printf("弃你妹的装备!\n");}}}}printf("玩家发动【贯石斧】武器效果使【杀】造成伤害!\n");((*w2).tili)--;i = Binsi(w1, w2, qipaidui, qipaishu);return i;break;}else if (x == 0)break;else printf("键盘上的“0”和“1”被你吃了吗?\n");}}else if (x == 0 && ((*w1).zhuangbei[0].leixing == 304)){for (;;){printf("是否发动【青龙偃月刀】武器效果?\n0 否\n1 是\n");scanf("%d", &x);if (x == 1){for (;;){printf("请对电脑使用一张【杀】!\n请输入手牌之前的编号,或者输入“-1”放弃出【杀】,以回车结束!\n");(*w1).Kanshoupai();scanf("%d", &x);if (x == -1){return 0;break;}else if ((*w1).shoupai[x].leixing == 101){int i;printf("玩家对电脑使用");((*w1).shoupai)[x].Kanpai();qipaidui[*qipaishu] = ((*w1).shoupai)[x];for (i = x + 1; i <= ((*w1).shoupaishu); i++)((*w1).shoupai)[i - 1] = ((*w1).shoupai)[i];((*w1).shoupaishu)--;(*qipaishu)++;i = Sha(w1, w2, paidui, paiduishu, qipaidui, qipaishu);return i;break;}else printf("你确定你打出的是【杀】?\n");}}else if (x == 0){return 0;break;}else printf("你确定你输入的是“0”或“1”?\n");}}else return 0;}return 0;
}
void Tao(wujiang* w1)
{((*w1).tili)++;if ((*w1).juese)printf("玩家");else printf("电脑");printf("恢复了1点体力!\n");if (((*w1).tili) > ((*w1).tilishangxian))printf("你被撑死了!\n");
}
void Chai(wujiang* w1, wujiang* w2, pai qipaidui[104], int* qipaishu)
{int i, x, y;if ((*w1).juese){for (;;){if ((*w2).shoupaishu + (*w2).zhuangbeishu + (*w2).pandingshu == 0){printf("对方空城,拆你妹啊!\n");break;}else{printf("请选择想拆的区域,输入选项之前的编号,以回车结束!\n0 手牌\n1 装备区\n2 判定区\n");scanf("%d", &x);if (x == 0 && ((*w2).shoupaishu == 0))printf("你拆掉了一张空气!\n");else if (x == 1 && ((*w2).zhuangbeishu == 0))printf("你拆掉了一张空气!\n");else if (x == 2 && ((*w2).pandingshu == 0))printf("你拆掉了一张空气!\n");else if (x >= 0 && x <= 2)break;else printf("你拆掉了太空区里的一张牌!\n");}}switch (x){case 0:srand((unsigned)time(NULL));y = rand() % ((*w2).shoupaishu);printf("你弃掉了电脑的");((*w2).shoupai)[y].Kanpai();qipaidui[*qipaishu] = ((*w2).shoupai)[y];for (i = y + 1; i <= ((*w2).shoupaishu); i++)((*w2).shoupai)[i - 1] = ((*w2).shoupai)[i];((*w2).shoupaishu)--;(*qipaishu)++;break;case 1:for (;;){(*w2).Kanzhuangbei();printf("请输入装备之前的编号,以回车键结束!\n");scanf("%d", &y);if ((((*w2).zhuangbei[y]).leixing != -1) && (y >= 0) && (y <= 3)){printf("你弃掉了电脑的");((*w2).zhuangbei)[y].Kanpai();qipaidui[*qipaishu] = ((*w2).zhuangbei)[y];((*w2).zhuangbeishu)--;(*qipaishu)++;((*w2).zhuangbei)[y].leixing = -1;if (!y)((*w2).zhuangbei)[y].changdu = 1;else if (y == 2)((*w2).juli[0])++;else if (y == 3)((*w1).juli[0])--;break;}else printf("你弃掉了一张空气!\n");}break;case 2:for (;;){(*w2).Kanpandingpai();printf("请输入判定牌之前的编号,以回车键结束!\n");scanf("%d", &y);if ((*w2).pandingpai[y].leixing != -1){printf("你弃掉了电脑的");((*w2).pandingpai)[y].Kanpai();qipaidui[*qipaishu] = ((*w2).pandingpai)[y];((*w2).pandingshu)--;(*qipaishu)++;((*w2).pandingpai)[y].leixing = -1;break;}else printf("你弃掉了一张空气!\n");}break;default:break;}}else{if ((*w2).zhuangbeishu){if ((*w2).zhuangbei[1].leixing != -1){printf("电脑弃掉了玩家的");((*w2).zhuangbei)[1].Kanpai();qipaidui[*qipaishu] = ((*w2).zhuangbei)[1];((*w2).zhuangbeishu)--;(*qipaishu)++;((*w2).zhuangbei)[1].leixing = -1;}else if ((*w2).zhuangbei[3].leixing != -1){printf("电脑弃掉了玩家的");((*w2).zhuangbei)[3].Kanpai();qipaidui[*qipaishu] = ((*w2).zhuangbei)[3];((*w2).zhuangbeishu)--;(*qipaishu)++;((*w2).zhuangbei)[3].leixing = -1;((*w1).juli[0])--;}else if ((*w2).zhuangbei[0].leixing != -1){printf("电脑弃掉了玩家的");((*w2).zhuangbei)[0].Kanpai();qipaidui[*qipaishu] = ((*w2).zhuangbei)[0];((*w2).zhuangbeishu)--;(*qipaishu)++;((*w2).zhuangbei)[0].leixing = -1;((*w2).zhuangbei)[0].changdu = 1;}else{printf("电脑弃掉了玩家的");((*w2).zhuangbei)[2].Kanpai();qipaidui[*qipaishu] = ((*w2).zhuangbei)[2];((*w2).zhuangbeishu)--;(*qipaishu)++;((*w2).zhuangbei)[2].leixing = -1;((*w2).juli[0])++;}}else{srand((unsigned)time(NULL));y = rand() % ((*w2).shoupaishu);printf("电脑弃掉了玩家的手牌");((*w2).shoupai)[y].Kanpai();qipaidui[*qipaishu] = ((*w2).shoupai)[y];for (i = y + 1; i <= ((*w2).shoupaishu); i++)((*w2).shoupai)[i - 1] = ((*w2).shoupai)[i];((*w2).shoupaishu)--;(*qipaishu)++;}}
}
void Qian(wujiang* w1, wujiang* w2)
{int i, x, y;if ((*w1).juese){for (;;){if ((*w2).shoupaishu + (*w2).zhuangbeishu + (*w2).pandingshu == 0){printf("对方空城啦!你牵走了一张寂寞!\n");break;}else{printf("请选择想牵的区域,输入选项之前的编号,以回车结束!\n0 手牌\n1 装备区\n2 判定区\n");scanf("%d", &x);if (x == 0 && ((*w2).shoupaishu == 0))printf("你牵走了一张空气!\n");else if (x == 1 && ((*w2).zhuangbeishu == 0))printf("你牵走了一张空气!\n");else if (x == 2 && ((*w2).pandingshu == 0))printf("你牵走了一张空气!\n");else if (x >= 0 && x <= 2)break;else printf("你牵走了太空区里的一张牌!\n");}}switch (x){case 0:srand((unsigned)time(NULL));y = rand() % ((*w2).shoupaishu);printf("你牵走了电脑的");((*w2).shoupai)[y].Kanpai();(*w1).shoupai[(*w1).shoupaishu] = ((*w2).shoupai)[y];for (i = y + 1; i <= ((*w2).shoupaishu); i++)((*w2).shoupai)[i - 1] = ((*w2).shoupai)[i];((*w2).shoupaishu)--;((*w1).shoupaishu)++;break;case 1:for (;;){(*w2).Kanzhuangbei();printf("请输入装备之前的编号,以回车键结束!\n");scanf("%d", &y);if ((((*w2).zhuangbei[y]).leixing != -1) && (y >= 0) && (y <= 3)){printf("你牵走了电脑的");((*w2).zhuangbei)[y].Kanpai();(*w1).shoupai[(*w1).shoupaishu] = ((*w2).zhuangbei)[y];((*w2).zhuangbeishu)--;((*w1).shoupaishu)++;((*w2).zhuangbei)[y].leixing = -1;if (!y)((*w2).zhuangbei[y]).changdu = 1;else if (y == 2)((*w2).juli[0])++;else if (y == 3)((*w1).juli[0])--;break;}else printf("你弃掉了一张空气!\n");}break;case 2:for (;;){(*w2).Kanpandingpai();printf("请输入判定牌之前的编号,以回车键结束!\n");scanf("%d", &y);if ((*w2).pandingpai[y].leixing != -1){printf("你牵走了电脑的");((*w2).pandingpai)[y].Kanpai();(*w1).shoupai[(*w1).shoupaishu] = ((*w2).pandingpai)[y];((*w2).pandingshu)--;((*w1).shoupaishu)++;((*w2).pandingpai)[y].leixing = -1;break;}else printf("你牵走了一张空气!\n");}break;default:break;}}else{if ((*w2).zhuangbeishu){if ((*w2).zhuangbei[1].leixing != -1){printf("电脑牵走了玩家的");((*w2).zhuangbei)[1].Kanpai();(*w1).shoupai[(*w1).shoupaishu] = ((*w2).zhuangbei)[1];((*w2).zhuangbeishu)--;((*w1).shoupaishu)++;((*w2).zhuangbei)[1].leixing = -1;}else if ((*w2).zhuangbei[3].leixing != -1){printf("电脑牵走了玩家的");((*w2).zhuangbei)[3].Kanpai();(*w1).shoupai[(*w1).shoupaishu] = ((*w2).zhuangbei)[3];((*w2).zhuangbeishu)--;((*w1).shoupaishu)++;((*w2).zhuangbei)[3].leixing = -1;((*w1).juli[0])--;}else if ((*w2).zhuangbei[0].leixing != -1){printf("电脑牵走了玩家的");((*w2).zhuangbei)[0].Kanpai();(*w1).shoupai[(*w1).shoupaishu] = ((*w2).zhuangbei)[0];((*w2).zhuangbeishu)--;((*w1).shoupaishu)++;((*w2).zhuangbei)[0].leixing = -1;((*w2).zhuangbei)[0].changdu = 1;}else{printf("电脑牵走了玩家的");((*w2).zhuangbei)[2].Kanpai();(*w1).shoupai[(*w1).shoupaishu] = ((*w2).zhuangbei)[2];((*w2).zhuangbeishu)--;((*w1).shoupaishu)++;((*w2).zhuangbei)[2].leixing = -1;((*w2).juli[0])--;}}else{srand((unsigned)time(NULL));y = rand() % ((*w2).shoupaishu);printf("电脑牵走了玩家的手牌");((*w2).shoupai)[y].Kanpai();(*w1).shoupai[(*w1).shoupaishu] = ((*w2).shoupai)[y];for (i = y + 1; i <= ((*w2).shoupaishu); i++)((*w2).shoupai)[i - 1] = ((*w2).shoupai)[i];((*w2).shoupaishu)--;((*w1).shoupaishu)++;}}
}
void Wuzhong(wujiang* w1, pai A[104], int* x, pai B[104], int* y)
{Mopai(&((*w1).shoupaishu), (*w1).shoupai, A, x, B, y, (*w1).juese);
}
int Juedou(wujiang* w1, wujiang* w2, pai qipaidui[104], int* qipaishu)
{int i, j, x;if ((*w1).juese){for (;;){j = 0;for (x = 0; x < ((*w2).shoupaishu); x++){if ((*w2).shoupai[x].leixing == 101){printf("电脑打出");((*w2).shoupai)[x].Kanpai();qipaidui[*qipaishu] = ((*w2).shoupai)[x];for (int i = x + 1; i <= ((*w2).shoupaishu); i++)((*w2).shoupai)[i - 1] = ((*w2).shoupai)[i];((*w2).shoupaishu)--;(*qipaishu)++;j = 1;break;}}if (!j){printf("玩家对电脑造成1点伤害!\n");((*w2).tili)--;i = Binsi(w1, w2, qipaidui, qipaishu);return i;break;}j = 0;for (;;){printf("请打出一张【杀】响应【决斗】,否则你将受到1点伤害!\n请输入手牌之前的编号,或者输入“-1”放弃出【杀】,以回车结束!\n");if (((*w1).zhuangbei[0].leixing == 305))printf("如果想发动【丈八蛇矛】效果,请输入“100”,以回车结束!\n");(*w1).Kanshoupai();scanf("%d", &x);if (x == -1){int i;((*w1).tili)--;printf("电脑对玩家造成1点伤害!\n");i = Binsi(w2, w1, qipaidui, qipaishu);return i;break;}else if (((*w1).zhuangbei[0].leixing == 305) && x == 100){pai p = Zhangba(w1, qipaidui, qipaishu);p.paifu = -1;printf("打出!\n");j = 1;break;}else if ((*w1).shoupai[x].leixing == 101){printf("玩家打出");((*w1).shoupai)[x].Kanpai();qipaidui[*qipaishu] = ((*w1).shoupai)[x];for (i = x + 1; i <= ((*w1).shoupaishu); i++)((*w1).shoupai)[i - 1] = ((*w1).shoupai)[i];((*w1).shoupaishu)--;(*qipaishu)++;j = 1;break;}else printf("你确定你打出的是【杀】?\n");}}}else{for (;;){j = 0;for (;;){printf("请打出一张【杀】响应【决斗】,否则你将受到1点伤害!\n请输入手牌之前的编号,或者输入“-1”放弃出【杀】,以回车结束!\n");if (((*w1).zhuangbei[0].leixing == 305))printf("如果想发动【丈八蛇矛】效果,请输入“100”,以回车结束!\n");(*w2).Kanshoupai();scanf("%d", &x);if (x == -1){int i;((*w2).tili)--;printf("电脑对玩家造成1点伤害!\n");i = Binsi(w1, w2, qipaidui, qipaishu);return i;break;}else if (((*w2).zhuangbei[0].leixing == 305) && x == 100){pai p = Zhangba(w2, qipaidui, qipaishu);p.paifu = -1;printf("打出!\n");j = 1;break;}else if ((*w2).shoupai[x].leixing == 101){printf("玩家打出");((*w2).shoupai)[x].Kanpai();qipaidui[*qipaishu] = ((*w2).shoupai)[x];for (i = x + 1; i <= ((*w2).shoupaishu); i++)((*w2).shoupai)[i - 1] = ((*w2).shoupai)[i];((*w2).shoupaishu)--;(*qipaishu)++;j = 1;break;}else printf("你确定你打出的是【杀】?\n");}j = 0;for (x = 0; x < ((*w1).shoupaishu); x++){if ((*w1).shoupai[x].leixing == 101){printf("电脑打出");((*w1).shoupai)[x].Kanpai();qipaidui[*qipaishu] = ((*w1).shoupai)[x];for (int i = x + 1; i <= ((*w1).shoupaishu); i++)((*w1).shoupai)[i - 1] = ((*w1).shoupai)[i];((*w1).shoupaishu)--;(*qipaishu)++;j = 1;break;}}if (!j){printf("玩家对电脑造成1点伤害!\n");((*w2).tili)--;i = Binsi(w2, w1, qipaidui, qipaishu);return i;break;}}}
}
int Jiedao(wujiang* w1, wujiang* w2, pai paidui[104], int* paiduishu, pai qipaidui[104], int* qipaishu)
{int i, j = 0, x;if ((*w1).juese){for (x = 0; x < ((*w2).shoupaishu); x++){if ((*w2).shoupai[x].leixing == 101){printf("电脑对玩家使用");((*w2).shoupai)[x].Kanpai();qipaidui[*qipaishu] = ((*w2).shoupai)[x];for (int i = x + 1; i <= ((*w2).shoupaishu); i++)((*w2).shoupai)[i - 1] = ((*w2).shoupai)[i];((*w2).shoupaishu)--;(*qipaishu)++;j = 1;break;}}if (j){i = Sha(w2, w1, paidui, paiduishu, qipaidui, qipaishu);return i;printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n", (*w1).tili, (*w1).tilishangxian, (*w2).tili, (*w2).tilishangxian);}else{printf("电脑放弃使用【杀】,玩家获得电脑的武器");(*w2).zhuangbei[0].Kanpai();(*w1).shoupai[(*w1).shoupaishu] = ((*w2).zhuangbei)[0];((*w2).zhuangbeishu)--;((*w1).shoupaishu)++;((*w2).zhuangbei)[0].leixing = -1;((*w2).zhuangbei)[0].changdu = 1;(*w1).Kanshoupai();return 0;}}else{for (;;){printf("请对电脑使用一张【杀】,否则电脑将获得你的武器!\n请输入手牌之前的编号,或者输入“-1”放弃出【杀】,以回车结束!\n");if (((*w2).zhuangbei[0].leixing == 305))printf("如果想发动【丈八蛇矛】效果,请输入“100”,以回车结束!\n");(*w2).Kanshoupai();scanf("%d", &x);if (x == -1)break;else if (((*w2).zhuangbei[0].leixing == 305) && x == 100){pai p = Zhangba(w2, qipaidui, qipaishu);p.paifu = -1;printf("使用!\n");j = 1;break;}else if ((*w2).shoupai[x].leixing == 101){printf("玩家对电脑使用");((*w2).shoupai)[x].Kanpai();qipaidui[*qipaishu] = ((*w2).shoupai)[x];for (i = x + 1; i <= ((*w2).shoupaishu); i++)((*w2).shoupai)[i - 1] = ((*w2).shoupai)[i];((*w2).shoupaishu)--;(*qipaishu)++;j = 1;break;}else printf("你确定你使用的是【杀】?\n");}if (j){i = Sha(w2, w1, paidui, paiduishu, qipaidui, qipaishu);return i;printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n", (*w2).tili, (*w2).tilishangxian, (*w1).tili, (*w1).tilishangxian);}else{printf("玩家放弃使用【杀】,电脑获得玩家的武器");((*w2).zhuangbei)[0].Kanpai();(*w1).shoupai[(*w1).shoupaishu] = ((*w2).zhuangbei)[0];((*w2).zhuangbeishu)--;((*w1).shoupaishu)++;((*w2).zhuangbei)[0].leixing = -1;((*w2).zhuangbei)[0].changdu = 1;return 0;}}
}
void Taoyuan(wujiang* w)
{if ((*w).tili < (*w).tilishangxian){((*w).tili)++;if ((*w).juese)printf("玩家");else printf("电脑");printf("恢复1点体力!\n");}
}
void Kaipai(pai paidui[104], int* paiduishu, int renshu, pai wugu[10])
{int i;printf("五谷丰登开牌:\n");for (i = 1; i <= renshu; i++){wugu[i - 1] = paidui[104 - (*paiduishu)];(*paiduishu)--;printf("%d ", i - 1);wugu[i - 1].Kanpai();}
}
void Qupai(pai wugu[10], wujiang* w)
{int i, x;printf("五谷丰登开牌:\n");for (i = 0; (wugu[i].leixing) != -1; i++){printf("%d ", i);wugu[i].Kanpai();}if ((*w).juese){for (;;){printf("请选择你想要的卡牌,输入卡牌之前的编号,以回车结束!\n");scanf("%d", &x);if (wugu[x].leixing != -1){printf("玩家选择");wugu[x].Kanpai();(*w).shoupai[(*w).shoupaishu] = wugu[x];((*w).shoupaishu)++;for (i = x + 1; i <= 9; i++)wugu[i - 1] = wugu[i];wugu[9].leixing = -1;break;}printf("你选择了一张空气加入手牌!");}}else{printf("电脑选择");wugu[0].Kanpai();(*w).shoupai[(*w).shoupaishu] = wugu[0];((*w).shoupaishu)++;for (i = 1; i <= 9; i++)wugu[i - 1] = wugu[i];wugu[9].leixing = -1;}
}
void Rengpai(pai wugu[10], pai qipaidui[104], int* qipaishu)
{int i;for (i = 0; wugu[i].leixing != -1; i++){qipaidui[*qipaishu] = wugu[i];(*qipaishu)++;wugu[i].leixing = -1;}
}
int Nanman(wujiang* w1, wujiang* w2, pai qipaidui[104], int* qipaishu)
{int i, x;if ((*w1).juese){for (x = 0; x < ((*w2).shoupaishu); x++){if ((*w2).shoupai[x].leixing == 101){printf("电脑打出");((*w2).shoupai)[x].Kanpai();qipaidui[*qipaishu] = ((*w2).shoupai)[x];for (int i = x + 1; i <= ((*w2).shoupaishu); i++)((*w2).shoupai)[i - 1] = ((*w2).shoupai)[i];((*w2).shoupaishu)--;(*qipaishu)++;return 0;break;}}printf("玩家对电脑造成1点伤害!\n");((*w2).tili)--;i = Binsi(w1, w2, qipaidui, qipaishu);return i;}else{for (;;){printf("请打出一张【杀】响应【南蛮入侵】,否则你将受到1点伤害!\n请输入手牌之前的编号,或者输入“-1”放弃出【杀】,以回车结束!\n");if (((*w2).zhuangbei[0].leixing == 305))printf("如果想发动【丈八蛇矛】效果,请输入“100”,以回车结束!\n");(*w2).Kanshoupai();scanf("%d", &x);if (x == -1){int i;((*w2).tili)--;printf("电脑对玩家造成1点伤害!\n");i = Binsi(w1, w2, qipaidui, qipaishu);return i;break;}else if (((*w2).zhuangbei[0].leixing == 305) && x == 100){pai p = Zhangba(w2, qipaidui, qipaishu);p.paifu = -1;printf("使用!\n");return 0;break;}else if ((*w2).shoupai[x].leixing == 101){printf("玩家打出");((*w2).shoupai)[x].Kanpai();qipaidui[*qipaishu] = ((*w2).shoupai)[x];for (i = x + 1; i <= ((*w2).shoupaishu); i++)((*w2).shoupai)[i - 1] = ((*w2).shoupai)[i];((*w2).shoupaishu)--;(*qipaishu)++;return 0;break;}else printf("你确定你打出的是【杀】?\n");}}
}
int Wanjian(wujiang* w1, wujiang* w2, pai paidui[104], int* paiduishu, pai qipaidui[104], int* qipaishu)
{int i;i = Shan(w1, w2, paidui, paiduishu, qipaidui, qipaishu);if (i == -1){i = Binsi(w1, w2, qipaidui, qipaishu);return i;}else return 0;
}
int Chupai(pai paidui[104], pai qipaidui[104], int* paiduishu, int* qipaishu, wujiang* w1, wujiang* w2, pai yuanshipaidui[2][4][13])
{pai p1;int sha = 1; int y = -1, i, t = ((*w1).shoupaishu) - 1;for (;; t--){if ((*w1).juese){printf("\n电脑当前手牌数:%d\n", ((*w2).shoupaishu));(*w2).Kanzhuangbei();(*w1).Kanshoupai();(*w1).Kanzhuangbei();}int j = 0;if ((*w1).juese && ((*w1).zhuangbei[0].leixing == 305))printf("如果想发动【丈八蛇矛】效果,请输入“100”,以回车结束!\n");y = Xuanpai(w1, t);p1 = Panpai(w1, &sha, y, qipaidui, qipaishu);if ((p1).leixing == -1)break;else if ((p1).leixing == 0)continue;else{int duixiang;duixiang = Mubiao(p1, w1, w2, &sha);if (duixiang == -2)continue;else{Da1pai(w1, w2, qipaidui, qipaishu, y);Miaoshu(p1, ((*w1).juese), duixiang);if (!((*w1).juese)){printf("\n电脑当前手牌数:%d\n", ((*w1).shoupaishu));(*w1).Kanzhuangbei();(*w2).Kanshoupai();(*w2).Kanzhuangbei();}switch (p1.leixing){case 101:i = Sha(w1, w2, paidui, paiduishu, qipaidui, qipaishu);if (i == -1) { return -1; break; }if ((*w1).juese)printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n", (*w1).tili, (*w1).tilishangxian, (*w2).tili, (*w2).tilishangxian);else printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n", (*w2).tili, (*w2).tilishangxian, (*w1).tili, (*w1).tilishangxian);break;case 103:Tao(w1);break;case 201:for (;;){i = Wuxie(&p1, w1, w2, qipaidui, qipaishu, 0);if (!i)break;j++;i = Wuxie(&p1, w2, w1, qipaidui, qipaishu, 0);if (!i)break;j++;}if (!(j % 2))Chai(w1, w2, qipaidui, qipaishu);else;if ((*w1).juese)(*w1).Kanshoupai();break;case 202:for (;;){i = Wuxie(&p1, w1, w2, qipaidui, qipaishu, 0);if (!i)break;j++;i = Wuxie(&p1, w2, w1, qipaidui, qipaishu, 0);if (!i)break;j++;}if (!(j % 2))Qian(w1, w2);else;if ((*w1).juese)(*w1).Kanshoupai();break;case 203:for (;;){i = Wuxie(&p1, w1, w2, qipaidui, qipaishu, 0);if (!i)break;j++;i = Wuxie(&p1, w2, w1, qipaidui, qipaishu, 0);if (!i)break;j++;}if (!(j % 2))Wuzhong(w1, paidui, paiduishu, qipaidui, qipaishu);else;break;case 204:for (;;){i = Wuxie(&p1, w1, w2, qipaidui, qipaishu, 0);if (!i)break;j++;i = Wuxie(&p1, w2, w1, qipaidui, qipaishu, 0);if (!i)break;j++;}if (!(j % 2)){i = Juedou(w1, w2, qipaidui, qipaishu);if (i == -1)return -1;if ((*w1).juese)printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n", (*w1).tili, (*w1).tilishangxian, (*w2).tili, (*w2).tilishangxian);else printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n", (*w2).tili, (*w2).tilishangxian, (*w1).tili, (*w1).tilishangxian);}break;case 205:for (;;){i = Wuxie(&p1, w1, w2, qipaidui, qipaishu, 0);if (!i)break;j++;i = Wuxie(&p1, w2, w1, qipaidui, qipaishu, 0);if (!i)break;j++;}if (!(j % 2)){i = Jiedao(w1, w2, paidui, paiduishu, qipaidui, qipaishu);if (i == -1)return -1;if ((*w1).juese)printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n", (*w1).tili, (*w1).tilishangxian, (*w2).tili, (*w2).tilishangxian);else printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n", (*w2).tili, (*w2).tilishangxian, (*w1).tili, (*w1).tilishangxian);}break;case 206:for (;;){i = Wuxie(&p1, w1, w2, qipaidui, qipaishu, 0);if (!i)break;j++;i = Wuxie(&p1, w2, w1, qipaidui, qipaishu, 0);if (!i)break;j++;}if (!(j % 2))Taoyuan(w1);j = 0;for (;;){i = Wuxie(&p1, w2, w1, qipaidui, qipaishu, 0);if (!i)break;j++;i = Wuxie(&p1, w2, w1, qipaidui, qipaishu, 0);if (!i)break;j++;}if (!(j % 2))Taoyuan(w2);break;case 207:pai wugu[10];for (i = 1; i <= 10; i++)wugu[i - 1].leixing = -1;Kaipai(paidui, paiduishu, 2, wugu);for (;;){i = Wuxie(&p1, w1, w2, qipaidui, qipaishu, 0);if (!i)break;j++;i = Wuxie(&p1, w2, w1, qipaidui, qipaishu, 0);if (!i)break;j++;}if (!(j % 2))Qupai(wugu, w1);for (;;){i = Wuxie(&p1, w2, w1, qipaidui, qipaishu, 0);if (!i)break;j++;i = Wuxie(&p1, w2, w1, qipaidui, qipaishu, 0);if (!i)break;j++;}if (!(j % 2))Qupai(wugu, w2);Rengpai(wugu, qipaidui, qipaishu); printf("弃牌数:%d\n", *qipaishu);break;case 208:for (;;){i = Wuxie(&p1, w1, w2, qipaidui, qipaishu, 0);if (!i)break;j++;i = Wuxie(&p1, w2, w1, qipaidui, qipaishu, 0);if (!i)break;j++;}if (!(j % 2)){i = Nanman(w1, w2, qipaidui, qipaishu);if (i == -1)return -1;if ((*w1).juese)printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n", (*w1).tili, (*w1).tilishangxian, (*w2).tili, (*w2).tilishangxian);else printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n", (*w2).tili, (*w2).tilishangxian, (*w1).tili, (*w1).tilishangxian);}break;case 209:for (;;){i = Wuxie(&p1, w1, w2, qipaidui, qipaishu, 0);if (!i)break;j++;i = Wuxie(&p1, w2, w1, qipaidui, qipaishu, 0);if (!i)break;j++;}if (!(j % 2)){i = Wanjian(w1, w2, paidui, paiduishu, qipaidui, qipaishu);if (i == -1)return -1;if ((*w1).juese)printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n", (*w1).tili, (*w1).tilishangxian, (*w2).tili, (*w2).tilishangxian);else printf("玩家当前体力值:%d/%d\n电脑当前体力值:%d/%d\n", (*w2).tili, (*w2).tilishangxian, (*w1).tili, (*w1).tilishangxian);}break;case 361:case 362:case 363:((*w1).juli[0])--; break;case 381:case 382:case 383:((*w2).juli[0])++; break;default:break;}printf("\n");}}}return 0;
}
void Qipai(pai shoupai[20], int* shoupaishu, pai qipaidui[104], int* qipaishu, int juese, int* shoupaishangxian)
{int x;if ((*shoupaishu) > (*shoupaishangxian)){if (juese != 1 && juese != 0)printf("身份参数错误!");int q = (*shoupaishu) - (*shoupaishangxian);int i, j;for (j = 1; j <= q; j++){for (;;){if (juese){printf("弃牌请输入手牌之前的编号,以回车结束!\n注:一次只能弃一张牌\n");printf("手牌数:%d\n", *shoupaishu);scanf("%d", &x);if (x >= 0 && x < (*shoupaishu))break;else printf("你弃掉了一张空气!\n");}else{srand((unsigned)time(NULL));x = rand() % (*shoupaishu);break;}}qipaidui[*qipaishu] = shoupai[x];for (i = x + 1; i <= (*shoupaishu); i++)shoupai[i - 1] = shoupai[i];(*shoupaishu)--;if (juese)printf("弃牌阶段玩家弃置");else printf("弃牌阶段电脑弃置");qipaidui[*qipaishu].Kanpai();(*qipaishu)++;int m;if (juese){printf("玩家当前手牌:\n");for (m = 0; m <= (*shoupaishu - 1); m++){printf("%d ", m);(shoupai[m]).Kanpai();}} printf("弃牌堆:%d\n", *qipaishu);}}
}
int Huihe(pai A[104], pai B[104], int* x, int* y, pai yuanshipaidui[2][4][13], wujiang* w1, wujiang* w2)
{printf("\n回合开始阶段……\n");switch ((*w1).huihekaishi){case 0:break;default:printf("回合开始阶段参数错误!\n"); break;}printf("判定阶段……\n");int K = 0;if ((*w1).pandingshu > 0){int i, j;for (; (*w1).pandingshu;){switch ((*w1).pandingpai[0].leixing){case 251:printf("【乐不思蜀】开始判定……\n"); break;case 252:printf("【闪电】开始判定……\n"); break;default:printf("【??】开始判定……\n"); break;}j = 0;pai p = ((*w1).pandingpai[0]);for (;;)//在判定之前询问【无懈】{i = Wuxie(&p, w2, w1, B, y, 0);if (!i)break;j++;i = Wuxie(&p, w1, w2, B, y, 0);if (!i)break;j++;}switch ((*w1).pandingpai[0].leixing){case 251:if (!(j % 2)){printf("【乐不思蜀】的判定牌是:");Panding(A, x, B, y);if ((B[(*y) - 1].huase) != 1){printf("【乐不思蜀】判定成功!\n");if ((*w1).juese)printf("玩家");else printf("电脑");printf("跳过出牌阶段!\n");K = -1;}else printf("【乐不思蜀】判定失败!\n");}B[*y] = (*w1).pandingpai[0];((*w1).pandingshu)--;(*w1).pandingpai[0] = (*w1).pandingpai[1];(*w1).pandingpai[1] = (*w1).pandingpai[2];(*w1).pandingpai[2].leixing = -1;(*y)++;break;case 252:if (!(j % 2)){printf("【闪电】的判定牌是:");Panding(A, x, B, y);if ((B[(*y) - 1].huase == 0) && (B[(*y) - 1].dianshu >= 1) && (B[(*y) - 1].dianshu <= 8)){printf("【闪电】判定成功!\n");if ((*w1).juese)printf("玩家");else printf("电脑");printf("受到3点雷电伤害!");((*w1).tili) = ((*w1).tili) - 3;i = Binsi(w2, w1, B, y);B[*y] = (*w1).pandingpai[0];((*w1).pandingshu)--;(*w1).pandingpai[0] = (*w1).pandingpai[1];(*w1).pandingpai[1] = (*w1).pandingpai[2];(*w1).pandingpai[2].leixing = -1;(*y)++;if (i == -1)return -1;}else{printf("【闪电】判定失败!\n");(*w2).pandingpai[2] = (*w2).pandingpai[1];(*w2).pandingpai[1] = (*w2).pandingpai[0];(*w2).pandingpai[0] = (*w1).pandingpai[0];(*w1).pandingpai[0] = (*w1).pandingpai[1];(*w1).pandingpai[1] = (*w1).pandingpai[2];(*w1).pandingpai[2].leixing = -1;((*w1).pandingshu)--;((*w2).pandingshu)++;}break;}default:printf("判定牌错误!");} printf("弃牌数:%d\n", *y);}}else if (!((*w1).pandingshu));else printf("判定阶段参数错误!\n");printf("摸牌阶段……\n");switch ((*w1).mopai){case 0:Mopai(&((*w1).shoupaishu), (*w1).shoupai, A, x, B, y, (*w1).juese); break;case -1:break;default:printf("摸牌阶段参数错误!\n"); break;}if (K == -1)goto M;printf("出牌阶段……\n");switch ((*w1).chupai){case 0:{int i;i = Chupai(A, B, x, y, w1, w2, yuanshipaidui);if (i == -1){return -1;break;}else break;}case -1:break;default:printf("出牌阶段参数错误!\n"); break;}
M:printf("弃牌阶段……\n");switch ((*w1).qipai){case 0:Qipai((*w1).shoupai, &((*w1).shoupaishu), B, y, (*w1).juese, &((*w1).tili)); break;default:printf("弃牌阶段参数错误!\n"); break;}printf("回合结束阶段……\n");switch ((*w1).huihejieshu){case 0:break;default:printf("回合结束阶段参数错误!\n"); break;}return 0;
}
int main()
{void Kanshoupai(pai p);pai yuanshipaidui[2][4][13], qipaidui[104], paidui[104];wujiang wanjia, com;com.tili = wanjia.tili = 5;com.tilishangxian = wanjia.tilishangxian = 5;com.huihekaishi = wanjia.huihekaishi = 0;com.panding = wanjia.panding = 0;com.mopai = wanjia.mopai = 0;com.chupai = wanjia.chupai = 0;com.qipai = wanjia.qipai = 0;com.huihejieshu = wanjia.huihejieshu = 0;com.shoupaishu = wanjia.shoupaishu = 0;com.pandingshu = wanjia.pandingshu = 0;com.zhuangbeishu = wanjia.zhuangbeishu = 0;com.juese = 0; wanjia.juese = 1;pai p;p.leixing = -1;com.zhuangbei[0] = com.zhuangbei[1] = com.zhuangbei[2] = com.zhuangbei[3] = wanjia.zhuangbei[0] = wanjia.zhuangbei[1] = wanjia.zhuangbei[2] = wanjia.zhuangbei[3] = p;com.zhuangbei[0].changdu = wanjia.zhuangbei[0].changdu = 1;com.pandingpai[0] = com.pandingpai[1] = com.pandingpai[2] = wanjia.pandingpai[0] = wanjia.pandingpai[1] = wanjia.pandingpai[2] = p;com.juli[0] = wanjia.juli[0] = 1;int a, b, c;for (a = 0; a <= 1; a++){for (b = 0; b <= 3; b++){for (c = 0; c <= 12; c++){yuanshipaidui[a][b][c].paifu = a;yuanshipaidui[a][b][c].huase = b;yuanshipaidui[a][b][c].dianshu = c;}}}yuanshipaidui[0][0][0].leixing = 204;yuanshipaidui[0][0][1].leixing = 331;yuanshipaidui[0][0][2].leixing = 201;yuanshipaidui[0][0][3].leixing = 201;yuanshipaidui[0][0][4].leixing = 304; yuanshipaidui[0][0][4].changdu = 3;yuanshipaidui[0][0][5].leixing = 251;yuanshipaidui[0][0][6].leixing = 101;yuanshipaidui[0][0][7].leixing = 101;yuanshipaidui[0][0][8].leixing = 101;yuanshipaidui[0][0][9].leixing = 101;yuanshipaidui[0][0][10].leixing = 202;yuanshipaidui[0][0][11].leixing = 201;yuanshipaidui[0][0][12].leixing = 208;yuanshipaidui[0][1][0].leixing = 209;yuanshipaidui[0][1][1].leixing = 102;yuanshipaidui[0][1][2].leixing = 103;yuanshipaidui[0][1][3].leixing = 103;yuanshipaidui[0][1][4].leixing = 308; yuanshipaidui[0][1][4].changdu = 5;yuanshipaidui[0][1][5].leixing = 103;yuanshipaidui[0][1][6].leixing = 103;yuanshipaidui[0][1][7].leixing = 103;yuanshipaidui[0][1][8].leixing = 103;yuanshipaidui[0][1][9].leixing = 101;yuanshipaidui[0][1][10].leixing = 101;yuanshipaidui[0][1][11].leixing = 103;yuanshipaidui[0][1][12].leixing = 102;yuanshipaidui[0][2][0].leixing = 204;yuanshipaidui[0][2][1].leixing = 101;yuanshipaidui[0][2][2].leixing = 101;yuanshipaidui[0][2][3].leixing = 101;yuanshipaidui[0][2][4].leixing = 101;yuanshipaidui[0][2][5].leixing = 101;yuanshipaidui[0][2][6].leixing = 101;yuanshipaidui[0][2][7].leixing = 101;yuanshipaidui[0][2][8].leixing = 101;yuanshipaidui[0][2][9].leixing = 101;yuanshipaidui[0][2][10].leixing = 101;yuanshipaidui[0][2][11].leixing = 205;yuanshipaidui[0][2][12].leixing = 205;yuanshipaidui[0][3][0].leixing = 204;yuanshipaidui[0][3][1].leixing = 102;yuanshipaidui[0][3][2].leixing = 102;yuanshipaidui[0][3][3].leixing = 102;yuanshipaidui[0][3][4].leixing = 102;yuanshipaidui[0][3][5].leixing = 101;yuanshipaidui[0][3][6].leixing = 101;yuanshipaidui[0][3][7].leixing = 101;yuanshipaidui[0][3][8].leixing = 101;yuanshipaidui[0][3][9].leixing = 101;yuanshipaidui[0][3][10].leixing = 102;yuanshipaidui[0][3][11].leixing = 103;yuanshipaidui[0][3][12].leixing = 101;yuanshipaidui[1][0][0].leixing = 252;yuanshipaidui[1][0][1].leixing = 302; yuanshipaidui[1][0][1].changdu = 2;yuanshipaidui[1][0][2].leixing = 202;yuanshipaidui[1][0][3].leixing = 202;yuanshipaidui[1][0][4].leixing = 383;yuanshipaidui[1][0][5].leixing = 303; yuanshipaidui[1][0][5].changdu = 2;yuanshipaidui[1][0][6].leixing = 208;yuanshipaidui[1][0][7].leixing = 101;yuanshipaidui[1][0][8].leixing = 101;yuanshipaidui[1][0][9].leixing = 101;yuanshipaidui[1][0][10].leixing = 210;yuanshipaidui[1][0][11].leixing = 305; yuanshipaidui[1][0][11].changdu = 3;yuanshipaidui[1][0][12].leixing = 362;yuanshipaidui[1][1][0].leixing = 206;yuanshipaidui[1][1][1].leixing = 102;yuanshipaidui[1][1][2].leixing = 207;yuanshipaidui[1][1][3].leixing = 207;yuanshipaidui[1][1][4].leixing = 361;yuanshipaidui[1][1][5].leixing = 251;yuanshipaidui[1][1][6].leixing = 203;yuanshipaidui[1][1][7].leixing = 203;yuanshipaidui[1][1][8].leixing = 203;yuanshipaidui[1][1][9].leixing = 101;yuanshipaidui[1][1][10].leixing = 203;yuanshipaidui[1][1][11].leixing = 201;yuanshipaidui[1][1][12].leixing = 381;yuanshipaidui[1][2][0].leixing = 301; yuanshipaidui[1][2][0].changdu = 1;yuanshipaidui[1][2][1].leixing = 331;yuanshipaidui[1][2][2].leixing = 201;yuanshipaidui[1][2][3].leixing = 201;yuanshipaidui[1][2][4].leixing = 382;yuanshipaidui[1][2][5].leixing = 251;yuanshipaidui[1][2][6].leixing = 208;yuanshipaidui[1][2][7].leixing = 101;yuanshipaidui[1][2][8].leixing = 101;yuanshipaidui[1][2][9].leixing = 101;yuanshipaidui[1][2][10].leixing = 101;yuanshipaidui[1][2][11].leixing = 210;yuanshipaidui[1][2][12].leixing = 210;yuanshipaidui[1][3][0].leixing = 301; yuanshipaidui[1][3][0].changdu = 1;yuanshipaidui[1][3][1].leixing = 102;yuanshipaidui[1][3][2].leixing = 202;yuanshipaidui[1][3][3].leixing = 202;yuanshipaidui[1][3][4].leixing = 306; yuanshipaidui[1][3][4].changdu = 3;yuanshipaidui[1][3][5].leixing = 102;yuanshipaidui[1][3][6].leixing = 102;yuanshipaidui[1][3][7].leixing = 102;yuanshipaidui[1][3][8].leixing = 102;yuanshipaidui[1][3][9].leixing = 102;yuanshipaidui[1][3][10].leixing = 102;yuanshipaidui[1][3][11].leixing = 307; yuanshipaidui[1][3][11].changdu = 4;yuanshipaidui[1][3][12].leixing = 363;int paiduishu = 104;int qipaishu = 0;printf("游戏开始!\n");Qishixipai(yuanshipaidui, paidui);Qishishoupai(&wanjia, paidui, &(paiduishu), qipaidui, &(qipaishu));Qishishoupai(&com, paidui, &(paiduishu), qipaidui, &(qipaishu));int i;for (;;){i = Huihe(paidui, qipaidui, &paiduishu, &qipaishu, yuanshipaidui, &wanjia, &com);if (i == -1)break;i = Huihe(paidui, qipaidui, &paiduishu, &qipaishu, yuanshipaidui, &com, &wanjia);if (i == -1)break;}
}

c++实现三国杀小游戏相关推荐

  1. 三国杀小游戏(C++)

    一.简介   <三国杀>是一款卡牌类.战略类的游戏,在很多平台上都有出现,从一开始的实体桌游到后来的PC端和移动端,覆盖很多渠道.三国杀有很多种模式:身份模式.国战模式.3vs3.1vs1 ...

  2. 微信小游戏越来越「重」,但它能赚钱么?

    氪金.直播.上 3D,小游戏已经不「小」了. 说起微信小游戏,外界总会有几个刻板标签. 比如,小游戏只能玩轻度游戏,「跳一跳」.「欢乐斗地主」是典型:小游戏不温不火,「跳一跳」之后似乎再无全民话题的爆 ...

  3. 自制青蛙跳台阶小游戏~

    青蛙跳台阶小游戏 1.概念(concept)文档 楔子(Setting):千百年来,人们在贬低别人时,常用井底之蛙来描述那个人,但这却让青蛙不开心了,于是青蛙决定跳出井底,为自己讨一个公道. 玩法(G ...

  4. 用Construct 2制作入门小游戏~

    今天在软导课上了解到了Construct 2这个神器,本零基础菜鸟决定尝试做一个简单的小游戏(实际上是入门的教程啊= = 首先呢,肯定是到官网下载软件啊,点击我下载~ 等安装完毕后我便按照新手教程开始 ...

  5. [FaceBook]测试、发布和分享小游戏

    FaceBook小游戏 测试.发布和分享小游戏 对于小游戏,您现在可以十分轻松地在本地测试开发版本,自动完成发布流程,以及与团队分享编译版本.本文档会详细说明这些步骤. 通过本地服务器测试游戏 小游戏 ...

  6. OPPO小游戏vConsole开启方法

    OPPO小游戏是不会报红色错误的,要开启vConsole,要在首场景脚本内onLoad里加上以下代码: qg.setEnableDebug({enableDebug: true, // true 为打 ...

  7. unity课设小游戏_Unity制作20个迷你小游戏实例训练视频教程

    本教程是关于Unity制作20个迷你小游戏实例训练视频教程,时长:20小时,大小:3.8 GB,MP4高清视频格式,教程使用软件:Unity,附源文件,作者:Raja Biswas,共97个章节,语言 ...

  8. python井字棋_用Python做一个井字棋小游戏

    井字棋是一个经典的小游戏,在九宫格上玩家轮流画OXO,当每列或每行或是两个对角成一线时便是获胜. 今天就用Python编写一个井字棋小游戏,与电脑对战. 程序执行画面如下图所示: 程序提供了两种人工智 ...

  9. 用c++写一个猜数字的小游戏

    代码都很简单,就不细细说了,值得注意的一些就是: 对于初学c++的小伙伴来说,c++很多基础东西都和c语言有着一定的区别,例如头文件的写法,读入和输出的写法都不一样.例如下面这个小游戏中囊括了time ...

最新文章

  1. Linux strace 跟踪进程信息
  2. Redis基本数据类型1--String
  3. crontab -e
  4. linux分区语言,Linux磁盘分区(9)-Go语言中文社区
  5. CUDA学习(六十三)
  6. Codeforces Beta Round #4 (Div. 2 Only) B. Before an Exam dp
  7. mysql5.6.msi 百度云_如何安装Mysql数据库类型msi(5.6)
  8. SqlServer2008备份与还原(完整图示版)
  9. RabbitMQ主题模式(Topic)
  10. am335x 电容屏驱动添加。
  11. Winform窗体控件自适应大小
  12. kindeditor php配置,KindEditor-编辑器配置参数属性 | 小灰灰博客
  13. asp.net listview 单元格文字颜色_Excel – 如何批量修改单元格中部分关键字的字体颜色?...
  14. 机器学习——Gradient Boost Decision Tree(Treelink)
  15. 华为联手沃达丰建立NB-IoT开放实验室
  16. 基于数字孪生的IBV智能建筑可视化系统了解一下
  17. 关于线性稳压芯片或类似的电路构成稳压电路发热严重的问题
  18. linux系统it固定资产管理系统包_固定资产管理系统功能介绍
  19. python输出被五整除的数_Python程序打印给定数字的所有被3和5整除的数字
  20. 一个超级棒的 Chrome 翻译插件

热门文章

  1. 古龙冰洞超级计算机指令,龙族幻想古龙冰洞异闻攻略 古龙冰洞指令介绍
  2. 程序员的天堂还是地狱:论东南亚BC工厂
  3. 在线电子书阅读微信小程序 毕业设计(2)分类
  4. MATLAB图像隐藏基础
  5. 移动端flexible解决ipad和ipad Pro不适配
  6. 我也写了部lt;西游记gt;
  7. Modbus 的RTU、ASCII、TCP解析
  8. ps意外崩溃_最新—Mac软件意外退出/移到废纸篓的解决方案,亲测有效
  9. Android--ImageView读取本地路径图片
  10. Excel2016 自动换行