五子棋游戏-1(绘制棋盘)

首先要有一个棋谱,棋谱采用围棋棋谱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的大小
 

Code:
  1. using System;      
  2. using System.Collections.Generic;      
  3. using System.Text;      
  4. using System.Windows.Forms;      
  5. using System.Drawing;      
  6.      
  7. namespace FivePiece {      
  8.     /// <summary>      
  9.     /// 棋盘      
  10.     /// </summary>      
  11.     class ChessBoard {      
  12.      
  13.         public int Lines = 19;      //线条书      
  14.         public int LineSpace = 30;  //线间距      
  15.         public int Margin = 30 / 2; //边距(线间距/2)      
  16.         public PictureBox PicCtrl;  //棋盘容器控件      
  17.      
  18.         /// <summary>      
  19.         /// 绘制棋盘      
  20.         /// </summary>      
  21.         public void DrawBoard() {      
  22.             Bitmap bmp = new Bitmap(PicCtrl.Width, PicCtrl.Height);      
  23.             Graphics g = Graphics.FromImage(bmp);      
  24.      
  25.             //绘制背景颜色      
  26.             SolidBrush brush = new SolidBrush(Color.Gold);      
  27.             g.FillRectangle(brush, Margin, Margin,      
  28.                 (Lines - 1) * LineSpace, (Lines - 1) * LineSpace);      
  29.      
  30.             Pen linePen = new Pen(Color.Black, 1);//画线笔      
  31.             //Lines条横线      
  32.             for(int i = 0; i < Lines; i++) {      
  33.                 Point start = new Point(Margin, i * LineSpace + Margin);      
  34.                 Point end = new Point(start.X+(Lines-1)*LineSpace, start.Y);      
  35.                 g.DrawLine(linePen, start, end);      
  36.             }      
  37.             //Lines条竖线      
  38.             for(int i = 0; i < Lines; i++) {      
  39.                 Point start = new Point(i * LineSpace + Margin, Margin);      
  40.                 Point end = new Point(start.X, start.Y + (Lines - 1) * LineSpace);      
  41.                 g.DrawLine(linePen, start, end);      
  42.             }      
  43.      
  44.             PicCtrl.BackgroundImage = bmp;      
  45.         }      
  46.               
  47.     }      
  48. }     
Code:
  1. using System;   
  2. using System.Collections.Generic;   
  3. using System.ComponentModel;   
  4. using System.Data;   
  5. using System.Drawing;   
  6. using System.Text;   
  7. using System.Windows.Forms;   
  8.   
  9. namespace FivePiece {   
  10.     public partial class MainForm : Form {   
  11.   
  12.         Game game = new Game();   
  13.   
  14.         public MainForm() {   
  15.             InitializeComponent();   
  16.   
  17.             game.ChessBoard.PicCtrl = picBoard;   
  18.             game.ChessBoard.DrawBoard();   
  19.         }   
  20.   
  21.         private void picBoard_MouseClick(object sender, MouseEventArgs e) {   
  22.             if(e.Button == MouseButtons.Left) {   
  23.                 game.DownPiece(e.Location);   
  24.                 if(game.GameOver) {   
  25.                     string strColor = game.NextColor == Color.White ? "黑" : "白";   
  26.                     MessageBox.Show("恭喜你" + strColor + "棋获得胜利!");   
  27.                     tsslblPlayer.Text = "游戏结束!" + strColor + "棋获得胜利!";   
  28.                 } else {   
  29.                     string strColor = game.NextColor == Color.White ? "白" : "黑";   
  30.                     tsslblPlayer.Text = "玩家:"+strColor+"棋";   
  31.                 }   
  32.             } else if(e.Button == MouseButtons.Right) {   
  33.                 game.RegretPiece();   
  34.                 string strColor = game.NextColor == Color.White ? "白" : "黑";   
  35.                 tsslblPlayer.Text = "玩家:" + strColor + "棋";   
  36.             }   
  37.         }   
  38.   
  39.         private void MainForm_Load(object sender, EventArgs e) {   
  40.   
  41.         }   
  42.   
  43.         private void tsmiStart_Click(object sender, EventArgs e) {   
  44.             game = new Game();   
  45.             game.ChessBoard.PicCtrl = picBoard;   
  46.             game.ChessBoard.DrawBoard();   
  47.             tsslblPlayer.Text = "玩家:白棋";   
  48.         }   
  49.     }   
  50. }  

 视频内容请见http://www.itcast.net/course/detail/1989

<<如果您想和我交流,请点击和我成为好友>>

你可能感兴趣的:(游戏,UI,GDI+)