c语言版三国杀.docx
- 文档编号:2844028
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:86
- 大小:31.07KB
c语言版三国杀.docx
《c语言版三国杀.docx》由会员分享,可在线阅读,更多相关《c语言版三国杀.docx(86页珍藏版)》请在冰豆网上搜索。
c语言版三国杀
C语言版三国杀1.2
暑假无聊之作,从6.28一直编到到7.17,中间7.9休,7.14-7.15休,其他时间每天都在编,终于赶着这个月之前结束战斗,实属不易(总觉着这话应该别由人来说。
。
。
)。
全文一共2513行,7202个字符,包括main函数在内一共引用33个函数,不算很多,但是对于我来说也算不少了,经过初步检验,程序可以运行,有兴趣的人可以运行一下,有问题可以来找我。
此版本为人机对战,2人局,无武将,无性别,标准包,无EX。
AI采用最低级出牌模式,完全没有逻辑,属于半随机模式。
运行方法,这个不用多讲,将源代码Ctrl+C&Ctrl+V到C++编译器中,编译通过后即可运行。
关于此代码,给出以下几点声明:
1.版权问题。
虽然感觉不会有人会跟我抢这种2B版权,但是还是耍一回大牌,假装声明一下:
此代码版权归6+个人所有,仅供娱乐使用,允许复制、分享、转载,但是不允许用作商业用途(这种东西哪来的商业价值。
。
。
),违者必究。
2.鸣谢。
此代码100%为原创,不存在任何抄袭、剽窃、引用行为。
但是在编制过程中由于函数和地址代入方面的问题忘光了,上【XX知道】里求助相关事宜,在此对热心网友表示谢意。
编制完成后,在某童鞋的建议下在一个函数地方进行修改,使AI出牌模式由全随机升级为半随机,在此一并表示谢意。
3.关于作者。
本人的C语言(C++)掌握的所有内容全部为自学,而且全部是半调子水平。
除了最基本的三大语句和数组地址函数引用其余一概不知(啊?
链表是什么?
可以吃么?
),在文件引用方面更是闻所未闻。
所以请不要对代码的质量抱任何希望。
希望能得到在此方面的大神的指点。
4.语言问题。
此代码由C语言和C++混编而成,头文件用的是C++,中间部分有时使用C语言有时使用C++,一切视心情而定。
5.细节说明。
【雌雄双股剑】和【方天画戟】的特效无法发动。
EX包包括【寒冰剑】、【仁王盾】、【闪电】和【无懈可击】,均不在本代码中出现。
6.关于程序使用。
建议将exe最大化,因为会实时同步刷牌以及描述,普通窗口容易漏掉信息。
7.关于BUG。
我始终坚信,只要认真仔细检验,把可能出现的每一个细节问题都考虑到,BUG是完全可以避免出现的。
之所以没有在编制完成后第一时间公布,就是在调试各种大大小小可能出现的BUG。
所以,即使这份代码比较长,但是我敢打包票,我所公布出来的部分绝对存在BUG。
可能存在的BUG有:
你看到了AI的手牌,你打出或使用了AI的手牌,你或者AI的体力扣减出现在了对方的身上,你或者电脑被堵在出牌循环中出不来,卡牌被使用后没有被响应或者响应错误,牌数出现错误以及其他我还没有预见到的BUG。
如果发现BUG,你可以视心情而定要不要告诉我。
如果你告诉我,我也视心情而定来决定要不要请你吃饭。
8.信息反馈。
如果你对此程序有什么意见或者建议,也欢迎你通过各种途径告知我,我会在以后的版本中(以后有没有版本视心情而定)改正或改进以及鸣谢。
如果关于此代码有任何问题也欢迎垂询。
如果对代码细节有兴趣者也可告知我,此代码有带注释版本,欢迎一同讨论。
9.版本预告。
之后的版本视心情而定是否公布或者什么时候公布。
如果要公布,下一个版本将会在下列几种情况中包含至少一项:
(1)增加游戏人数(但仍是人机对战)
(2)增加身份模式(3)增加武将模式(4)增加拓展包(包括EX和军争)(5)增加AI智商。
敬请期待。
#include
#include
#include
#include
usingnamespacestd;
structpai
{
intpaifu;
inthuase;
intyanse;
intdianshu;
intleixing;
intchangdu;
voidKanpai()
{
if(paifu==0||paifu==1);
else
printf("牌副参数错误!
\n");
switch(huase)
{
case0:
cout<<"黑桃";break;
case1:
cout<<"红桃";break;
case2:
cout<<"草花";break;
case3:
cout<<"方片";break;
case-1:
cout<<"无色";break;
default:
printf("花色错误!
\n");break;
}
switch(dianshu)
{
case0:
cout<<"A";break;
case1:
cout<<"2";break;
case2:
cout<<"3";break;
case3:
cout<<"4";break;
case4:
cout<<"5";break;
case5:
cout<<"6";break;
case6:
cout<<"7";break;
case7:
cout<<"8";break;
case8:
cout<<"9";break;
case9:
cout<<"10";break;
case10:
cout<<"J";break;
case11:
cout<<"Q";break;
case12:
cout<<"K";break;
case-1:
cout<<"无点数";break;
default:
printf("点数错误!
\n");break;
}
switch(leixing)
{
case101:
cout<<"【杀】"< case102: cout<<"【闪】"< case103: cout<<"【桃】"< case201: cout<<"【过河拆桥】"< case202: cout<<"【顺手牵羊】"< case203: cout<<"【无中生有】"< case204: cout<<"【决斗】"< case205: cout<<"【借刀杀人】"< case206: cout<<"【桃园结义】"< case207: cout<<"【五谷丰登】"< case208: cout<<"【南蛮入侵】"< case209: cout<<"【万箭齐发】"< case210: cout<<"【无懈可击】"< case251: cout<<"【乐不思蜀】"< case252: cout<<"【闪电】"< case301: cout<<"【诸葛连弩 (1)】"< case302: cout<<"【雌雄双股剑 (2)】"< case303: cout<<"【青釭剑 (2)】"< case304: cout<<"【青龙偃月刀(3)】"< case305: cout<<"【丈八蛇矛(3)】"< case306: cout<<"【贯石斧(3)】"< case307: cout<<"【方天画戟(4)】"< case308: cout<<"【麒麟弓(5)】"< case331: cout<<"【八卦阵】"< case361: cout<<"【赤兔(-1)】"< case362: cout<<"【大宛(-1)】"< case363: cout<<"【紫辛(-1)】"< case381: cout<<"【爪黄飞电(+1)】"< case382: cout<<"【的卢(+1)】"< case383: cout<<"【绝影(+1)】"< default: printf("类型参数错误! ");break; } } }; intS() { chara[100]; for(;;) { for(inti=0;i<=99;i++)a[i]=NULL; cin>>a; if((a[0]>='0')&&(a[0]<='9')&&(a[1]==NULL))return(a[0]-48); elseif((a[0]>='0')&&(a[0]<='9')&&(a[1]>='0')&&(a[1]<='9'))return(10*(a[0]-48)+a[1]-48); elsereturn-1; } } voidQishixipai(paiA[2][4][13],paipaidui[104]) { inti,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]; } } voidXipai(paipaidui[104],int*paiduishu,paiqipaidui[104],int*qipaishu) { inti,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;(*qipaishu)>0;i++) { paidui[i]=qipaidui[a[i]]; qipaidui[a[i]].leixing=-1; (*paiduishu)++; (*qipaishu)--; } for(i=(*paiduishu);i<=103;i++)paidui[i].leixing=-1; } paiMo1pai(paiA[104],int*x,paiB[104],int*y,int*b) { paip; if((*x)==0)Xipai(A,x,B,y); elseif((*x)<0)printf("摸牌参数错误! "); else; p=A[104-(*x)]; (*x)--; (*b)++; return(p); } structwujiang { charname; inttili; inttilishangxian; intshoupaishangxian; inthuihekaishi; intpanding; intmopai; intchupai; intqipai; inthuihejieshu; intjuese; paishoupai[20]; intshoup
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言版 三国