C#怎么 做五子棋 谁能告诉我怎么用C#做五子棋啊,只要实现双人对战就可以了。尽量详细点,谢谢啦 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看这里http://www.webpc8.com/Article/vcnet/game/200604/Article_7450.html 前几天没事,写了一个小程序,可以用于学习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 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);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);ReSetGame();return;}}else{isFive.Clear();}}}isFive.Clear(); }private void ReSetGame(){//reset gamenextTurn = bTurn;for(int i=0;i<225;i++){chessTable[i] = 0;}this.Invalidate();}private int GetRectID(Point p){//get witch rectangle clickfor(int i = 0;i < 225;i++){if(pointSquares[i].Contains( p )){return i;}}return -1;}private void OnRButtonDown(Point p){//regret chessint 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 chessint 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 chessint x,y;x = nPos%15;y = nPos/15;imageListbw.DrawImage(g,8+20*x,5+20*y,20,20,0,1);}/// /// Clean up any resources being used./// public override void Dispose(){base.Dispose();components.Dispose();}/// /// Required method for Designer support - do not modify/// the contents of this method with the code editor./// 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);}/// /// The main entry point for the application./// public static int Main(string[] args) {Application.Run(new FiveForm());return 0;}}} 要实现双人联机对战还是比较麻烦的。去微软webCast下载<使用.NET Remoting 建立分布式应用程序>系列讲座,一共6讲,最后2将就是实现五子棋双人对战的思路和方法。 改了一下 zhangzengping(张增平) 的代码。:(不好意思。加了棋盘。改了一点棋子的坐标。只要在imagelist 里面加入两张图片就可以运行了。using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;namespace FiveChess{ /// /// Summary description for Form1. /// public class FiveForm : System.Windows .Forms .Form { private System.ComponentModel.IContainer components; private System.Windows .Forms .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(20,20); 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(10+x*20,10+y*20); chessTable[i] = 0; } } protected override void OnPaint(PaintEventArgs e) { //you may paint Graphics g = e.Graphics; DrawTable(g); } protected override void OnMouseDown(System.Windows .Forms .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 DrawTable(Graphics g) { // | for(int i = 1;i<16;i++) { g.DrawLine(new Pen(new SolidBrush(Color.Red),1),i*20,20,i*20,300); } // -- for(int j = 1;j<16;j++) { g.DrawLine(new Pen(new SolidBrush(Color.Red),1),20,j*20,300,j*20); } } 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"); 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"); 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"); 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"); 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*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.Draw(g,10+20*x,10+20*y,20,20,0); } private void DrawWhite(Graphics g,int nPos) { //draw White chess int x,y; x = nPos%15; y = nPos/15; imageListbw.Draw(g,10+20*x,10+20*y,20,20,1); } /// /// Clean up any resources being used. /// protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.components = new System.ComponentModel.Container(); System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(FiveForm)); this.imageListbw = new System.Windows.Forms.ImageList(this.components); // // imageListbw // this.imageListbw.ImageSize = new System.Drawing.Size(20, 20); this.imageListbw.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageListbw.ImageStream"))); this.imageListbw.TransparentColor = System.Drawing.Color.Yellow; // // FiveForm // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(370, 357); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.MaximizeBox = false; this.Name = "FiveForm"; this.Text = "FiveForm"; this.TransparencyKey = System.Drawing.Color.White; } /// /// The main entry point for the application. /// public static int Main(string[] args) { Application.Run(new FiveForm()); return 0; } }} 求解决!C# 错误CS1583 不是有效的Win32资源文件 C#组织较复杂的XML 执行socket.Receive(buff)时,出现“无法立即完成非阻挡性套接字操作错误!” 请教达人快速解析文件数据 怎么才能把一个Form嵌在另一个Form中? 如何在C#中使用Button.ContextMenu C#資源文件的操作 阻塞式socket导致了接收线程的挂掉? 在WINROM中打印richTextBox1中的内容,怎么做啊 寻求方案: 请问c# 中对100MB以上大小的图片应如何处理 请教二个关于c#桌面程序(也就是c/s程序)打印方面的问题,谢谢!
程序使用了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 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++)
{
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*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);
}
///
/// Clean up any resources being used.
///
public override void Dispose()
{
base.Dispose();
components.Dispose();
}
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
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);
}///
/// The main entry point for the application.
///
public static int Main(string[] args)
{
Application.Run(new FiveForm());
return 0;
}
}
}
不好意思。加了棋盘。改了一点棋子的坐标。只要在imagelist 里面加入两张图片就可以运行了。
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;namespace FiveChess
{
///
/// Summary description for Form1.
///
public class FiveForm : System.Windows .Forms .Form
{
private System.ComponentModel.IContainer components;
private System.Windows .Forms .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(20,20);
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(10+x*20,10+y*20);
chessTable[i] = 0;
}
}
protected override void OnPaint(PaintEventArgs e)
{
//you may paint
Graphics g = e.Graphics;
DrawTable(g);
}
protected override void OnMouseDown(System.Windows .Forms .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 DrawTable(Graphics g)
{
// |
for(int i = 1;i<16;i++)
{
g.DrawLine(new Pen(new SolidBrush(Color.Red),1),i*20,20,i*20,300); } // --
for(int j = 1;j<16;j++)
{
g.DrawLine(new Pen(new SolidBrush(Color.Red),1),20,j*20,300,j*20); }
} 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");
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");
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");
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");
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*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.Draw(g,10+20*x,10+20*y,20,20,0); }
private void DrawWhite(Graphics g,int nPos)
{
//draw White chess
int x,y;
x = nPos%15;
y = nPos/15;
imageListbw.Draw(g,10+20*x,10+20*y,20,20,1);
}
///
/// Clean up any resources being used.
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(FiveForm));
this.imageListbw = new System.Windows.Forms.ImageList(this.components);
//
// imageListbw
//
this.imageListbw.ImageSize = new System.Drawing.Size(20, 20);
this.imageListbw.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageListbw.ImageStream")));
this.imageListbw.TransparentColor = System.Drawing.Color.Yellow;
//
// FiveForm
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(370, 357);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MaximizeBox = false;
this.Name = "FiveForm";
this.Text = "FiveForm";
this.TransparencyKey = System.Drawing.Color.White; } ///
/// The main entry point for the application.
///
public static int Main(string[] args)
{
Application.Run(new FiveForm());
return 0;
} }
}