首先要有一个棋谱,棋谱采用围棋棋谱19*19的棋盘,棋盘绘制在PictureBox控件上。
public int Lines = 19; //线条书
public int LineSpace = 30; //线间距
public int Margin = 30 / 2; //边距(线间距/2)
public PictureBox PicCtrl; //棋盘容器控件
然后使用GDI+绘制棋盘
Bitmap bmp = new Bitmap(PicCtrl.Width, PicCtrl.Height);
Graphics g = Graphics.FromImage(bmp);
……
Pen linePen = new Pen(Color.Black, 1);//画线笔
//Lines条横线
for(int i = 0; i < Lines; i++) {
Point start = new Point(Margin, i * LineSpace + Margin);
Point end = new Point(start.X+(Lines-1)*LineSpace, start.Y);
g.DrawLine(linePen, start, end);
}
//Lines条竖线
……
最后,设计UI界面,界面中央添加PictureBox控件,并计算好Form的大小
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Windows.Forms;
- using System.Drawing;
- namespace FivePiece {
- /// <summary>
- /// 棋盘
- /// </summary>
- class ChessBoard {
- public int Lines = 19; //线条书
- public int LineSpace = 30; //线间距
- public int Margin = 30 / 2; //边距(线间距/2)
- public PictureBox PicCtrl; //棋盘容器控件
- /// <summary>
- /// 绘制棋盘
- /// </summary>
- public void DrawBoard() {
- Bitmap bmp = new Bitmap(PicCtrl.Width, PicCtrl.Height);
- Graphics g = Graphics.FromImage(bmp);
- //绘制背景颜色
- SolidBrush brush = new SolidBrush(Color.Gold);
- g.FillRectangle(brush, Margin, Margin,
- (Lines - 1) * LineSpace, (Lines - 1) * LineSpace);
- Pen linePen = new Pen(Color.Black, 1);//画线笔
- //Lines条横线
- for(int i = 0; i < Lines; i++) {
- Point start = new Point(Margin, i * LineSpace + Margin);
- Point end = new Point(start.X+(Lines-1)*LineSpace, start.Y);
- g.DrawLine(linePen, start, end);
- }
- //Lines条竖线
- for(int i = 0; i < Lines; i++) {
- Point start = new Point(i * LineSpace + Margin, Margin);
- Point end = new Point(start.X, start.Y + (Lines - 1) * LineSpace);
- g.DrawLine(linePen, start, end);
- }
- PicCtrl.BackgroundImage = bmp;
- }
- }
- }
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Text;
- using System.Windows.Forms;
- namespace FivePiece {
- public partial class MainForm : Form {
- Game game = new Game();
- public MainForm() {
- InitializeComponent();
- game.ChessBoard.PicCtrl = picBoard;
- game.ChessBoard.DrawBoard();
- }
- private void picBoard_MouseClick(object sender, MouseEventArgs e) {
- if(e.Button == MouseButtons.Left) {
- game.DownPiece(e.Location);
- if(game.GameOver) {
- string strColor = game.NextColor == Color.White ? "黑" : "白";
- MessageBox.Show("恭喜你" + strColor + "棋获得胜利!");
- tsslblPlayer.Text = "游戏结束!" + strColor + "棋获得胜利!";
- } else {
- string strColor = game.NextColor == Color.White ? "白" : "黑";
- tsslblPlayer.Text = "玩家:"+strColor+"棋";
- }
- } else if(e.Button == MouseButtons.Right) {
- game.RegretPiece();
- string strColor = game.NextColor == Color.White ? "白" : "黑";
- tsslblPlayer.Text = "玩家:" + strColor + "棋";
- }
- }
- private void MainForm_Load(object sender, EventArgs e) {
- }
- private void tsmiStart_Click(object sender, EventArgs e) {
- game = new Game();
- game.ChessBoard.PicCtrl = picBoard;
- game.ChessBoard.DrawBoard();
- tsslblPlayer.Text = "玩家:白棋";
- }
- }
- }