| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
这个是C#的五子棋,怎么在里面再加一个东西,这个东西的作用是:随机时间在随机的位置,让这个位置上的棋子闪动三下,如果这个位置没有棋子,则自动产生一个棋子闪动三下然后消失。 
 
 
 
using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
 
namespace WindowsFormsApplicationgobang 
{ 
    public partial class Form1 : Form 
    { 
        private static bool[,] isDraw = new bool[9, 9];//二维数组用于检验当前坐标是否放置了棋子 
        private MouseEventArgs e; 
 
        private static int ncount=1; 
        //private static bool isBlackStoneWin=false; 
        //private static int N = 1; 
        private static bool isBlackStoneWin = false; 
        private static bool isWhiteStoneWin = false; 
        private static bool isBlueStoneWin = false; 
        //黑棋 
        private const int n = 32; 
        private bool isPlayBlackStone; 
        private static int nblackstone = 0; 
        private static int bcount = 0; 
        private BlackStone[] black=new BlackStone[n]; 
        private static bool[,] isBlackStone = new bool[9, 9]; 
         
        //白棋 
        private bool isPlayWhiteStone; 
        private static int nwhitestone = 0; 
        private static int wcount = 0; 
        private WhiteStone[] white = new WhiteStone[n]; 
        private static bool[,] isWhiteStone = new bool[9, 9]; 
 
 
  
 
        public Form1() 
        { 
            InitializeComponent(); 
            InitBlackStone(); 
            InitWhiteStone(); 
            InitRedStone(); 
            labelBlack.BackColor = Color.Red; 
            labelBlack.Text = "黑方下"; 
        } 
 
        public void InitBlackStone() 
        { 
            isPlayBlackStone = false; 
            for (int i = 0; i < n; i++) 
            { 
                black[i] = new BlackStone(); 
                black[i].X = -10; 
                black[i].Y = -10; 
            } 
            for (int i = 0; i < 9; i++) 
            { 
                for (int j = 0; j < 9; j++) 
                { 
                    isDraw[i, j] = false; 
                    isBlackStone[i, j] = false; 
                } 
            } 
        } 
        public void InitWhiteStone() 
        { 
            isPlayWhiteStone = false; 
            for (int i = 0; i < n; i++) 
            { 
                white[i] = new WhiteStone(); 
                white[i].X = -10; 
                white[i].Y = -10; 
            } 
            for (int i = 0; i < 9; i++) 
            { 
                for (int j = 0; j < 9; j++) 
                { 
                    isWhiteStone[i, j] = false; 
                } 
            } 
        } 
 
        public void PlayBlackStone(MouseEventArgs e)        
        { 
            int x = panelGobang.ClientRectangle.X; 
            int y = panelGobang.ClientRectangle.Y; 
            int[] gobangX = new int[9]; 
            int[] gobangY = new int[9]; 
            
            for (int i = 0; i < 9; i++) 
            { 
                gobangX[i] = x + (i + 1) * 40; 
            } 
            for (int i = 0; i < 9; i++) 
            { 
                gobangY[i] = y + (i + 1) * 40; 
            } 
            for (int i = 0; i < 9; i++) 
            { 
                if ((e.X >= gobangX[i] - 10) && (e.X <= gobangX[i] + 10)) 
                { 
                    for (int j = 0; j < 9; j++) 
                    { 
                        if ((e.Y >= gobangY[j] - 10) && (e.Y <= gobangY[j] + 10)) 
                        { 
                            black[bcount].X = gobangX[i]; 
                            black[bcount].Y = gobangY[j]; 
                            isPlayBlackStone = true; 
                            break; 
                        } 
                    } 
                    break; 
                } 
            } 
        } 
        public void PlayWhiteStone(MouseEventArgs e) 
        { 
            int x = panelGobang.ClientRectangle.X; 
            int y = panelGobang.ClientRectangle.Y; 
            int[] gobangX = new int[9]; 
            int[] gobangY = new int[9]; 
 
            for (int i = 0; i < 9; i++) 
            { 
                gobangX[i] = x + (i + 1) * 40; 
            } 
            for (int i = 0; i < 9; i++) 
            { 
                gobangY[i] = y + (i + 1) * 40; 
            } 
            for (int i = 0; i < 9; i++) 
            { 
                if ((e.X >= gobangX[i] - 10) && (e.X <= gobangX[i] + 10)) 
                { 
                    for (int j = 0; j < 9; j++) 
                    { 
                        if ((e.Y >= gobangY[j] - 10) && (e.Y <= gobangY[j] + 10)) 
                        { 
                            white[wcount].X = gobangX[i]; 
                            white[wcount].Y = gobangY[j]; 
                            isPlayWhiteStone = true; 
                            break; 
                        } 
                    } 
                    break; 
                } 
            } 
        } 
        public bool IsBlackStoneWinSR() 
        { 
            int N = 1; 
            int x1 = black[bcount].X - 40; 
            int x2 = black[bcount].X + 40; 
            int y1 = black[bcount].Y + 40; 
            int y2 = black[bcount].Y - 40; 
            while (x1 >= 40 && y1 <= 360) 
            { 
                if (N == 5) 
                { 
                    break; 
                } 
                if (isBlackStone[x1 / 40 - 1, y1 / 40 - 1] != false) 
                { 
                    N++; 
                    x1 = x1 - 40; 
                    y1 = y1 + 40; 
                } 
                else 
                { 
                    break; 
                } 
            } 
            if (N < 5) 
            { 
                while (x2 <= 360 && y2 >= 40) 
                { 
                    if (N == 5) 
                    { 
                        break; 
                    } 
                    if (isBlackStone[x2 / 40 - 1, y2 / 40 - 1]) 
                    { 
                        N++; 
                        x2 = x2 + 40; 
                        y2 = y2 - 40; 
                    } 
                    else 
                    { 
                        break; 
                    } 
                } 
            } 
            if (N == 5) 
            { 
                return true; 
            } 
            else 
            { 
                return false; 
            } 
        } 
        public bool IsBlackStoneWinSL() 
        { 
            int N = 1; 
            int x1 = black[bcount].X - 40; 
            int x2 = black[bcount].X + 40; 
            int y1 = black[bcount].Y - 40; 
            int y2 = black[bcount].Y + 40; 
            while (x1>=40&&y1 >= 40) 
            { 
                if (N == 5) 
                { 
                    break; 
                } 
                if (isBlackStone[x1 / 40 - 1, y1 / 40 - 1] != false) 
                { 
                    N++; 
                    x1 = x1 - 40; 
                    y1 = y1 - 40; 
                } 
                else 
                { 
                    break; 
                } 
            } 
            if (N < 5) 
            { 
                while (x2<=360&&y2 <= 360) 
                { 
                    if (N == 5) 
                    { 
                        break; 
                    } 
                    if (isBlackStone[x2 / 40 - 1, y2 / 40 - 1]) 
                    { 
                        N++; 
                        x2 = x2 + 40; 
                        y2 = y2 + 40; 
                    } 
                    else 
                    { 
                        break; 
                    } 
                } 
            } 
            if (N == 5) 
            { 
                return true; 
            } 
            else 
            { 
                return IsBlackStoneWinSR(); 
            } 
        } 
        public bool IsBlackStoneWinY() 
        { 
            int N = 1; 
            int y1 = black[bcount].Y - 40; 
            int y2 = black[bcount].Y + 40; 
            while (y1 >= 40) 
            { 
                if (N == 5) 
                { 
                    break; 
                } 
                if (isBlackStone[black[bcount].X / 40 - 1, y1 / 40 - 1] != false) 
                { 
                    N++; 
                    y1 = y1 - 40; 
                } 
                else 
                { 
                    break; 
                } 
            } 
            if (N < 5) 
            { 
                while (y2 <= 360) 
                { 
                    if (N == 5) 
                    { 
                        break; 
                    } 
                    if (isBlackStone[black[bcount].X / 40 - 1, y2 / 40 - 1]) 
                    { 
                        N++; 
                        y2 = y2 + 40; 
                    } 
                    else 
                    { 
                        break; 
                    } 
                } 
            } 
            if (N == 5) 
            { 
                return true; 
            } 
            else 
            { 
                return IsBlackStoneWinSL(); 
            } 
        } 
        public bool IsBlackStoneWinX() 
        { 
            int N = 1; 
            int x1 = black[bcount].X - 40; 
            int x2 = black[bcount].X + 40; 
            while (x1 >= 40) 
            { 
                if (N == 5) 
                { 
                    break; 
                } 
                if (isBlackStone[x1 / 40 - 1, black[bcount].Y / 40 - 1] != false) 
                { 
                    N++; 
                    x1 = x1 - 40; 
                } 
                else 
                { 
                    break; 
                } 
            } 
            if (N < 5) 
            { 
                while (x2 <= 360) 
                { 
                    if (N == 5) 
                    { 
                        break; 
                    } 
                    if (isBlackStone[x2 / 40 - 1, black[bcount].Y / 40 - 1]) 
                    { 
                        N++; 
                        x2 = x2 + 40; 
                    } 
                    else 
                    { 
                        break; 
                    } 
                } 
            } 
            if (N == 5) 
            { 
                return true; 
            } 
            else 
            { 
                return IsBlackStoneWinY(); 
            } 
        } 
 
        public bool IsWhiteStoneWinSR() 
        { 
            int N = 1; 
            int x1 =white[wcount].X - 40; 
            int x2 = white[wcount].X + 40; 
            int y1 = white[wcount].Y + 40; 
            int y2 = white[wcount].Y - 40; 
            while (x1 >= 40 && y1 <= 360) 
            { 
                if (N == 5) 
                { 
                    break; 
                } 
                if (isWhiteStone[x1 / 40 - 1, y1 / 40 - 1] != false) 
                { 
                    N++; 
                    x1 = x1 - 40; 
                    y1 = y1 + 40; 
                } 
                else 
                { 
                    break; 
                } 
            } 
            if (N < 5) 
            { 
                while (x2 <= 360 && y2 >= 40) 
                { 
                    if (N == 5) 
                    { 
                        break; 
                    } 
                    if (isWhiteStone[x2 / 40 - 1, y2 / 40 - 1]) 
                    { 
                        N++; 
                        x2 = x2 + 40; 
                        y2 = y2 - 40; 
                    } 
                    else 
                    { 
                        break; 
                    } 
                } 
            } 
            if (N == 5) 
            { 
                return true; 
            } 
            else 
            { 
                return false; 
            } 
        } 
        public bool IsWhiteStoneWinSL() 
        { 
            int N = 1; 
            int x1 = white[wcount].X - 40; 
            int x2 = white[wcount].X + 40; 
            int y1 = white[wcount].Y - 40; 
            int y2 = white[wcount].Y + 40; 
            while (x1 >= 40 && y1 >= 40) 
            { 
                if (N == 5) 
                { 
                    break; 
                } 
                if (isWhiteStone[x1 / 40 - 1, y1 / 40 - 1] != false) 
                { 
                    N++; 
                    x1 = x1 - 40; 
                    y1 = y1 - 40; 
                } 
                else 
                { 
                    break; 
                } 
            } 
            if (N < 5) 
            { 
                while (x2 <= 360 && y2 <= 360) 
                { 
                    if (N == 5) 
                    { 
                        break; 
                    } 
                    if (isWhiteStone[x2 / 40 - 1, y2 / 40 - 1]) 
                    { 
                        N++; 
                        x2 = x2 + 40; 
                        y2 = y2 + 40; 
                    } 
                    else 
                    { 
                        break; 
                    } 
                } 
            } 
            if (N == 5) 
            { 
                return true; 
            } 
            else 
            { 
                return IsWhiteStoneWinSR(); 
            } 
        } 
        public bool IsWhiteStoneWinY() 
        { 
            int N = 1; 
            int y1 = white[wcount].Y - 40; 
            int y2 = white[wcount].Y + 40; 
            while (y1 >= 40) 
            { 
                if (N == 5) 
                { 
                    break; 
                } 
                if (isWhiteStone[white[wcount].X / 40 - 1, y1 / 40 - 1] != false) 
                { 
                    N++; 
                    y1 = y1 - 40; 
                } 
                else 
                { 
                    break; 
                } 
            } 
            if (N < 5) 
            { 
                while (y2 <= 360) 
                { 
                    if (N == 5) 
                    { 
                        break; 
                    } 
                    if (isWhiteStone[white[wcount].X / 40 - 1, y2 / 40 - 1]) 
                    { 
                        N++; 
                        y2 = y2 + 40; 
                    } 
                    else 
                    { 
                        break; 
                    } 
                } 
            } 
            if (N == 5) 
            { 
                return true; 
            } 
            else 
            { 
                return IsWhiteStoneWinSL(); 
            } 
        } 
        public bool IsWhiteStoneWinX() 
        { 
            int N = 1; 
            int x1 = white[wcount].X - 40; 
            int x2 = white[wcount].X + 40; 
            while (x1 >= 40) 
            { 
                if (N == 5) 
                { 
                    break; 
                } 
                if (isWhiteStone[x1 / 40 - 1, white[wcount].Y / 40 - 1] != false) 
                { 
                    N++; 
                    x1 = x1 - 40; 
                } 
                else 
                { 
                    break; 
                } 
            } 
            if (N < 5) 
            { 
                while (x2 <= 360) 
                { 
                    if (N == 5) 
                    { 
                        break; 
                    } 
                    if (isWhiteStone[x2 / 40 - 1, white[wcount].Y / 40 - 1]) 
                    { 
                        N++; 
                        x2 = x2 + 40; 
                    } 
                    else 
                    { 
                        break; 
                    } 
                } 
            } 
            if (N == 5) 
            { 
                return true; 
            } 
            else 
            { 
                return IsWhiteStoneWinY(); 
            } 
        } 
 
        public void RenewStone() 
        { 
            bcount = 0; 
            nblackstone = 0; 
            isPlayBlackStone = false; 
            for (int i = 0; i < n; i++) 
            { 
                //black[i] = new BlackStone(); 
                black[i].X = -10; 
                black[i].Y = -10; 
                //white[i] = new WhiteStone(); 
                white[i].X = -10; 
                white[i].Y = -10; 
            } 
            for (int i = 0; i < 9; i++) 
            { 
                for (int j = 0; j < 9; j++) 
                { 
                    isDraw[i, j] = false; 
                    isBlackStone[i, j] = false; 
                } 
            } 
            ncount = 1; 
            wcount = 0; 
            nwhitestone = 0; 
            isPlayWhiteStone = false; 
            for (int i = 0; i < 9; i++) 
            { 
                for (int j = 0; j < 9; j++) 
                { 
                    isWhiteStone[i, j] = false; 
                } 
            } 
        } 
 
        private void panelGobang_Paint(object sender, PaintEventArgs e) 
        { 
            int x = panelGobang.ClientRectangle.X; 
            int y = panelGobang.ClientRectangle.Y; 
            for (int i = 0; i < 11; i++) 
            { 
               e.Graphics.DrawLine(new Pen(new SolidBrush(Color.Red)), new Point(x, y + 40 * i), new Point(x + 400, y + 40 * i)); 
            } 
            for (int i = 0; i < 11; i++) 
            { 
               e.Graphics.DrawLine(new Pen(new SolidBrush(Color.Red)), new Point(x + 40 * i, y), new Point(x + 40 * i, y + 400)); 
            } 
            for (int i = 0; i < nblackstone; i++) 
            { 
               black[i].DrawBlackStone(e.Graphics); 
            } 
            for (int i = 0; i < nwhitestone; i++) 
            { 
                white[i].DrawWhiteStone(e.Graphics); 
            } 
            if (ncount % 2 != 0) 
            { 
                if (isBlackStoneWin == true) 
                { 
                    isBlackStoneWin = false; 
                    labelBlack.Text = "黑方下"; 
                } 
                if (isWhiteStoneWin == true) 
                { 
                    isWhiteStoneWin = false; 
                    labelBlack.Text="黑方下"; 
                    labelWhite.Text = ""; 
                } 
                if (isPlayBlackStone) 
                { 
                    if (!isDraw[(black[bcount].X) / 40 - 1, (black[bcount].Y) / 40 - 1]) 
                    { 
                        black[bcount].DrawBlackStone(e.Graphics); 
                        nblackstone = bcount + 1; 
                        isPlayBlackStone = false; 
                        isDraw[(black[bcount].X) / 40 - 1, (black[bcount].Y) / 40 - 1] = true; 
                        isBlackStone[(black[bcount].X) / 40 - 1, (black[bcount].Y) / 40 - 1] = true;       
                        if (IsBlackStoneWinX() == true) 
                        { 
                            MessageBox.Show("黑方获胜"); 
                            RenewStone(); 
                            isBlackStoneWin = true; 
                            //labelBlack.Text = ""; 
                            //labelWhite.Text = "白方下"; 
                            panelGobang.Invalidate(); 
                            return; 
                        } 
                        bcount++; 
                        ncount++; 
                        labelWhite.BackColor = Color.Red; 
                        labelWhite.Text = "白方下"; 
                        labelBlack.Text = ""; 
                    } 
                } 
            } 
            else 
            { 
                if (isPlayWhiteStone) 
                { 
                    if (!isDraw[(white[wcount].X) / 40 - 1, (white[wcount].Y) / 40 - 1]) 
                    { 
                        white[wcount].DrawWhiteStone(e.Graphics); 
                        nwhitestone = wcount + 1; 
                        isPlayWhiteStone = false; 
                        isDraw[(white[wcount].X) / 40 - 1, (white[wcount].Y) / 40 - 1] = true; 
                        isWhiteStone[(white[wcount].X) / 40 - 1, (white[wcount].Y) / 40 - 1] = true; 
                        if (IsWhiteStoneWinX() == true) 
                        { 
                            MessageBox.Show("白方获胜"); 
                            RenewStone(); 
                            isWhiteStoneWin = true; 
                            //labelBlack.Text = ""; 
                            //labelWhite.Text = "白方下"; 
                            panelGobang.Invalidate(); 
                            labelWhite.Text = "白方下"; 
                            return; 
                        } 
                        wcount++; 
                        ncount++; 
                        labelBlack.BackColor = Color.Red; 
                        labelBlack.Text = "黑方下"; 
                        labelWhite.Text = ""; 
                    } 
                } 
            } 
        } 
 
        private void panelGobang_MouseClick(object sender, MouseEventArgs e) 
        { 
            if (ncount % 2 != 0) 
            { 
                if (bcount >= n) 
                { 
                    if (wcount == n) 
                    { 
                        MessageBox.Show("您的棋子己用完!"); 
                        isPlayBlackStone = false; 
                        return; 
                    } 
                } 
                this.e = e; 
                PlayBlackStone(e); 
                panelGobang.Invalidate(); 
            } 
            else 
            { 
                if (wcount >= n) 
                { 
                    MessageBox.Show("您的棋子己用完!"); 
                    isPlayWhiteStone = false; 
                    return; 
                } 
                this.e = e; 
                PlayWhiteStone(e); 
                panelGobang.Invalidate(); 
            } 
        } 
    } 
} 
 |   
 
 
 
 |