使用图片框和矩形制作棋盘,如何初始化?

时间:2013-06-28 19:14:46

标签: c# picturebox multidimensional-array rectangles

我正在制作C#国际象棋游戏,所以我可以用这种语言练习编码。我正在使用Windows窗体,我使用的是45x45 .png图标。我制作了我的照片箱,因此电路板上的每个位置都是50x50像素,使得图片盒/电路板的尺寸为400x400。我想弄清楚的是,如何初始化板,以便我可以使用Rectangle类型的2D数组移动块。这样,电路板上的每个位置都是一个定义为50x50平方的矩形。到目前为止我的代码,如果我遗漏了一些重要内容,请告诉我:

class Board//this class represents the board 
{
    private Rectangle[,] chessBoard = new Rectangle[8, 8]; //a 2d array of rectangles


    public void initBoard()//this method will initialize the picturebox/board
    {
        for (int x = 0; x < 8; x++)
        {
            for (int y = 0; y < 8; y++)
            {
                chessBoard[x, y] = new Rectangle(x * 50, y * 50, 50, 50);


            }
        }

    }

} 

1 个答案:

答案 0 :(得分:3)

我建议虽然你的方法可能会让你到那里,但是大多数国际象棋游戏不会对图像使用单独的png,而是你会有一个带有2x6瓦片矩阵的单个图像,并使用偏移到图像中来选择正确的瓦。您可以将电路板存储为64个元素的一维数组。它的默认起始安排可能是......

board = [00,01,02,03,04,02,01,00,
         05,05,05,05,05,05,05,05,
         -1,-1,-1,-1,-1,-1,-1,-1,
         -1,-1,-1,-1,-1,-1,-1,-1,
         -1,-1,-1,-1,-1,-1,-1,-1,
         -1,-1,-1,-1,-1,-1,-1,-1,
         15,15,15,15,15,15,15,15,
         10,11,12,13,14,12,11,10]

其中-1是空白方块,00-15是偏移索引到片段图像。如:

00 10 = wr br
01 11 = wk bk
02 12 = wb bb
03 13 = wq bq
04 14 = wK bK
05 15 = wp bp

当玩家进行移动时,您只需调用一种方法来确定移动是否合法,如果目的地占用了?捕获!否则设置板[目的地] =板[原点],设置板[原点] = -1。

可能需要仔细检查我的K和Q的位置,希望我有意义:)