UVa220 黑白棋

这是一篇关于解决UVa220黑白棋编程题目的博客,作者指出虽然题目本身理解不复杂,但对于输入要求和输出格式需要注意。由于黑白棋游戏规则涉及8个不同的方向判断,导致代码量较大,对于已解决过中国象棋类似问题的作者来说,这个挑战相对容易一些。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目不难,玩过黑白棋的都懂,关键是看清题目输入要求,还有坑爹的输出格式。
之前做过中国象棋的题目,已经有了基础了,所以做起来不难。然后象棋就已经搞了四个方向了,结果黑白棋直接来了8个方向,每个方向都要判断,最后出现了这个超长的代码。。。。。

#include<cstring>
#include<cstdio>
#include<iostream>
using namespace std;

char nxt,p[10][10]; //nxt表示的是走棋方,输入M走棋之后要换掉

void check()
{
    int i,j,m,n,flag = 1;
    char temp;
    if(nxt == 'W')
    {
        temp = 'B';
    }
    else
    {
        temp = 'W';
    }
    for(m = 1;m <= 8;m++)
    {
        for(n = 1;n <= 8;n++)
        {
            if(p[m][n] == '-')
            {
                //上
                i = m-1;j = n;
                if(p[i][j] == temp)
                {
                    while(p[i][j] == temp)
                    {
                        i--;
                    }

                    if(p[i][j] == nxt)
                    {
                        if(flag == 1)
                        {
                            printf("(%d,%d)",m,n);
                            flag = 0;
                        }
                        else
                        {
                            printf(" (%d,%d)",m,n);
                        }
                        continue;
                    }   
                } 

                //下 
                i = m+1;j = n;
                if(p[i][j] == temp)
                {
                    while(p[i][j] == temp)
                    {
                        i++;
                    }

                    if(p[i][j] == nxt)
                    {
                        if(flag == 1)
                        {
                            printf("(%d,%d)",m,n);
                            flag = 0;
                        }
                        else
                        {
                            printf(" (%d,%d)",m,n);
                        }
                        continue;
                    }   
                } 

                //左
                i = m;j = n-1;
                if(p[i][j] == temp)
                {
                    while(p[i][j] == temp)
                    {
                        j--;
                    }

                    if(p[i][j] == nxt)
                    {
                        if(flag == 1)
          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值