我正在制作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);
}
}
}
}
答案 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的位置,希望我有意义:)