现在的位置: 首页 > 综合 > 正文

象棋复盘

2013年10月09日 ⁄ 综合 ⁄ 共 4635字 ⁄ 字号 评论关闭

 

棋谱:

棋谱   红方     黑方

  1. 炮二平五  23

  2. 炮八退一  75

  3. 炮五平八  53

  4. 前炮进七  前象退5

  5. 后炮进一  53

  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++)

            {

                //黑方对应的是 116,红方对应的是2136

                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);

抱歉!评论已关闭.