首先要有一个棋谱,棋谱采用围棋棋谱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的大小
- usingSystem;
- usingSystem.Collections.Generic;
- usingSystem.Text;
- usingSystem.Windows.Forms;
- usingSystem.Drawing;
- namespaceFivePiece{
- ///<summary>
- ///棋盘
- ///</summary>
- classChessBoard{
- publicintLines=19;//线条书
- publicintLineSpace=30;//线间距
- publicintMargin=30/2;//边距(线间距/2)
- publicPictureBoxPicCtrl;//棋盘容器控件
- ///<summary>
- ///绘制棋盘
- ///</summary>
- publicvoidDrawBoard(){
- Bitmapbmp=newBitmap(PicCtrl.Width,PicCtrl.Height);
- Graphicsg=Graphics.FromImage(bmp);
- //绘制背景颜色
- SolidBrushbrush=newSolidBrush(Color.Gold);
- g.FillRectangle(brush,Margin,Margin,
- (Lines-1)*LineSpace,(Lines-1)*LineSpace);
- PenlinePen=newPen(Color.Black,1);//画线笔
- //Lines条横线
- for(inti=0;i<Lines;i++){
- Pointstart=newPoint(Margin,i*LineSpace+Margin);
- Pointend=newPoint(start.X+(Lines-1)*LineSpace,start.Y);
- g.DrawLine(linePen,start,end);
- }
- //Lines条竖线
- for(inti=0;i<Lines;i++){
- Pointstart=newPoint(i*LineSpace+Margin,Margin);
- Pointend=newPoint(start.X,start.Y+(Lines-1)*LineSpace);
- g.DrawLine(linePen,start,end);
- }
- PicCtrl.BackgroundImage=bmp;
- }
- }
- }
- usingSystem;
- usingSystem.Collections.Generic;
- usingSystem.ComponentModel;
- usingSystem.Data;
- usingSystem.Drawing;
- usingSystem.Text;
- usingSystem.Windows.Forms;
- namespaceFivePiece{
- publicpartialclassMainForm:Form{
- Gamegame=newGame();
- publicMainForm(){
- InitializeComponent();
- game.ChessBoard.PicCtrl=picBoard;
- game.ChessBoard.DrawBoard();
- }
- privatevoidpicBoard_MouseClick(objectsender,MouseEventArgse){
- if(e.Button==MouseButtons.Left){
- game.DownPiece(e.Location);
- if(game.GameOver){
- stringstrColor=game.NextColor==Color.White?"黑":"白";
- MessageBox.Show("恭喜你"+strColor+"棋获得胜利!");
- tsslblPlayer.Text="游戏结束!"+strColor+"棋获得胜利!";
- }else{
- stringstrColor=game.NextColor==Color.White?"白":"黑";
- tsslblPlayer.Text="玩家:"+strColor+"棋";
- }
- }elseif(e.Button==MouseButtons.Right){
- game.RegretPiece();
- stringstrColor=game.NextColor==Color.White?"白":"黑";
- tsslblPlayer.Text="玩家:"+strColor+"棋";
- }
- }
- privatevoidMainForm_Load(objectsender,EventArgse){
- }
- privatevoidtsmiStart_Click(objectsender,EventArgse){
- game=newGame();
- game.ChessBoard.PicCtrl=picBoard;
- game.ChessBoard.DrawBoard();
- tsslblPlayer.Text="玩家:白棋";
- }
- }
- }