c#游戏之五子棋程序
    前几天没事,写了一个小程序,可以用于学习C#。  程序使用了VS.NET环境编译,你的机器只要安装了.NET Framework SDK就可以运行。
  namespace Leimom.FiveChess 
  { 
  using System; 
  using System.Drawing; 
  using System.Collections; 
  using System.ComponentModel; 
  using System.WinForms; 
  using System.Data; 
  /// 
  /// Summary description for Form1. 
  /// 
  public class FiveForm : System.WinForms.Form 
  { 
  /// 
  /// Required designer variable. 
  /// 
  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*20,6+y*20); 
  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++) 
  { 
小程序图文editor  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); 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。