Windows表格app国际象棋游戏

时间:2010-12-24 20:05:20

标签: c# winforms

我正在尝试为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棋子?请帮助我

2 个答案:

答案 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

希望这有帮助!