C#一个象棋游戏程序

王朝c#·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

这个程序是为我的学生做的一个象棋游戏,里面涉及大家有兴趣的朋友可以下载来看看

其中绘制了一个虚拟网格,其中网格分布为9X10分布,和正规象棋布局一样,即GridX,GridY作为该网格的X,Y坐标,所有坐标点均采用此虚拟网格进行转换

其中定义了一个棋子接口,所有棋盘和棋子之间的交互均来自此接口

public interface IChessItem

{

/**//// <summary>

/// 为蓝方还是红方

/// </summary>

Enums.ChessType type{get;set;}

/**//// <summary>

/// 是否被按下

/// </summary>

bool IsChecked{get;set;}

/**//// <summary>

/// 移动的步长X

/// </summary>

int StepX{get;}

/**//// <summary>

/// 移动的步长Y

/// </summary>

int StepY{get;}

/**//// <summary>

/// 在棋盘网格中的X坐标

/// </summary>

int GridX{get;set;}

/**//// <summary>

/// 在棋盘网格中的Y坐标

/// </summary>

int GridY{get;set;}

/**//// <summary>

/// 移动棋子

/// </summary>

/// <param name="ChessX">将要移动的网格X坐标</param>

/// <param name="ChessY">将要移动的网格Y坐标</param>

/// <returns>是否成功移动</returns>

bool MoveItem(int ChessX,int ChessY);

/**//// <summary>

/// 初始化棋子

/// </summary>

void InitItem();

/**//// <summary>

/// 移除棋子,作为被其他棋子吃掉

/// </summary>

void Remove();

}

其中有两个比较重要的事件 private void cib_Click(object sender, EventArgs e)此事件为棋子被点机事件,由它来响应棋子的选中以及吃别的棋子,名字没改,呵呵,不好意思

private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)此事件做为棋子实现移动

所有棋子移动均来源于IChessItem接口中的

bool MoveItem(int ChessX,int ChessY);

由于是给我学生看,此程序比较简单,所以流程也比较简单.学习C#的朋友可以来看一下,呵呵

其中算法麻烦一点的是炮的翻山,马的蹩脚,象的蹩脚

所有棋子继承ChessItemBase,其中一些棋子重写函数public virtual bool LimitPoint(int ChessX,int ChessY)以实现自己的特殊限制移动,比如炮,马,象,兵等

Demo Soure http://www.cnblogs.com/Files/KeithDan/Chess.rar

http://www.cnblogs.com/KeithDan/archive/2006/12/06/583472.html

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航