当前位置:首页 > 网络编程 > WEB编程 > ASP.net > c#写的五子棋程序,供学习WinForms的鼠标事件和使用GD

c#写的五子棋程序,供学习WinForms的鼠标事件和使用GD

点击次数:16 次 发布日期:2008-11-26 23:34:22 作者:源代码网
源代码网推荐 前几天没事,写了一个小程序,可以用于学习C#。
源代码网推荐
源代码网推荐 程序使用了VS.NET环境编译,你的机器只要安装了.NET Framework SDK就可以运行。
源代码网推荐
源代码网推荐 源码和执行文件可以下载
源代码网推荐
源代码网推荐 http://www.wh-adv.com/download/five.zip
源代码网推荐
源代码网推荐 你不想下载也可读一下源码(图片资源等需要下载)。
源代码网推荐
源代码网推荐 namespace Leimom.FiveChess
源代码网推荐
源代码网推荐 {
源代码网推荐
源代码网推荐     using System;
源代码网推荐
源代码网推荐     using System.Drawing;
源代码网推荐
源代码网推荐     using System.Collections;
源代码网推荐
源代码网推荐     using System.ComponentModel;
源代码网推荐
源代码网推荐     using System.WinForms;
源代码网推荐
源代码网推荐     using System.Data;
源代码网推荐
源代码网推荐     /// <summary>
源代码网推荐
源代码网推荐     ///    Summary des cription for Form1.
源代码网推荐
源代码网推荐     /// </summary>
源代码网推荐
源代码网推荐     public class FiveForm : System.WinForms.Form
源代码网推荐
源代码网推荐     {
源代码网推荐
源代码网推荐         /// <summary>
源代码网推荐
源代码网推荐         ///    Required designer variable.
源代码网推荐
源代码网推荐         /// </summary>
源代码网推荐
源代码网推荐         private System.ComponentModel.Container components;
源代码网推荐
源代码网推荐   private System.WinForms.ImageList imageListbw;
源代码网推荐
源代码网推荐   //define the hot Rectangle
源代码网推荐
源代码网推荐   private Rectangle[] pointSquares;
源代码网推荐
源代码网推荐   //chess information
源代码网推荐
源代码网推荐   private int[] chessTable;
源代码网推荐
源代码网推荐   private int nextTurn;
源代码网推荐
源代码网推荐   private const int bTurn = 1;
源代码网推荐
源代码网推荐   private const int wTurn = 2;
源代码网推荐
源代码网推荐   private Stack chessIndex;
源代码网推荐
源代码网推荐   public FiveForm()
源代码网推荐
源代码网推荐         {
源代码网推荐
源代码网推荐             //
源代码网推荐
源代码网推荐             // Required for Windows Form Designer support
源代码网推荐
源代码网推荐             //
源代码网推荐
源代码网推荐             InitializeComponent();
源代码网推荐
源代码网推荐             //
源代码网推荐
源代码网推荐             // TODO: Add any constructor code after InitializeComponent call
源代码网推荐
源代码网推荐             //
源代码网推荐
源代码网推荐    chessIndex = new Stack();
源代码网推荐
源代码网推荐    nextTurn = bTurn;
源代码网推荐
源代码网推荐    chessTable = new int[225];
源代码网推荐
源代码网推荐    pointSquares = new Rectangle[225];
源代码网推荐
源代码网推荐    Size size = new Size(18,18);
源代码网推荐
源代码网推荐    int x = 0;
源代码网推荐
源代码网推荐    int y = 0;
源代码网推荐
源代码网推荐    for(int i = 0;i < 225;i++)
源代码网推荐
源代码网推荐    {
源代码网推荐
源代码网推荐     x = i%15;
源代码网推荐
源代码网推荐     y = i/15;
源代码网推荐
源代码网推荐     pointSquares.Size = size;
源代码网推荐
源代码网推荐     pointSquares.Offset(9+x*20,6+y*20);
源代码网推荐
源代码网推荐     chessTable = 0;
源代码网推荐
源代码网推荐    }
源代码网推荐
源代码网推荐   }
源代码网推荐
源代码网推荐
源代码网推荐
源代码网推荐   protected override void OnPaint(PaintEventArgs e)
源代码网推荐
源代码网推荐   {
源代码网推荐
源代码网推荐    //you may paint
源代码网推荐
源代码网推荐             Graphics g = e.Graphics;
源代码网推荐
源代码网推荐   }
源代码网推荐
源代码网推荐   protected override void OnMouseDown(System.WinForms.MouseEventArgs e)
源代码网推荐
源代码网推荐   {
源代码网推荐
源代码网推荐    switch( e.Button )
源代码网推荐
源代码网推荐    {
源代码网推荐
源代码网推荐     //take left button down
源代码网推荐
源代码网推荐     case MouseButtons.Left:
源代码网推荐
源代码网推荐      OnLButtonDown(new Point(e.X,e.Y));
源代码网推荐
源代码网推荐      break;
源代码网推荐
源代码网推荐     //take right button down
源代码网推荐
源代码网推荐     case MouseButtons.Right:
源代码网推荐
源代码网推荐      OnRButtonDown(new Point(e.X,e.Y));
源代码网推荐
源代码网推荐      break;
源代码网推荐
源代码网推荐    }
源代码网推荐
源代码网推荐    base.OnMouseDown(e);
源代码网推荐
源代码网推荐   }
源代码网推荐
源代码网推荐   private void OnLButtonDown(Point p)
源代码网推荐
源代码网推荐   {
源代码网推荐
源代码网推荐    int nPos = GetRectID(p);
源代码网推荐
源代码网推荐    //click hot Rectangle witch have no chess
源代码网推荐
源代码网推荐    if(nPos != -1&&chessTable[nPos] == 0)
源代码网推荐
源代码网推荐    {
源代码网推荐
源代码网推荐     Graphics g = this.CreateGraphics();
源代码网推荐
源代码网推荐     if(nextTurn==bTurn)
源代码网推荐
源代码网推荐     {
源代码网推荐
源代码网推荐      //draw white chess
源代码网推荐
源代码网推荐      DrawBlack(g,nPos);
源代码网推荐
源代码网推荐      chessTable[nPos] = bTurn;
源代码网推荐
源代码网推荐      nextTurn = wTurn;
源代码网推荐
源代码网推荐      chessIndex.Push(bTurn);
源代码网推荐
源代码网推荐      chessIndex.Push(nPos);
源代码网推荐
源代码网推荐     }
源代码网推荐
源代码网推荐     else
源代码网推荐
源代码网推荐     {
源代码网推荐
源代码网推荐      //draw Black chess
源代码网推荐
源代码网推荐      DrawWhite(g,nPos);
源代码网推荐
源代码网推荐      chessTable[nPos] = wTurn;
源代码网推荐
源代码网推荐      nextTurn = bTurn;
源代码网推荐
源代码网推荐      chessIndex.Push(wTurn);
源代码网推荐
源代码网推荐      chessIndex.Push(nPos);
源代码网推荐
源代码网推荐     }
源代码网推荐
源代码网推荐     g.Dispose();
源代码网推荐
源代码网推荐     //witch win
源代码网推荐
源代码网推荐     CheckGameResult(nPos,nextTurn);
源代码网推荐
源代码网推荐    }  
源代码网推荐
源代码网推荐   }
源代码网推荐
源代码网推荐   private void CheckGameResult(int nPos,int nextTurn)
源代码网推荐
源代码网推荐   {
源代码网推荐
源代码网推荐    //witch win
源代码网推荐
源代码网推荐    Stack isFive = new Stack();
源代码网推荐
源代码网推荐    int thisTurn = (nextTurn == bTurn)?wTurn:bTurn;
源代码网推荐
源代码网推荐    int x = nPos%15;
源代码网推荐
源代码网推荐    int y = nPos/15;
源代码网推荐
源代码网推荐    //scan x have five
源代码网推荐
源代码网推荐    for(int i=0;i<15;i++)
源代码网推荐
源代码网推荐    {
源代码网推荐
源代码网推荐     if(chessTable[y*15+i] == thisTurn)
源代码网推荐
源代码网推荐     {
源代码网推荐
源代码网推荐      isFive.Push(y*15+i);
源代码网推荐
源代码网推荐      if(isFive.Count == 5)
源代码网推荐
源代码网推荐      {
源代码网推荐
源代码网推荐       MessageBox.Show("Game Over","Notes",MessageBox.OK);
源代码网推荐
源代码网推荐       ReSetGame();
源代码网推荐
源代码网推荐       return;
源代码网推荐
源代码网推荐      }
源代码网推荐
源代码网推荐     }
源代码网推荐
源代码网推荐     else
源代码网推荐
源代码网推荐     {
源代码网推荐
源代码网推荐      isFive.Clear();
源代码网推荐
源代码网推荐     }
源代码网推荐
源代码网推荐    }
源代码网推荐
源代码网推荐    isFive.Clear();
源代码网推荐
源代码网推荐    //scan y have five
源代码网推荐
源代码网推荐    for(int i=0;i<15;i++)
源代码网推荐
源代码网推荐    {
源代码网推荐
源代码网推荐     if(chessTable[i*15+x] == thisTurn)
源代码网推荐
源代码网推荐     {
源代码网推荐
源代码网推荐      isFive.Push(i*15+x);
源代码网推荐
源代码网推荐      if(isFive.Count == 5)
源代码网推荐
源代码网推荐      {
源代码网推荐
源代码网推荐       MessageBox.Show("Game Over","Notes",MessageBox.OK);
源代码网推荐
源代码网推荐       ReSetGame();
源代码网推荐
源代码网推荐       return;
源代码网推荐
源代码网推荐      }
源代码网推荐
源代码网推荐     }
源代码网推荐
源代码网推荐     else
源代码网推荐
源代码网推荐     {
源代码网推荐
源代码网推荐      isFive.Clear();
源代码网推荐
源代码网推荐     }
源代码网推荐
源代码网推荐    }
源代码网推荐
源代码网推荐    isFive.Clear();
源代码网推荐
源代码网推荐    //scan x=y have five
源代码网推荐
源代码网推荐    for(int i=-14;i<15;i++)
源代码网推荐
源代码网推荐    {
源代码网推荐
源代码网推荐     if(x+i<0||x+i>14||y-i<0||y-i>14)
源代码网推荐
源代码网推荐     {
源代码网推荐
源代码网推荐      continue;
源代码网推荐
源代码网推荐     }
源代码网推荐
源代码网推荐     else
源代码网推荐
源代码网推荐     {
源代码网推荐
源代码网推荐      if(chessTable[(y-i)*15+x+i] == thisTurn)
源代码网推荐
源代码网推荐      {
源代码网推荐
源代码网推荐       isFive.Push((y-i)*15+x+i);
源代码网推荐
源代码网推荐       if(isFive.Count == 5)
源代码网推荐
源代码网推荐       {
源代码网推荐
源代码网推荐        MessageBox.Show("Game Over","Notes",MessageBox.OK);
源代码网推荐
源代码网推荐        ReSetGame();
源代码网推荐
源代码网推荐        return;
源代码网推荐
源代码网推荐       }
源代码网推荐
源代码网推荐      }
源代码网推荐
源代码网推荐      else
源代码网推荐
源代码网推荐      {
源代码网推荐
源代码网推荐       isFive.Clear();
源代码网推荐
源代码网推荐      }
源代码网推荐
源代码网推荐     }
源代码网推荐
源代码网推荐    }
源代码网推荐
源代码网推荐    isFive.Clear();
源代码网推荐
源代码网推荐    //scan x=-y have five
源代码网推荐
源代码网推荐    for(int i=-14;i<15;i++)
源代码网推荐
源代码网推荐    {
源代码网推荐
源代码网推荐     if(x+i<0||x+i>14||y+i<0||y+i>14)
源代码网推荐
源代码网推荐     {
源代码网推荐
源代码网推荐      continue;
源代码网推荐
源代码网推荐     }
源代码网推荐
源代码网推荐     else
源代码网推荐
源代码网推荐     {
源代码网推荐
源代码网推荐      if(chessTable[(y+i)*15+x+i] == thisTurn)
源代码网推荐
源代码网推荐      {
源代码网推荐
源代码网推荐       isFive.Push((y+i)*15+x+i);
源代码网推荐
源代码网推荐       if(isFive.Count == 5)
源代码网推荐
源代码网推荐       {
源代码网推荐
源代码网推荐        MessageBox.Show("Game Over","Notes",MessageBox.OK);
源代码网推荐
源代码网推荐        ReSetGame();
源代码网推荐
源代码网推荐        return;
源代码网推荐
源代码网推荐       }
源代码网推荐
源代码网推荐      }
源代码网推荐
源代码网推荐      else
源代码网推荐
源代码网推荐      {
源代码网推荐
源代码网推荐       isFive.Clear();
源代码网推荐
源代码网推荐      }
源代码网推荐
源代码网推荐     }
源代码网推荐
源代码网推荐    }
源代码网推荐
源代码网推荐    isFive.Clear();
源代码网推荐
源代码网推荐   }
源代码网推荐
源代码网推荐   private void ReSetGame()
源代码网推荐
源代码网推荐   {
源代码网推荐
源代码网推荐    //reset game
源代码网推荐
源代码网推荐    nextTurn = bTurn;
源代码网推荐
源代码网推荐    for(int i=0;i<225;i++)
源代码网推荐
源代码网推荐    {
源代码网推荐
源代码网推荐     chessTable = 0;
源代码网推荐
源代码网推荐    }
源代码网推荐
源代码网推荐    this.Invalidate();
源代码网推荐
源代码网推荐   }
源代码网推荐
源代码网推荐   private int GetRectID(Point p)
源代码网推荐
源代码网推荐   {
源代码网推荐
源代码网推荐    //get witch rectangle click
源代码网推荐
源代码网推荐    for(int i = 0;i < 225;i++)
源代码网推荐
源代码网推荐    {
源代码网推荐
源代码网推荐     if(pointSquares.Contains( p ))
源代码网推荐
源代码网推荐     {
源代码网推荐
源代码网推荐      return i;
源代码网推荐
源代码网推荐     }
源代码网推荐
源代码网推荐    }
源代码网推荐
源代码网推荐    return -1;
源代码网推荐
源代码网推荐   }
源代码网推荐
源代码网推荐   private void OnRButtonDown(Point p)
源代码网推荐
源代码网推荐   {
源代码网推荐
源代码网推荐    //regret chess
源代码网推荐
源代码网推荐    int nPos,x,y;
源代码网推荐
源代码网推荐    if(chessIndex.Count != 0)
源代码网推荐
源代码网推荐    {
源代码网推荐
源代码网推荐     nPos = (int)chessIndex.Pop();
源代码网推荐
源代码网推荐     x = nPos%15;
源代码网推荐
源代码网推荐     y = nPos/15;
源代码网推荐
源代码网推荐     chessTable[nPos] = 0;
源代码网推荐
源代码网推荐     nextTurn = (int)chessIndex.Pop();
源代码网推荐
源代码网推荐     this.Invalidate(new Rectangle(new Point(8+x*20,5+y*20),new Size(20,20)));
源代码网推荐
源代码网推荐    }
源代码网推荐
源代码网推荐   }
源代码网推荐
源代码网推荐   private void DrawBlack(Graphics g,int nPos)
源代码网推荐
源代码网推荐   {
源代码网推荐
源代码网推荐    //draw Black chess
源代码网推荐
源代码网推荐    int x,y;
源代码网推荐
源代码网推荐    x = nPos%15;
源代码网推荐
源代码网推荐    y = nPos/15;
源代码网推荐
源代码网推荐    imageListbw.DrawImage(g,8+20*x,5+20*y,20,20,0,0);
源代码网推荐
源代码网推荐   }
源代码网推荐
源代码网推荐   private void DrawWhite(Graphics g,int nPos)
源代码网推荐
源代码网推荐   {
源代码网推荐
源代码网推荐    //draw White chess
源代码网推荐
源代码网推荐    int x,y;
源代码网推荐
源代码网推荐    x = nPos%15;
源代码网推荐
源代码网推荐    y = nPos/15;
源代码网推荐
源代码网推荐    imageListbw.DrawImage(g,8+20*x,5+20*y,20,20,0,1);
源代码网推荐
源代码网推荐   }
源代码网推荐
源代码网推荐         /// <summary>
源代码网推荐
源代码网推荐         ///    Clean up any resources being used.
源代码网推荐
源代码网推荐         /// </summary>
源代码网推荐
源代码网推荐         public override void Dispose()
源代码网推荐
源代码网推荐         {
源代码网推荐
源代码网推荐             base.Dispose();
源代码网推荐
源代码网推荐             components.Dispose();
源代码网推荐
源代码网推荐         }
源代码网推荐
源代码网推荐         /// <summary>
源代码网推荐
源代码网推荐         ///    Required method for Designer support - do not modify
源代码网推荐
源代码网推荐         ///    the contents of this method with the code editor.
源代码网推荐
源代码网推荐         /// </summary>
源代码网推荐
源代码网推荐         private void InitializeComponent()
源代码网推荐
源代码网推荐   {
源代码网推荐
源代码网推荐    System.Resources.ResourceManager resources = new System.Resources.ResourceManager (typeof(FiveForm));
源代码网推荐
源代码网推荐    this.components = new System.ComponentModel.Container ();
源代码网推荐
源代码网推荐    this.imageListbw = new System.WinForms.ImageList ();
源代码网推荐
源代码网推荐    //@this.TrayHeight = 90;
源代码网推荐
源代码网推荐    //@this.TrayLargeIcon = false;
源代码网推荐
源代码网推荐    //@this.TrayAutoArrange = true;
源代码网推荐
源代码网推荐    //@imageListbw.SetLocation (new System.Drawing.Point (7, 7));
源代码网推荐
源代码网推荐    imageListbw.ImageSize = new System.Drawing.Size (20, 20);
源代码网推荐
源代码网推荐    imageListbw.ImageStream = (System.WinForms.ImageListStreamer) resources.GetObject ("imageListbw.ImageStream");
源代码网推荐
源代码网推荐    imageListbw.ColorDepth = System.WinForms.ColorDepth.Depth8Bit;
源代码网推荐
源代码网推荐    imageListbw.TransparentColor = System.Drawing.Color.Yellow;
源代码网推荐
源代码网推荐    this.Text = "FiveForm";
源代码网推荐
源代码网推荐    this.MaximizeBox = false;
源代码网推荐
源代码网推荐    this.AutoScaleBaseSize = new System.Drawing.Size (6, 14);
源代码网推荐
源代码网推荐    this.BorderStyle = System.WinForms.FormBorderStyle.FixedSingle;
源代码网推荐
源代码网推荐    this.BackgroundImage = (System.Drawing.Image) resources.GetObject ("$this.BackgroundImage");
源代码网推荐
源代码网推荐    this.TransparencyKey = System.Drawing.Color.White;
源代码网推荐
源代码网推荐    this.ClientSize = new System.Drawing.Size (314, 311);
源代码网推荐
源代码网推荐   }
源代码网推荐
源代码网推荐
源代码网推荐
源代码网推荐         /// <summary>
源代码网推荐
源代码网推荐         /// The main entry point for the application.
源代码网推荐
源代码网推荐         /// </summary>
源代码网推荐
源代码网推荐         public static int Main(string[] args)
源代码网推荐
源代码网推荐         {
源代码网推荐
源代码网推荐             Application.Run(new FiveForm());
源代码网推荐
源代码网推荐    return 0;
源代码网推荐
源代码网推荐         }
源代码网推荐
源代码网推荐     }
源代码网推荐
源代码网推荐 }
源代码网推荐        
源代码网推荐        

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华