我正在尝试为Windows应用程序创建一个国际象棋游戏。我创建了一个国际象棋桌,我把棋子的图片放在国际象棋棋盘上。但我没有移动棋子。 我写了以下代码:
//the creation of the chess board
this.ClientSize = new System.Drawing.Size(600, 600);
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8; j++)
{
satranctahtasi[i, j] = new Kareler(i,j);
this.Controls.Add(satranctahtasi[i, j]);
}
}
for (int j = 0; j < 8; j++)
{
int i = 1;
satranctahtasi[i, j].Image = TasResimleri.er_beyaz;
}
for (int j = 0; j < 8; j++)
{
int i = 6;
satranctahtasi[i, j].Image = TasResimleri.er_siyah;
}
satranctahtasi[0, 1].Image = TasResimleri.at_beyaz;
satranctahtasi[0, 6].Image = TasResimleri.at_beyaz;
satranctahtasi[7, 1].Image = TasResimleri.at_siyah;
satranctahtasi[7, 6].Image = TasResimleri.at_siyah;
satranctahtasi[0, 0].Image = TasResimleri.kale_beyaz;
satranctahtasi[0, 7].Image = TasResimleri.kale_beyaz;
satranctahtasi[7, 0].Image = TasResimleri.kale_siyah;
satranctahtasi[7, 7].Image = TasResimleri.kale_siyah;
satranctahtasi[0, 2].Image = TasResimleri.fil_beyaz;
satranctahtasi[0, 5].Image = TasResimleri.fil_beyaz;
satranctahtasi[7, 2].Image = TasResimleri.fil_beyaz;
satranctahtasi[7, 5].Image = TasResimleri.fil_beyaz;
satranctahtasi[0, 3].Image = TasResimleri.sah_beyaz;
satranctahtasi[7, 3].Image = TasResimleri.sah_siyah;
satranctahtasi[0, 4].Image = TasResimleri.vezir_beyaz;
satranctahtasi[7, 4].Image = TasResimleri.vezir_siyah;
如何移动pic棋子?请帮助我
答案 0 :(得分:2)
首先尝试创建对象,每个对象都将自己吸引到棋盘上,
创建类Board,Figure等...之后用例如this这样的真实对象很容易制作动作,你也可以使用Drag And Drop
答案 1 :(得分:1)
如果您希望能够在2D阵列中移动,您必须理解这一点:
/* increase point by one (moving) */
++X; //right
--X; //left
--Y; //up
++Y; //down
y ^
|
| ++/down
| --/left ++/right
| --/up
---|----------------->
|0 x
这里一个协调点保持不变,而另一个协调点增加/减少,在这种情况下增加/减少。
最初,当您绘制2D数组时,从0(y),0(x)开始,然后增加循环中的值。在这种情况下,你有一个7x7棋盘(实际上是8x8 - 你从0x0开始)。
通过更改阵列中的协调点为作品指定位置。
satranctahtasi[y, ++x].Image = TasResimleri.[whatever_piece]; //right
satranctahtasi[y, --x].Image = TasResimleri.[whatever_piece]; //left
satranctahtasi[--y, x].Image = TasResimleri.[whatever_piece]; //up
satranctahtasi[++y, x].Image = TasResimleri.[whatever_piece]; //down
例如,如果您希望您的pawn从位置0,3移动到位置1,3(向下),则增加变量i
的值并保留变量j
的值同样的。
satranctahtasi[++i, j].Image = TasResimleri.er_beyaz; //down
希望这有帮助!