棋谱:
棋谱 红方 黑方
1. 炮二平五 炮2进3
2. 炮八退一 象7进5
3. 炮五平八 象5进3
4. 前炮进七 前象退5
5. 后炮进一 象5进3
6. 前炮退一 后象进5
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Collections;
namespace 我的网络象棋CSharp版
{
public partial class Fu_pan : Form
{
public const short REDPLAYER = 20;
public const short BLACKPLAYER = 0;
//map是布局,r是棋子半径,CurSelect表示当前选中的棋子,LocalPlayer记录自己是红是黑
int[,] Map = new int[10, 11];
int CurSelect;
int r;
public int LocalPlayer;
public PictureBox[] picChess = new PictureBox[37]; //象棋棋子图片控件
private StreamReader Myread;
private string s; //每步走棋信息
private int Step_Num = 0; //步数
private ArrayList step_info = new ArrayList();
string pathfile; //复盘打开的文件名
public Fu_pan()
{
InitializeComponent();
}
public Graphics GetGraphicsObject(ref PictureBox pic)
{
System.Drawing.Graphics g;
Bitmap bmp = new Bitmap(pic.Width, pic.Height);
pic.Image = bmp;
g = Graphics.FromImage(bmp);
return g;
}
//绘制棋盘。如果愿意,可以用漂亮的棋盘图片代替
private void DrawBoard()
{
int i;
//获取对将用于绘图的图形对象的引用创建图形图像。
//Dim g As Graphics = picBoard.CreateGraphics
//获取对将用于绘图的图形对象的,使用这个GetGraphicsObject函数
Graphics g = GetGraphicsObject(ref picBoard);
Pen myPen = new Pen(Color.Red);
myPen.Width = 1;
//r = picBoard.ClientRectangle.Width / 18
r = 25;
picBoard.Height = r * 20;
for (i = 0; i <= 8; i++)
{
//竖线
if (i == 0 | i == 8)
{
myPen.Width = 2;
}
else
{
myPen.Width = 1;
}
g.DrawLine(myPen, r + i * 2 * r, r, r + i * 2 * r, r * 2 * 10 - r + 1);
}
for (i = 0; i <= 9; i++)
{
//横线
if (i == 0 | i == 9)
{
myPen.Width = 2;
}
else
{
myPen.Width = 1;
}
g.DrawLine(myPen, r, r + i * 2 * r, r * 2 * 9 - r, r + i * 2 * r);
}
System.Drawing.Rectangle rectangle = new System.Drawing.Rectangle(r + 1, r + r * 8 + 1, r * 9 * 2 - 2 * r - 2, 2 * r - 2);
System.Drawing.SolidBrush brush1 = new System.Drawing.SolidBrush(Color.Brown);
g.DrawEllipse(System.Drawing.Pens.Black, rectangle);
g.DrawRectangle(System.Drawing.Pens.Blue, rectangle);
g.FillRectangle(brush1, rectangle);
Font font1 = new System.Drawing.Font("Arial", 20);
System.Drawing.SolidBrush brush2 = new System.Drawing.SolidBrush(Color.Yellow);
g.DrawString(" 汉界 楚河", font1, brush2, (r + 1), (r + r * 8 + 1));
//g.DrawLine(myPen, r + 1, r + r * 8 + 1, r * 9 * 2 - r - 1, r + r * 8 + r * 2 - 1)
//画九宫斜线
g.DrawLine(myPen, r + r * 6 + 1, r + 1, r + r * 6 + r * 4 - 1, r + r * 4 - 1);
g.DrawLine(myPen, r + r * 6 + 1, r + r * 4 - 1, r + r * 6 + r * 4 - 1, r + 1);
g.DrawLine(myPen, r + r * 6 + 1, r * 14 + r + 1, r + r * 6 + r * 4 - 1, r * 14 + r + r * 4 - 1);
g.DrawLine(myPen, r + r * 6 + 1, r * 14 + r + r * 4 - 1, r + r * 6 + r * 4 - 1, r * 14 + r + 1);
}
private void LoadChess()
{
string str;
string path;
path = System.Windows.Forms.Application.StartupPath;
// bin路径
int i;
for (i = 1; i <= 36; i++)
{
//黑方对应的是 1至16,红方对应的是21至36
picChess[i] = new PictureBox();
this.Controls.Add(picChess[i]);
picChess[i].SetBounds(0, 0, (r - 1) * 2, (r - 1) * 2);
picChess[i].BackColor = System.Drawing.SystemColors.GrayText;
picChess[i].Name = "MyPic" + i.ToString();
picChess[i].SizeMode = PictureBoxSizeMode.StretchImage;
picChess[i].Width = 48;
//35
picChess[i].Height = 48;
//35
str = path + "//image//q" + i.ToString() + ".jpg";
if (i < 13 & i > 0)
picChess[i].Image = Image.FromFile(str);
if (i < 33 & i > 20)
picChess[i].Image = Image.FromFile(str);
picChess[i].Text = i.ToString();
picChess[i].Visible = false;
picChess[i].BringToFront();
//AddHandler CType(picChess[i], PictureBox).Click, AddressOf pic_click
//AddHandler picChess[i].Click, AddressOf pic_click
}
}
private void Draw_qizi()
{
//显示棋盘上的棋子
string str;
string path;
path = System.Windows.Forms.Application.StartupPath;
// bin路径
int i;
//默认红方棋子在下方,黑方棋子在上方
picChess[1].Tag = "将"; picChess[21].Tag = "帅";
MoveChess(1, 5, 1); MoveChess(21, 5, 10);