public static void DrawCB(Gomoku gomoku, Graphics gra, PictureBox pic, bool onlyboard = false) { //每排数量 int horC = MainSize.CBLine; //间隔 int gap = MainSize.CBGap; //宽 int CBWid = (horC - 1) * gap + 1; //高 int CBHei = (horC - 1) * gap + 1; //设置字体 Font drawFont = new Font("Arial", 12); SolidBrush drawBrush = new SolidBrush(Color.Black); Image img = new Bitmap(CBWid + offsetX + 10, CBHei + offsetY + 10); gra = Graphics.FromImage(img); //画棋盘 for (int i = 0; i < horC; i++) { gra.DrawLine(Gomoku.pen, 0 + offsetX, i * gap + offsetY, CBWid + offsetX, i * gap + offsetY); gra.DrawLine(Gomoku.pen, i * gap + offsetX, 0 + offsetY, i * gap + offsetX, CBHei + offsetY); gra.DrawString(Convert.ToString(i + 1), drawFont, drawBrush, 0, i * gap + 20); gra.DrawString(Convert.ToString((char)(65 + i)), drawFont, drawBrush, i * gap + 20, 0); } gra.DrawLine(Gomoku.pen, 0 + offsetX, horC * gap + offsetY, CBWid + offsetX, horC * gap + offsetY); gra.DrawLine(Gomoku.pen, horC * gap + offsetX, 0 + offsetY, horC * gap + offsetX, CBHei + offsetY); if (!onlyboard) { for (int i = 0; i < 15; i++) { for (int j = 0; j < 15; j++) { switch (gomoku.Chess(i, j)) { case 1: gra.FillEllipse(Gomoku.blackBrush, i * 50 + 15, j * 50 + 15, 30, 30); break; case 2: gra.FillEllipse(Gomoku.whiteBrush, i * 50 + 15, j * 50 + 15, 30, 30); break; } } } } pic.Image = img; }
private void timer1_Tick(object sender, EventArgs e) { Gomoku gomoku = this; if (game.Review) { Ticks++; bool moveFlag = false; while (game.Moves[game.Steps, 1] < Ticks * 1000) { if (game.Moves[game.Steps, 0] == 0) { game.Review = false; game.AllowToMove = game.OldAllowToMove; check_win(); return; } Image img = ChessBoard.Image; Graphics gra = Graphics.FromImage(img); switch (game.Moves[game.Steps, 0]) { case 1: gra.FillEllipse(blackBrush, game.Moves[game.Steps, 2] * 50 + 15, game.Moves[game.Steps, 3] * 50 + 15, 30, 30); break; case 2: gra.FillEllipse(whiteBrush, game.Moves[game.Steps, 2] * 50 + 15, game.Moves[game.Steps, 3] * 50 + 15, 30, 30); break; } ChessBoard.Image = img; game.BlackTime = game.Moves[game.Steps, 4]; game.WhiteTime = game.Moves[game.Steps, 5]; game.BlackTimeThis = 0; game.WhiteTimeThis = 0; white_time_all.Text = "局时: " + Convert.ToString(game.WhiteTime) + "秒"; white_time_this.Text = "步时: " + Convert.ToString(game.WhiteTimeThis) + "秒"; black_time_all.Text = "局时: " + Convert.ToString(game.BlackTime) + "秒"; black_time_this.Text = "步时: " + Convert.ToString(game.BlackTimeThis) + "秒"; moveFlag = true; game.Steps++; } if (!moveFlag) { switch (game.Moves[game.Steps, 0]) { case 1: game.BlackTime++; game.BlackTimeThis++; black_time_all.Text = "局时: " + Convert.ToString(game.BlackTime) + "秒"; black_time_this.Text = "步时: " + Convert.ToString(game.BlackTimeThis) + "秒"; break; case 2: game.WhiteTime++; game.WhiteTimeThis++; gomoku.white_time_all.Text = "局时: " + Convert.ToString(gomoku.game.WhiteTime) + "秒"; gomoku.white_time_this.Text = "步时: " + Convert.ToString(gomoku.game.WhiteTimeThis) + "秒"; break; } } } else if (gomoku.game.Start) { switch (gomoku.game.WhoToMove) { case 1: gomoku.game.BlackTime++; gomoku.game.BlackTimeThis++; gomoku.black_time_all.Text = "局时: " + Convert.ToString(gomoku.game.BlackTime) + "秒"; gomoku.black_time_this.Text = "步时: " + Convert.ToString(gomoku.game.BlackTimeThis) + "秒"; if (gomoku.game.BlackTimeThis >= 15) { } break; case 2: gomoku.game.WhiteTime++; gomoku.game.WhiteTimeThis++; gomoku.white_time_all.Text = "局时: " + Convert.ToString(gomoku.game.WhiteTime) + "秒"; gomoku.white_time_this.Text = "步时: " + Convert.ToString(gomoku.game.WhiteTimeThis) + "秒"; if (gomoku.game.WhiteTimeThis >= 15) { } break; } } }