将所有受马影响的领域作为点阵

时间:2014-01-03 01:14:36

标签: java arrays chess

我无法想象这件事。我正在制作国际象棋游戏,我需要得到数字影响......

我开始用一匹马开始,即使把它拉到一张纸上也很困难。我希望它作为一个数组:

class Horse extends Figure {
    public int[][] getRadius() {
        //Allocate a max possible count of fields
        int [][] return = new int[8][2];
        //Now what?
        ???
    }
}

这是我在一张纸上做的,在涂油漆中重新粉刷,希望它会帮助别人,因为它让我无助。 enter image description here
马正坐在广场上,我想我所画的都是他可能的动作。听起来像是{1,-1,2,-2}与2名成员的梳理,没有重复,不是吗?但是如何以编程方式执行此操作? (数组中的列表必须相对到马的实际位置!) 谢谢你的任何提示。如果还有一篇关于其他数据的文章,那将节省我很多时间!

如果图片给你一些愚蠢的想法,请自己保留,谢谢。

1 个答案:

答案 0 :(得分:1)

您希望从getRadius()得到的是(x,y)的每个排列,其中x,y∈{-2,-1,1,2}和| x | ≠| y |。

int[][] ret = new int[8][2];
int[] set = {-2, -1, 1, 2};
int i = 0;
for(int x : set)
    for(int y : set)
        if(Math.abs(x) != Math.abs(y)){
            ret[i][0] = x;
            ret[i][1] = y;
            i++;
        }