国产毛片午夜福利,国产黄网,国产亚洲天堂,97国产精品

  •  
    c#寫的五子棋程序,供學(xué)習(xí)WinForms的鼠標(biāo)事件和使用GDI+
    發(fā)布時(shí)間:2005-03-17   瀏覽次數(shù):1185370
    前幾天沒事,寫了一個(gè)小程序,可以用于學(xué)習(xí)C#。

    程序使用了VS.NET環(huán)境編譯,你的機(jī)器只要安裝了.NET Framework SDK可以運(yùn)行。

    源碼和執(zhí)行文件可以下載

    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 description 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[i].Size = size;

    pointSquares[i].Offset(9+x*,6+y*);

    chessTable[i] = 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[i] = 0;

    }

    this.Invalidate();

    }

    private int GetRectID(Point p)

    {

    //get witch rectangle click

    for(int i = 0;i < 225;i++)

    {

    if(pointSquares[i].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*,5+y*),new Size(,)));

    }

    }

    private void DrawBlack(Graphics g,int nPos)

    {

    //draw Black chess

    int x,y;

    x = nPos%15;

    y = nPos/15;

    imageListbw.DrawImage(g,8+*x,5+*y,,,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+*x,5+*y,,,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 (, );

    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;

    }

    }

    }

    來源:http://edu.chinaz.com
    立即預(yù)約