level 5
汉中名士杨松
楼主
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 Rectangleprivate Rectangle[] pointSquares;//chess informationprivate 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 paintGraphics g = e.Graphics;}protected override void OnMouseDown(System.WinForms.MouseEventArgs e) {switch( e.Button ){//take left button downcase MouseButtons.Left:OnLButtonDown(new Point(e.X,e.Y));break;//take right button downcase 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 chessif(nPos != -1&&chessTable[nPos] == 0){Graphics g = this.CreateGraphics();if(nextTurn==bTurn){//draw white chessDrawBlack(g,nPos);chessTable[nPos] = bTurn;nextTurn = wTurn;chessIndex.Push(bTurn);chessIndex.Push(nPos);}else{//draw Black chessDrawWhite(g,nPos);chessTable[nPos] = wTurn;nextTurn = bTurn;chessIndex.Push(wTurn);chessIndex.Push(nPos);}g.Dispose();//witch winCheckGameResult(nPos,nextTurn);} }private void CheckGameResult(int nPos,int nextTurn){//witch winStack isFive = new Stack();int thisTurn = (nextTurn == bTurn)?wTurn:bTurn;int x = nPos%15;int y = nPos/15;//scan x have fivefor(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 fivefor(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 fivefor(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);
2007年09月18日 06点09分
1
/// 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 Rectangleprivate Rectangle[] pointSquares;//chess informationprivate 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 paintGraphics g = e.Graphics;}protected override void OnMouseDown(System.WinForms.MouseEventArgs e) {switch( e.Button ){//take left button downcase MouseButtons.Left:OnLButtonDown(new Point(e.X,e.Y));break;//take right button downcase 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 chessif(nPos != -1&&chessTable[nPos] == 0){Graphics g = this.CreateGraphics();if(nextTurn==bTurn){//draw white chessDrawBlack(g,nPos);chessTable[nPos] = bTurn;nextTurn = wTurn;chessIndex.Push(bTurn);chessIndex.Push(nPos);}else{//draw Black chessDrawWhite(g,nPos);chessTable[nPos] = wTurn;nextTurn = bTurn;chessIndex.Push(wTurn);chessIndex.Push(nPos);}g.Dispose();//witch winCheckGameResult(nPos,nextTurn);} }private void CheckGameResult(int nPos,int nextTurn){//witch winStack isFive = new Stack();int thisTurn = (nextTurn == bTurn)?wTurn:bTurn;int x = nPos%15;int y = nPos/15;//scan x have fivefor(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 fivefor(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 fivefor(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);