C# 使用画框和矩形制作棋盘,如何初始化?

C# 使用画框和矩形制作棋盘,如何初始化?,c#,picturebox,multidimensional-array,rectangles,C#,Picturebox,Multidimensional Array,Rectangles,我正在做一个C#国际象棋游戏,这样我可以更多地练习用这种语言进行编码。我使用的是windows窗体,我使用的是45x45.png图标。我制作了我的picturebox,因此板上的每个位置都是50x50像素,使picturebox/板成为400x400正方形。我想弄清楚的是,如何初始化电路板,这样我就可以使用矩形类型的2D数组移动块。这样,电路板上的每个位置都是一个定义为50x50正方形的矩形。我的代码到目前为止,如果我遗漏了一些重要内容,请告诉我: class Board//this class

我正在做一个C#国际象棋游戏,这样我可以更多地练习用这种语言进行编码。我使用的是windows窗体,我使用的是45x45.png图标。我制作了我的picturebox,因此板上的每个位置都是50x50像素,使picturebox/板成为400x400正方形。我想弄清楚的是,如何初始化电路板,这样我就可以使用矩形类型的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);


            }
        }

    }

} 
class Board//此类代表板
{
私有矩形[,]棋盘=新矩形[8,8];//一个二维矩形数组
public void initBoard()//此方法将初始化picturebox/board
{
对于(int x=0;x<8;x++)
{
对于(int y=0;y<8;y++)
{
棋盘[x,y]=新矩形(x*50,y*50,50,50);
}
}
}
} 

我建议,虽然您的方法可能会让您达到目标,但大多数国际象棋游戏不会对图像使用单独的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的立场,希望我说得有道理:)

好的……你有什么问题吗?你在寻求肯定吗?如果是这样的话,这是一个很好的代码将其移动到一个答案以获得更多的空间…谢谢,请注意,您只需将索引指定为parties.bmp,即可维护电路板状态。对于电路板[]中的每个元件。如果你想让我看的话,我在某个地方有这样的形象。而且,看起来Q和K在矩阵中是正确的。我检查了我的棋盘:P也注意到你可以忽略前导0,使用1-5,只要确保你的rect填充了偏移量的前导零。