博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
百年工程今日开工
阅读量:7027 次
发布时间:2019-06-28

本文共 3651 字,大约阅读时间需要 12 分钟。

                              

防止本宝宝突然……
决定实时更新到cnblog上

或者说,请个大佬斧正

 

#include
#include
#include
#include
#include
using namespace std;struct pig{ int pupil;//表示猪型,-1反,0主,1忠。 char paid[110];//表示手牌。 int num_paid;//表示现持有的牌数。 void dust_paid()//整理手牌 { int cnt=0; for(int i=1;i<=num_paid;i++) if(paid[i]!=0) paid[++cnt]=paid[i]; return ; } int alive;//剩余血量。 int jump;//-1 跳反,0未跳,1跳忠。 bool like_enemy;//是否为类反猪。 bool equip;//是否装备诸葛连弩。 // int num_kill;//杀 int num_dodge;//闪 // int num_fight;//决斗 // int num_peach;//桃 int num_none;//无懈可击 数量 int alive_before;//前一头活着的猪 int alive_next;//下一头活着的猪 void debug() { printf("class: %d Hp: %d num_paid: %d \n",pupil,alive,num_paid); printf("手牌:\n "); for(int i=1;i<=num_paid;i++) printf("%c ",paid[i]); printf("\n跳反(-1反,0无,1忠): %d \n类反猪: %d \n武器: %d \n",jump,like_enemy,equip); printf("无懈可击数: %d \n闪数: %d \n",num_none,num_dodge); printf("上家: %d 下家: %d \n",alive_before,alive_next); return ; }}pig[110];int n,m;char opt;int mp;//主猪编号.int num_f;//反猪个数。 char pid[10010];int num_pid;//目前抽到哪张牌? void start()//开始 { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { pig[i].alive=4; scanf("%c%c",&opt,&opt);// printf("%c ",opt); if(opt=='M') pig[i].pupil=0,mp=i; else if(opt=='Z') pig[i].pupil=1; else if(opt=='F') pig[i].pupil=-1,num_f++;// printf("%d ",pig[i].pupil); scanf("%c",&opt); for(int j=1;j<=4;j++) { scanf("%c%c",&opt,&opt);// printf("%c ",opt); pig[i].paid[++pig[i].num_paid]=opt; if(opt=='J') pig[i].num_none++; else if(opt=='D') pig[i].num_dodge++; } pig[i].alive_before=i-1; pig[i].alive_next=i+1;// puts(""); } pig[1].alive_before=n; pig[n].alive_next=1; for(int i=1;i<=m;i++) scanf("%c%c",&opt,&opt),pid[i]=opt;// for(int i=1;i<=m;i++) printf("%c ",opt);// puts(""); return ;}bool end()//判断是否结束。 { if(num_f==0){puts("MP");return true;} else if(pig[mp].alive==0) {puts("FP");return true;} return false;}void print_ans()//输出结果。 { for(int i=1;i<=n;i++,puts("")) { if(pig[i].alive==0) {printf("DEAD");continue;} pig[i].dust_paid(); for(int j=1;j<=pig[i].num_paid;j++) printf("%c ",pig[i].paid[j]); } return ;}void get_card(int i)//第i只猪摸牌。 { pig[i].paid[++pig[i].num_paid]=num_pid==m?pid[m]:pid[++num_pid]; pig[i].paid[++pig[i].num_paid]=num_pid==m?pid[m]:pid[++num_pid]; return ;}void action(int x)//第i只猪开始行动 { bool attack=false; if(!pig[x].alive) return ; get_card(x); for(int i=1;i=pig[i].num_paid;i++) { int ch=pig[x].paid[i]; if(ch==0) continue; //如果是空牌就过。 else if(pig[x].alive<4&&pig[x].paid[i]=='P') pig[x].paid[i]=0,pig[x].alive++; //如果血量没满且有桃。 else if(pig[x].paid[i]=='Z') pig[x].equip=true,pig[x].paid[i]=0,i=1; //如果是诸葛连弩,装上,从头扫。 else if(pig[x].paid[i]=='D') continue; //如果是闪就过。 else if(pig[x].paid[i]=='K') //如果是杀,且有第一击杀目标。 { //判断能不能杀。 if(!pig[x].equip) { } } }}int main(){ start();// for(int i=1;i<=n;i++,puts(""),puts(""))// printf("%d:\n",i),pig[i].debug();// printf("牌堆:\n ");// for(int i=1;i<=m;i++) printf("%c ",pid[i]); return 0;}/*3 10MP D D F FZP N N N DFP J J J JF F D D J J F F K D*/

 

转载地址:http://mxlxl.baihongyu.com/

你可能感兴趣的文章
TCP/IP-协议族----17、应用层简单
查看>>
ZOJ1093 动态规划
查看>>
.Echo 命令中经常提到回显,是什么意思?
查看>>
MySQL在大数据Limit使用
查看>>
iOS中如何创建一个滑出式导航面板(1)
查看>>
Solr5.3.1整合IKAnalyzer
查看>>
Swift - 06 - 数值类型转换和类型别名
查看>>
华为3G模块EM770W在LINUX下的驱动安装
查看>>
omnet++4.0安装使用
查看>>
Jquery JSOPN在WebApi中的问题
查看>>
[React Testing] Conditional className with Shallow Rendering
查看>>
a or an
查看>>
Coursera课程《大家的python》(Python for everyone)课件
查看>>
PHP程序猿必须学习的第二课——站点安全问题预防
查看>>
2016第5周三
查看>>
Spring学习10-SpringMV核心组件2及SpringMVC项目示例
查看>>
hdu 5620 KK's Steel(推理)
查看>>
(笔记)电路设计(十五)之基本电路单元的认识
查看>>
nginx 日志获取不到远程访问ip问题解决
查看>>
有若干个字符串,比較找出当中最大者
查看>>