I Love Military Chess

题目描述

陆军棋,又称陆战棋,简称军棋,是中国近代的一种两人棋类,设计根据军队中的军阶。每一方有25枚棋子,先夺得对方军旗者为胜。
棋子
每一方的棋子为25枚,包括:

军阶高低棋子名称各方枚数特殊能力
1 司令 1
2 军长 1
3 师长 2
4 旅长 2
5 团长 2
6 营长 2
7 连长 3
8 排长 3
9 工兵 3 铁路上格数不限并可转弯,攻击胜过地雷
M 地雷 3 不能移动,胜过其他一切攻击棋子,工兵/炸弹除外
B 炸弹 2 遇到敌方棋子皆同归于尽,军旗也不例外
F 军旗 1 不能移动,被攻击则拥有者输掉游戏

胜负一览
司令 > 军长 > 师长 > 旅长 > 团长 > 营长 > 连长 > 排长 > 工兵 
炸弹与任何棋子相遇时,双方都消失
工兵 > 地雷
地雷 > 除炸弹和工兵以外的任何子粒
题目要求
请你帮忙判断两个棋子相碰时,谁出局。

输入

多组测试数据,每组数据占一行
每行有两个数字或字母,之间用空格隔开,表示前者经过移动,与后者相碰。

1 表示司令
2 表示军长
3 表示师长
4 表示旅长
5 表示团长
6 表示营长
7 表示连长
8 表示排长
9 表示工兵
M 表示地雷
B 表示炸弹
F 表示军旗

输出

对于每组数据输出一行,为两人的官阶比较结果
1 表示前者官阶比后者大
-1 表示前者官阶比后者小
0 表示两人同归于尽
Error 表示出错(军旗和地雷不能主动移动)
Bingo 表示前者获得胜利(扛取对方军旗)

样例输入

1 2
B M
9 1
B F
1 F
M 1
F 1

样例输出

1
0
-1
Bingo
Bingo
Error
Error
 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     char a,b;
 6     while(scanf("%c %c",&a,&b)!=EOF)
 7     {
 8         getchar();
 9         int c=a-'0';
10         int d=b-'0';
11         if(c<10&&d<10)
12         {
13             if(c<d) puts("1");
14             else if(c==d) puts("0");
15             else puts("-1");
16         }
17         else if(a=='M'||a=='F') puts("Error");
18         else if(b=='M')
19         {
20             if(a=='9') puts("1");
21             else if(a=='B') puts("0");
22             else puts("-1");
23         }
24         else if(b=='F') puts("Bingo");
25         else if(a=='B'||b=='B') puts("0");
26 
27     }
28     return 0;
29 }
View Code

 

posted @ 2013-05-19 00:06  1002liu  阅读(254)  评论(0编辑  收藏  举报