【实例简介】编码很简单,没有复杂的函数。
函数简单,有详细的走子和吃子检测。不足之处是画面简约,人工智能尚开发中,敬请期待!
【实例截图】
【核心代码】C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Design;
//
//
//
//By Toucky! QQ:648702035.///
//包含走子、吃子检测,不包含人机对弈的人工智能,这是下一步的目标。
///C#开发的第一个程序,画面质量改善中。Visual C#2010编译通过。///
/
/
/
namespace uim
{
public partial class Form1 : Form
{
bool Flag = false, FlagCanGo = false, FlagCanEat = false, RedTurn=false,GreenTurn=false;
Point OldPosin, NewPosin;
public int m;
public int[][] ArrayQiPan = new int[10][]
{
new int[9]{1,2,3,4,5,6,7,8,9},
new int[9]{0,0,0,0,0,0,0,0,0} ,
new int[9]{0,10,0,0,0,0,0,11,0},
new int[9]{12,0,13,0,14,0,15,0,16},
new int[9]{0,0,0,0,0,0,0,0,0},
new int[9]{0,0,0,0,0,0,0,0,0},
new int[9]{17,0,18,0,19,0,20,0,21},
new int[9]{0,22,0,0,0,0,0,23,0},
new int[9]{0,0,0,0,0,0,0,0,0},
new int[9]{24,25,26,27,28,29,30,31,32}
};
struct QiPanDot{
public Point QiPanP;
public Label QiPanL;
public bool Dead;
};
QiPanDot[] QiPanDraw = new QiPanDot[33];
public Form1()
{
InitializeComponent();
}
public void DrawQiPan()
{
ArrayQiPan = new int[10][]
{
new int[9]{1,2,3,4,5,6,7,8,9},
new int[9]{0,0,0,0,0,0,0,0,0} ,
new int[9]{0,10,0,0,0,0,0,11,0},
new int[9]{12,0,13,0,14,0,15,0,16},
new int[9]{0,0,0,0,0,0,0,0,0},
new int[9]{0,0,0,0,0,0,0,0,0},
new int[9]{17,0,18,0,19,0,20,0,21},
new int[9]{0,22,0,0,0,0,0,23,0},
new int[9]{0,0,0,0,0,0,0,0,0},
new int[9]{24,25,26,27,28,29,30,31,32}
};
for (Int16 i = 0; i < 10; i )
for(Int16 j=0;j<9;j )
{
switch (ArrayQiPan[i][j])
{
case 1: QiPanDraw[0].QiPanP = new Point(picBoxBgn.Location.X - lblRedMaLeft.Width / 2, picBoxBgn.Location.Y - lblRedMaLeft.Height / 2);
QiPanDraw[0].QiPanL = lblRedJvLeft; QiPanDraw[0].QiPanL.Location = QiPanDraw[0].QiPanP; QiPanDraw[0].QiPanL.Show(); break;
case 2: QiPanDraw[1].QiPanP = new Point(picBoxBgn.Location.X lblRedMaLeft.Width / 2, picBoxBgn.Location.Y - lblRedMaLeft.Height / 2);
QiPanDraw[1].QiPanL = lblRedMaLeft; QiPanDraw[1].QiPanL.Location = QiPanDraw[1].QiPanP; QiPanDraw[1].QiPanL.Show(); break;
case 3: QiPanDraw[2].QiPanP = new Point(picBoxBgn.Location.X 3 * lblRedMaLeft.Width / 2, picBoxBgn.Location.Y - lblRedMaLeft.Height / 2);
QiPanDraw[2].QiPanL = lblRedXiangLeft; QiPanDraw[2].QiPanL.Location = QiPanDraw[2].QiPanP; QiPanDraw[2].QiPanL.Show(); break;
case 4: QiPanDraw[3].QiPanP = new Point(picBoxBgn.Location.X 5 * lblRedMaLeft.Width / 2, picBoxBgn.Location.Y - lblRedMaLeft.Height / 2);
QiPanDraw[3].QiPanL = lblRedShiLeft; QiPanDraw[3].QiPanL.Location = QiPanDraw[3].QiPanP; QiPanDraw[3].QiPanL.Show(); break;
case 5: QiPanDraw[4].QiPanP = new Point(picBoxBgn.Location.X 7 * lblRedMaLeft.Width / 2, picBoxBgn.Location.Y - lblRedMaLeft.Height / 2);
QiPanDraw[4].QiPanL = lblRedShuai; QiPanDraw[4].QiPanL.Location = QiPanDraw[4].QiPanP; QiPanDraw[4].QiPanL.Show(); break;
case 6: QiPanDraw[5].QiPanP = new Point(picBoxBgn.Location.X 9 * lblRedMaRight.Width / 2, picBoxBgn.Location.Y - lblRedMaRight.Height / 2);
QiPanDraw[5].QiPanL = lblRedShiRight; QiPanDraw[5].QiPanL.Location = QiPanDraw[5].QiPanP; QiPanDraw[5].QiPanL.Show(); break;
case 7: QiPanDraw[6].QiPanP = new Point(picBoxBgn.Location.X 11 * lblRedMaRight.Width / 2, picBoxBgn.Location.Y - lblRedMaRight.Height / 2);
QiPanDraw[6].QiPanL = lblRedXiangRight; QiPanDraw[6].QiPanL.Location = QiPanDraw[6].QiPanP; QiPanDraw[6].QiPanL.Show(); break;
case 8: QiPanDraw[7].QiPanP = new Point(picBoxBgn.Location.X 13 * lblRedMaRight.Width / 2, picBoxBgn.Location.Y - lblRedMaRight.Height / 2);
QiPanDraw[7].QiPanL = lblRedMaRight; QiPanDraw[7].QiPanL.Location = QiPanDraw[7].QiPanP; QiPanDraw[7].QiPanL.Show(); break;
case 9: QiPanDraw[8].QiPanP = new Point(picBoxBgn.Location.X 15 * lblRedMaLeft.Width / 2, picBoxBgn.Location.Y - lblRedMaLeft.Height / 2);
QiPanDraw[8].QiPanL = lblRedJvRight; QiPanDraw[8].QiPanL.Location = QiPanDraw[8].QiPanP; QiPanDraw[8].QiPanL.Show(); break;
case 10: QiPanDraw[9].QiPanP = new Point(picBoxBgn.Location.X lblRedMaLeft.Width / 2, picBoxBgn.Location.Y 3 * lblRedMaLeft.Height / 2);
QiPanDraw[9].QiPanL = lblRedPaoLeft; QiPanDraw[9].QiPanL.Location = QiPanDraw[9].QiPanP; QiPanDraw[9].QiPanL.Show(); break;
case 11: QiPanDraw[10].QiPanP = new Point(picBoxBgn.Location.X 13 * lblRedMaLeft.Width / 2, picBoxBgn.Location.Y 3 * lblRedMaLeft.Height / 2);
QiPanDraw[10].QiPanL = lblRedPaoRight; QiPanDraw[10].QiPanL.Location = QiPanDraw[10].QiPanP; QiPanDraw[10].QiPanL.Show(); break;
case 12: QiPanDraw[11].QiPanP = new Point(picBoxBgn.Location.X - lblRedMaLeft.Width / 2, picBoxBgn.Location.Y 5 * lblRedMaLeft.Height / 2);
QiPanDraw[11].QiPanL = lblRedBing1; QiPanDraw[11].QiPanL.Location = QiPanDraw[11].QiPanP; QiPanDraw[11].QiPanL.Show(); break;
case 13: QiPanDraw[12].QiPanP = new Point(picBoxBgn.Location.X 3 * lblRedMaLeft.Width / 2, picBoxBgn.Location.Y 5 * lblRedMaLeft.Height / 2);
QiPanDraw[12].QiPanL = lblRedBing2; QiPanDraw[12].QiPanL.Location = QiPanDraw[12].QiPanP; QiPanDraw[12].QiPanL.Show(); break;
case 14: QiPanDraw[13].QiPanP = new Point(picBoxBgn.Location.X 7 * lblRedMaLeft.Width / 2, picBoxBgn.Location.Y 5 * lblRedMaLeft.Height / 2);
QiPanDraw[13].QiPanL = lblRedBing3; QiPanDraw[13].QiPanL.Location = QiPanDraw[13].QiPanP; QiPanDraw[13].QiPanL.Show(); break;
case 15: QiPanDraw[14].QiPanP = new Point(picBoxBgn.Location.X 11 * lblRedMaLeft.Width / 2, picBoxBgn.Location.Y 5 * lblRedMaLeft.Height / 2);
QiPanDraw[14].QiPanL = lblRedBing4; QiPanDraw[14].QiPanL.Location = QiPanDraw[14].QiPanP; QiPanDraw[14].QiPanL.Show(); break;
case 16: QiPanDraw[15].QiPanP = new Point(picBoxBgn.Location.X 15 * lblRedMaLeft.Width / 2, picBoxBgn.Location.Y 5 * lblRedMaLeft.Height / 2);
QiPanDraw[15].QiPanL = lblRedBing5; QiPanDraw[15].QiPanL.Location = QiPanDraw[15].QiPanP; QiPanDraw[15].QiPanL.Show(); break;
case 17: QiPanDraw[16].QiPanP = new Point(picBoxBgn.Location.X - lblRedMaLeft.Width / 2, picBoxBgn.Location.Y 11 * lblRedMaLeft.Height / 2);
QiPanDraw[16].QiPanL = lblGreenBing1; QiPanDraw[16].QiPanL.Location = QiPanDraw[16].QiPanP; QiPanDraw[16].QiPanL.Show(); break;
case 18: QiPanDraw[17].QiPanP = new Point(picBoxBgn.Location.X 3 * lblRedMaLeft.Width / 2, picBoxBgn.Location.Y 11 * lblRedMaLeft.Height / 2);
QiPanDraw[17].QiPanL = lblGreenBing2; QiPanDraw[17].QiPanL.Location = QiPanDraw[17].QiPanP; QiPanDraw[17].QiPanL.Show(); break;
case 19: QiPanDraw[18].QiPanP = new Point(picBoxBgn.Location.X 7 * lblRedMaLeft.Width / 2, picBoxBgn.Location.Y 11 * lblRedMaLeft.Height / 2);
QiPanDraw[18].QiPanL = lblGreenBing3; QiPanDraw[18].QiPanL.Location = QiPanDraw[18].QiPanP; QiPanDraw[18].QiPanL.Show(); break;
case 20: QiPanDraw[19].QiPanP = new Point(picBoxBgn.Location.X 11 * lblRedMaLeft.Width / 2, picBoxBgn.Location.Y 11 * lblRedMaLeft.Height / 2);
QiPanDraw[19].QiPanL = lblGreenBing4; QiPanDraw[19].QiPanL.Location = QiPanDraw[19].QiPanP; QiPanDraw[19].QiPanL.Show(); break;
case 21: QiPanDraw[20].QiPanP = new Point(picBoxBgn.Location.X 15 * lblRedMaLeft.Width / 2, picBoxBgn.Location.Y 11 * lblRedMaLeft.Height / 2);
QiPanDraw[20].QiPanL = lblGreenBing5; QiPanDraw[20].QiPanL.Location = QiPanDraw[20].QiPanP; QiPanDraw[20].QiPanL.Show(); break;
case 22: QiPanDraw[21].QiPanP = new Point(picBoxBgn.Location.X lblRedMaLeft.Width / 2, picBoxBgn.Location.Y 13 * lblRedMaLeft.Height / 2);
QiPanDraw[21].QiPanL = lblGreenPaoLeft; QiPanDraw[21].QiPanL.Location = QiPanDraw[21].QiPanP; QiPanDraw[21].QiPanL.Show(); break;
case 23: QiPanDraw[22].QiPanP = new Point(picBoxBgn.Location.X 13 * lblRedMaLeft.Width / 2, picBoxBgn.Location.Y 13 * lblRedMaLeft.Height / 2);
QiPanDraw[22].QiPanL = lblGreenPaoRight; QiPanDraw[22].QiPanL.Location = QiPanDraw[22].QiPanP; QiPanDraw[22].QiPanL.Show(); break;
case 24: QiPanDraw[23].QiPanP = new Point(picBoxBgn.Location.X - lblRedMaLeft.Width / 2, picBoxBgn.Location.Y 17 * lblRedMaLeft.Height / 2);
QiPanDraw[23].QiPanL = lblGreenJvLeft; QiPanDraw[23].QiPanL.Location = QiPanDraw[23].QiPanP; QiPanDraw[23].QiPanL.Show(); break;
case 25: QiPanDraw[24].QiPanP = new Point(picBoxBgn.Location.X lblRedMaLeft.Width / 2, picBoxBgn.Location.Y 17 * lblRedMaLeft.Height / 2);
QiPanDraw[24].QiPanL = lblGreenMaLeft; QiPanDraw[24].QiPanL.Location = QiPanDraw[24].QiPanP; QiPanDraw[24].QiPanL.Show(); break;
case 26: QiPanDraw[25].QiPanP = new Point(picBoxBgn.Location.X 3 * lblRedMaLeft.Width / 2, picBoxBgn.Location.Y 17 * lblRedMaLeft.Height / 2);
QiPanDraw[25].QiPanL = lblGreenXiangLeft; QiPanDraw[25].QiPanL.Location = QiPanDraw[25].QiPanP; QiPanDraw[25].QiPanL.Show(); break;
case 27: QiPanDraw[26].QiPanP = new Point(picBoxBgn.Location.X 5 * lblRedMaLeft.Width / 2, picBoxBgn.Location.Y 17 * lblRedMaLeft.Height / 2);
QiPanDraw[26].QiPanL = lblGreenShiLeft; QiPanDraw[26].QiPanL.Location = QiPanDraw[26].QiPanP; QiPanDraw[26].QiPanL.Show(); break;
case 28: QiPanDraw[27].QiPanP = new Point(picBoxBgn.Location.X 7 * lblRedMaLeft.Width / 2, picBoxBgn.Location.Y 17 * lblRedMaLeft.Height / 2);
QiPanDraw[27].QiPanL = lblGreenJiang; QiPanDraw[27].QiPanL.Location = QiPanDraw[27].QiPanP; QiPanDraw[27].QiPanL.Show(); break;
case 29: QiPanDraw[28].QiPanP = new Point(picBoxBgn.Location.X 9 * lblRedMaRight.Width / 2, picBoxBgn.Location.Y 17 * lblRedMaRight.Height / 2);
QiPanDraw[28].QiPanL = lblGreenShiRight; QiPanDraw[28].QiPanL.Location = QiPanDraw[28].QiPanP; QiPanDraw[28].QiPanL.Show(); break;
case 30: QiPanDraw[29].QiPanP = new Point(picBoxBgn.Location.X 11 * lblRedMaRight.Width / 2, picBoxBgn.Location.Y 17 * lblRedMaRight.Height / 2);
QiPanDraw[29].QiPanL = lblGreenXiangRight; QiPanDraw[29].QiPanL.Location = QiPanDraw[29].QiPanP; QiPanDraw[29].QiPanL.Show(); break;
case 31: QiPanDraw[30].QiPanP = new Point(picBoxBgn.Location.X 13 * lblRedMaRight.Width / 2, picBoxBgn.Location.Y 17 * lblRedMaRight.Height / 2);
QiPanDraw[30].QiPanL = lblGreenMaRight; QiPanDraw[30].QiPanL.Location = QiPanDraw[30].QiPanP; QiPanDraw[30].QiPanL.Show(); break;
case 32: QiPanDraw[31].QiPanP = new Point(picBoxBgn.Location.X 15 * lblRedMaLeft.Width / 2, picBoxBgn.Location.Y 17 * lblRedMaLeft.Height / 2);
QiPanDraw[31].QiPanL = lblGreenJvRight; QiPanDraw[31].QiPanL.Location = QiPanDraw[31].QiPanP; QiPanDraw[31].QiPanL.Show(); break;
default: QiPanDraw[32].QiPanP = new Point(0, 0); QiPanDraw[32].QiPanL = new Label(); QiPanDraw[32].QiPanL.Location = QiPanDraw[32].QiPanP; QiPanDraw[32].QiPanL.Show(); break;
}
}
}
private void btn_Start_Click(object sender, EventArgs e)
{
DrawQiPan();
RedTurn = true;
picRedTurn.Visible = true;
}
private void picBoxBgn_Click(object sender, EventArgs e)
{
if (Flag)
{
if ((PointToClient(MousePosition).X - picBoxBgn.Location.X) % lblRedJvLeft.Width < lblRedJvLeft.Width / 3)
{
NewPosin.X = (PointToClient(MousePosition).X - picBoxBgn.Location.X) / lblRedJvLeft.Width * lblRedJvLeft.Width - lblRedJvLeft.Width / 2 picBoxBgn.Location.X; lblShow.Text = "X" (PointToClient(MousePosition).X / lblRedJvLeft.Width).ToString() "\b";
}
else if ((PointToClient(MousePosition).X - picBoxBgn.Location.X) % lblRedJvLeft.Width > 2 * lblRedJvLeft.Width / 3)
{
NewPosin.X = (PointToClient(MousePosition).X - picBoxBgn.Location.X) / lblRedJvLeft.Width * lblRedJvLeft.Width lblRedJvLeft.Width / 2 picBoxBgn.Location.X; lblShow.Text = "X" (PointToClient(MousePosition).X / lblRedJvLeft.Width).ToString() "\b";
}
else { MessageBox.Show("横坐标位置不够准确。是放左边一点,还是放右边一点呢,亲^_^"); goto go; }
if ((PointToClient(MousePosition).Y - picBoxBgn.Location.Y) % lblRedJvLeft.Height < lblRedJvLeft.Height / 3)
{
NewPosin.Y = (PointToClient(MousePosition).Y - picBoxBgn.Location.Y) / lblRedJvLeft.Height * lblRedJvLeft.Height - lblRedJvLeft.Height / 2 picBoxBgn.Location.Y; lblShow.Text = "Y" (PointToClient(MousePosition).Y / lblRedJvLeft.Height).ToString() "\n";
}
else if ((PointToClient(MousePosition).Y - picBoxBgn.Location.Y) % lblRedJvLeft.Height > 2 * lblRedJvLeft.Height / 3)
{
NewPosin.Y = (PointToClient(MousePosition).Y - picBoxBgn.Location.Y) / lblRedJvLeft.Height * lblRedJvLeft.Height lblRedJvLeft.Height / 2 picBoxBgn.Location.Y; lblShow.Text = "Y" (PointToClient(MousePosition).Y / lblRedJvLeft.Height).ToString() "\n";
}
else { MessageBox.Show("纵坐标位置不够准确。是放上边一点,还是放下边一点呢,亲^_^"); goto go; }
CanGo(m, OldPosin, NewPosin);
if (FlagCanGo&&CanGo_Shuai(m,QiPanDraw[4].QiPanP,QiPanDraw[27].QiPanP,NewPosin))
{
Flag = !Flag;
int x_new = (NewPosin.Y lblRedJvLeft.Height / 2 - picBoxBgn.Location.Y) / lblRedJvLeft.Height, y_new = (NewPosin.X lblRedJvLeft.Width / 2 - picBoxBgn.Location.X) / lblRedJvLeft.Width,
x_old = (OldPosin.Y lblRedJvLeft.Height / 2 - picBoxBgn.Location.Y) / lblRedJvLeft.Height, y_old = (OldPosin.X lblRedJvLeft.Width / 2 - picBoxBgn.Location.X) / lblRedJvLeft.Width;
ArrayQiPan[x_new][y_new] = m 1;
ArrayQiPan[x_old][y_old] = 0;
this.QiPanDraw[m].QiPanP = NewPosin;
this.QiPanDraw[m].QiPanL.Location = NewPosin;
if (m <16)
for (int i = 16; i < 32; i )
{
CanEat(i, QiPanDraw[i].QiPanP, QiPanDraw[4].QiPanP);
if (!QiPanDraw[i].Dead && FlagCanEat)
{
MessageBox.Show("不能这样走到空位!红方被将军。");
ArrayQiPan[x_new][y_new] = 0;
ArrayQiPan[x_old][y_old] = m 1;
QiPanDraw[m].QiPanP = OldPosin;
QiPanDraw[m].QiPanL = QiPanDraw[32].QiPanL;
QiPanDraw[m].QiPanL.Location = OldPosin;
goto go;
}
}
else
for (int i = 15; i>=0; i--)
{
CanEat(i, QiPanDraw[i].QiPanP, QiPanDraw[27].QiPanP);
if (!QiPanDraw[i].Dead && FlagCanEat)
{
MessageBox.Show("不能这样走到空位!绿方被将军。");
ArrayQiPan[x_new][y_new] = 0;
ArrayQiPan[x_old][y_old] = m 1;
QiPanDraw[m].QiPanP = OldPosin;
QiPanDraw[m].QiPanL = QiPanDraw[32].QiPanL;
QiPanDraw[m].QiPanL.Location = OldPosin;
goto go;
}
}
if (m < 16)
{
RedTurn = false; GreenTurn = true;
for (int i = 15; i >= 0; i--)
{
CanEat(i, QiPanDraw[i].QiPanP, QiPanDraw[27].QiPanP);
if (!QiPanDraw[i].Dead&&FlagCanEat) MessageBox.Show("将军!");
}
}
else
{
RedTurn = true; GreenTurn = false;
for (int i = 16; i < 32; i )
{
CanEat(i, QiPanDraw[i].QiPanP, QiPanDraw[4].QiPanP);
if (!QiPanDraw[i].Dead&&FlagCanEat) MessageBox.Show("将军!");
}
}
if (RedTurn) picRedTurn.Visible = true;
else picRedTurn.Visible = false;
if (GreenTurn) picGreenTurn.Visible = true;
else picGreenTurn.Visible = false;
}
else
{
QiPanDraw[m].QiPanP= OldPosin;
QiPanDraw[m].QiPanL=QiPanDraw[32].QiPanL;
QiPanDraw[m].QiPanL.Location = QiPanDraw[32].QiPanL.Location;
MessageBox.Show("不能这样走到空位!");
}
go:;
}
}
private void lblRedShuai_Click(object sender, EventArgs e)
{
if (Flag )
{
QiPanDraw[32].QiPanP = lblRedShuai.Location;
QiPanDraw[32].QiPanL = lblRedShuai;
CanEat(m, OldPosin, QiPanDraw[32].QiPanP);
if (FlagCanEat)
{
int x_new = (NewPosin.Y lblRedJvLeft.Height / 2 - picBoxBgn.Location.Y) / lblRedJvLeft.Height, y_new = (NewPosin.X lblRedJvLeft.Width / 2 - picBoxBgn.Location.X) / lblRedJvLeft.Width,
x_old = (OldPosin.Y lblRedJvLeft.Height / 2 - picBoxBgn.Location.Y) / lblRedJvLeft.Height, y_old = (OldPosin.X lblRedJvLeft.Width / 2 - picBoxBgn.Location.X) / lblRedJvLeft.Width;
ArrayQiPan[x_new][y_new] = m 1;
ArrayQiPan[x_old][y_old] = 0;
QiPanDraw[4].Dead = true;
lblRedShuai.Hide();
Flag = !Flag;
QiPanDraw[m].QiPanP = QiPanDraw[32].QiPanP;
QiPanDraw[m].QiPanL.Location = QiPanDraw[32].QiPanL.Location;
RedTurn = false; GreenTurn = false;
picRedTurn.Visible = false;
picGreenTurn.Visible = false;
QiPanDraw[32].QiPanL.Refresh();
MessageBox.Show("恭喜绿方赢了,哈哈!");
}
else
{
Flag = false;
QiPanDraw[m].QiPanP = OldPosin;
MessageBox.Show("不能这样吃子!");
}
}
else
{
if (RedTurn)
{
QiPanDraw[32].QiPanL = lblRedShuai;
Flag = QiPanDraw[32].QiPanL.Capture;
OldPosin = lblRedShuai.Location;
m = 4;
}
}
}
private void lblRedJvLeft_Click(object sender, EventArgs e)
{
if (Flag )
{
QiPanDraw[32].QiPanP = lblRedJvLeft.Location;
QiPanDraw[32].QiPanL = lblRedJvLeft;
CanEat(m, OldPosin, QiPanDraw[32].QiPanP);
if (FlagCanEat && CanEat_Shuai(m, QiPanDraw[4].QiPanP, QiPanDraw[27].QiPanP, QiPanDraw[32].QiPanP))
{
int x_new = (NewPosin.Y lblRedJvLeft.Height / 2 - picBoxBgn.Location.Y) / lblRedJvLeft.Height, y_new = (NewPosin.X lblRedJvLeft.Width / 2 - picBoxBgn.Location.X) / lblRedJvLeft.Width,
x_old = (OldPosin.Y lblRedJvLeft.Height / 2 - picBoxBgn.Location.Y) / lblRedJvLeft.Height, y_old = (OldPosin.X lblRedJvLeft.Width / 2 - picBoxBgn.Location.X) / lblRedJvLeft.Width;
ArrayQiPan[x_new][y_new] = m 1;
ArrayQiPan[x_old][y_old] = 0;
QiPanDraw[0].Dead = true;
for (int i = 15; i >= 0; i--)
{
CanEat(i, QiPanDraw[i].QiPanP, QiPanDraw[27].QiPanP);
if (!QiPanDraw[i].Dead && FlagCanEat)
{
MessageBox.Show("不能这样吃子!");
ArrayQiPan[x_new][y_new] = 0;
ArrayQiPan[x_old][y_old] = m 1;
QiPanDraw[0].Dead = false;
goto go1;
}
}
if (m ==27 && QiPanDraw[32].QiPanP.X == QiPanDraw[4].QiPanP.X)
{
int Total = 0;
for (int i = 1; i < (QiPanDraw[32].QiPanP.Y - QiPanDraw[4].QiPanP.Y) / lblRedJvLeft.Height; i )
Total = ArrayQiPan[(QiPanDraw[4].QiPanP.Y lblRedJvLeft.Height/2 - picBoxBgn.Location.Y) / lblRedJvLeft.Height i][(QiPanDraw[4].QiPanP.X lblRedJvLeft.Width/2 - picBoxBgn.Location.X) / lblRedJvLeft.Width];
if (Total==0)
{
MessageBox.Show("不能这样吃子!");
ArrayQiPan[x_new][y_new] = 0;
ArrayQiPan[x_old][y_old] = m 1;
QiPanDraw[0].Dead = false;
goto go1;
}
}
lblRedJvLeft.Hide();
Flag = !Flag;
QiPanDraw[m].QiPanP = QiPanDraw[32].QiPanP;
QiPanDraw[m].QiPanL.Location = QiPanDraw[32].QiPanL.Location;
RedTurn = true; GreenTurn = false;
picRedTurn.Visible = true;
picGreenTurn.Visible = false;
for (int i = 16; i < 32; i )
{
CanEat(i, QiPanDraw[i].QiPanP, QiPanDraw[4].QiPanP);
if (!QiPanDraw[i].Dead && FlagCanEat) MessageBox.Show("将军!");
}
go1: ;
}
else
{
Flag = false;
QiPanDraw[m].QiPanP = OldPosin;
MessageBox.Show("不能这样吃子!");
}
}
else
{
if (RedTurn)
{
QiPanDraw[32].QiPanL = lblRedJvLeft;
Flag = QiPanDraw[32].QiPanL.Capture;
OldPosin = lblRedJvLeft.Location;
m = 0;
}
}
}
private void lblRedMaLeft_Click(object sender, EventArgs e)
{
if (Flag)
{
QiPanDraw[32].QiPanP = lblRedMaLeft.Location;
QiPanDraw[32].QiPanL= lblRedMaLeft;
CanEat(m, OldPosin, QiPanDraw[32].QiPanP);
if (FlagCanEat && CanEat_Shuai(m, QiPanDraw[4].QiPanP, QiPanDraw[27].QiPanP, QiPanDraw[32].QiPanP))
{
int x_new = (NewPosin.Y lblRedJvLeft.Height / 2 - picBoxBgn.Location.Y) / lblRedJvLeft.Height, y_new = (NewPosin.X lblRedJvLeft.Width / 2 - picBoxBgn.Location.X) / lblRedJvLeft.Width,
x_old = (OldPosin.Y lblRedJvLeft.Height / 2 - picBoxBgn.Location.Y) / lblRedJvLeft.Height, y_old = (OldPosin.X lblRedJvLeft.Width / 2 - picBoxBgn.Location.X) / lblRedJvLeft.Width;
ArrayQiPan[x_old][y_old] = 0;
QiPanDraw[1].Dead = true;
for (int i = 15; i >= 0; i--)
{
CanEat(i, QiPanDraw[i].QiPanP, QiPanDraw[27].QiPanP);
if (!QiPanDraw[i].Dead && FlagCanEat)
{
MessageBox.Show("不能这样吃子!");
ArrayQiPan[x_new][y_new] = 0;
ArrayQiPan[x_old][y_old] = m 1;
QiPanDraw[1].Dead = false;
goto go1;
}
}
if (m == 27 && QiPanDraw[32].QiPanP.X == QiPanDraw[4].QiPanP.X)
{
int Total = 0;
for (int i = 1; i < (QiPanDraw[32].QiPanP.Y - QiPanDraw[4].QiPanP.Y) / lblRedJvLeft.Height; i )
Total = ArrayQiPan[(QiPanDraw[4].QiPanP.Y lblRedJvLeft.Height / 2 - picBoxBgn.Location.Y) / lblRedJvLeft.Height i][(QiPanDraw[4].QiPanP.X lblRedJvLeft.Width / 2 - picBoxBgn.Location.X) / lblRedJvLeft.Width];
if (Total == 0)
{
MessageBox.Show("不能这样吃子!");
ArrayQiPan[x_new][y_new] = 0;
ArrayQiPan[x_old][y_old] = m 1;
QiPanDraw[0].Dead = false;
goto go1;
}
}
lblRedMaLeft.Hide();
Flag = !Flag;
QiPanDraw[m].QiPanP = QiPanDraw[32].QiPanP;
QiPanDraw[m].QiPanL.Location = QiPanDraw[32].QiPanL.Location;
RedTurn = true; GreenTurn = false;
picRedTurn.Visible = true;
picGreenTurn.Visible = false;
for (int i = 16; i < 32; i )
{
CanEat(i, QiPanDraw[i].QiPanP, QiPanDraw[4].QiPanP);
if (!QiPanDraw[i].Dead && FlagCanEat) MessageBox.Show("将军!");
}
go1: ;
}
else
{
Flag = false;
QiPanDraw[m].QiPanP = OldPosin;
MessageBox.Show("不能这样吃子!");
}
}
else
{
if (RedTurn)
{
QiPanDraw[32].QiPanL = lblRedMaLeft;
Flag = QiPanDraw[32].QiPanL.Capture;
OldPosin = lblRedMaLeft.Location;
m = 1;
}
}
}
private void lblRedXiangLeft_Click(object sender, EventArgs e)
{
if (Flag)
{
QiPanDraw[32].QiPanP= lblRedXiangLeft.Location;
QiPanDraw[32].QiPanL = lblRedXiangLeft;
CanEat(m, OldPosin, QiPanDraw[32].QiPanP);
if (FlagCanEat && CanEat_Shuai(m, QiPanDraw[4].QiPanP, QiPanDraw[27].QiPanP, QiPanDraw[32].QiPanP))
{
int x_new = (NewPosin.Y lblRedJvLeft.Height / 2 - picBoxBgn.Location.Y) / lblRedJvLeft.Height, y_new = (NewPosin.X lblRedJvLeft.Width / 2 - picBoxBgn.Location.X) / lblRedJvLeft.Width,
x_old = (OldPosin.Y lblRedJvLeft.Height / 2 - picBoxBgn.Location.Y) / lblRedJvLeft.Height, y_old = (OldPosin.X lblRedJvLeft.Width / 2 - picBoxBgn.Location.X) / lblRedJvLeft.Width;
ArrayQiPan[x_new][y_new] = m 1;
ArrayQiPan[x_old][y_old] = 0;
QiPanDraw[2].Dead = true;
for (int i = 15; i >= 0; i--)
{
CanEat(i, QiPanDraw[i].QiPanP, QiPanDraw[27].QiPanP);
if (!QiPanDraw[i].Dead && FlagCanEat)
{
MessageBox.Show("不能这样吃子!");
ArrayQiPan[x_new][y_new] = 0;
ArrayQiPan[x_old][y_old] = m 1;
QiPanDraw[0].Dead = false;
goto go1;
}
}
lblRedXiangLeft.Hide();
Flag = !Flag;
QiPanDraw[m].QiPanP = QiPanDraw[32].QiPanP;
QiPanDraw[m].QiPanL.Location = QiPanDraw[32].QiPanL.Location;
RedTurn = true; GreenTurn = false;
picRedTurn.Visible = true;
picGreenTurn.Visible = false;
for (int i = 16; i < 32; i )
{
CanEat(i, QiPanDraw[i].QiPanP, QiPanDraw[4].QiPanP);
if (!QiPanDraw[i].Dead && FlagCanEat) MessageBox.Show("将军!");
}
go1: ;
}
else
{
Flag = false;
QiPanDraw[m].QiPanP = OldPosin;
MessageBox.Show("不能这样吃子!");
}
}
else
{
if (RedTurn)
{
QiPanDraw[32].QiPanL = lblRedXiangLeft;
Flag = QiPanDraw[32].QiPanL.Capture;
OldPosin = lblRedXiangLeft.Location;
m = 2;
}
}
}
private void lblRedShiLeft_Click(object sender, EventArgs e)
{
if (Flag)
{
QiPanDraw[32].QiPanP= lblRedShiLeft.Location;
QiPanDraw[32].QiPanL= lblRedShiLeft;
CanEat(m, OldPosin, QiPanDraw[32].QiPanP);
if (FlagCanEat && CanEat_Shuai(m, QiPanDraw[4].QiPanP, QiPanDraw[27].QiPanP, QiPanDraw[32].QiPanP))
{
int x_new = (NewPosin.Y lblRedJvLeft.Height / 2 - picBoxBgn.Location.Y) / lblRedJvLeft.Height, y_new = (NewPosin.X lblRedJvLeft.Width / 2 - picBoxBgn.Location.X) / lblRedJvLeft.Width,
x_old = (OldPosin.Y lblRedJvLeft.Height / 2 - picBoxBgn.Location.Y) / lblRedJvLeft.Height, y_old = (OldPosin.X lblRedJvLeft.Width / 2 - picBoxBgn.Location.X) / lblRedJvLeft.Width;
ArrayQiPan[x_new][y_new] = m 1;
ArrayQiPan[x_old][y_old] = 0;
QiPanDraw[3].Dead = true;
for (int i = 15; i >=0; i--)
{
CanEat(i, QiPanDraw[i].QiPanP, QiPanDraw[27].Q