Help Me with the Game(模拟)

本文提供了一个用于棋盘扫描的C语言实现方案,通过两个不同的函数分别定位黑白棋子的位置,并采用特定格式输出棋子坐标。

http://poj.org/problem?id=2996

 1 #include<stdio.h>
 2 #include<string.h>
 3 char map[55][55];
 4 void find1(char ch)
 5 {
 6     int flag = 0;
 7     for (int i = 15; i >= 1; i -= 2)
 8     {
 9         if (flag)
10             break;
11         for (int j = 2; j <= 30; j += 4)
12         {
13             if (map[i][j]==ch)
14             {
15                 if (ch=='K')
16                 {
17                     printf("%c",ch);
18                     flag = 1;
19                     printf("%c%d",'a'+j/4,8-i/2);
20                     break;
21                 }
22                 else if (ch=='P')
23                     printf(",");
24                 else
25                     printf(",%c",ch);
26                 printf("%c%d",'a'+j/4,8-i/2);
27 
28             }
29         }
30     }
31 }
32 void find2(char ch)
33 {
34     int flag = 0;
35     for (int i = 1; i <= 15; i += 2)
36     {
37         if (flag)
38             break;
39         for (int j = 2; j <= 30; j += 4)
40         {
41             if (map[i][j]==ch)
42             {
43                 if (ch=='k')
44                 {
45 
46                     printf("%c",ch-32);
47                     printf("%c%d",'a'+j/4,8-i/2);
48                     flag = 1;
49                     break;
50                 }
51                 else if(ch=='p')
52                     printf(",");
53                 else
54                     printf(",%c",ch-32);
55                 printf("%c%d",'a'+j/4,8-i/2);
56 
57             }
58         }
59     }
60 }
61 int main()
62 {
63     for (int i = 0; i < 17; i ++)
64     {
65         scanf("%s",map[i]);
66     }
67     printf("White: ");
68     find1('K');
69     find1('Q');
70     find1('R');
71     find1('B');
72     find1('N');
73     find1('P');
74     puts("");
75     printf("Black: ");
76     find2('k');
77     find2('q');
78     find2('r');
79     find2('b');
80     find2('n');
81     find2('p');
82     puts("");
83     return 0;
84 }
View Code

 

转载于:https://www.cnblogs.com/lahblogs/p/3243988.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值