Mail to Keith Dan
keith的天空
海阔凭鱼跃,天高任鸟飞
posts - 31,comments - 196,trackbacks - 2
这个程序是为我的学生做的一个象棋游戏,里面涉及大家有兴趣的朋友可以下载来看看

其中绘制了一个虚拟网格,其中网格分布为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
posted on 2006-12-06 00:08 KeithDan 阅读(4465) 评论(21) 编辑 收藏

FeedBack:
2006-12-06 08:52 | 世玉[未注册用户]
不错,学习中。
楼主好像有个笔误吧:“事例”——“实例”

 回复 引用   
2006-12-06 12:17 | Amnoh      
不够专业,
中国象棋中是红方和黑方,没有蓝方

 回复 引用 查看   
2006-12-06 19:55 | 剑飘红[匿名][未注册用户]
学习
 回复 引用   
2006-12-06 21:33 | 航天奇侠
判断马步,相步,不过也就相对该对象周围的几个点有障碍物而已。
非常固定的。

就是人工智能,感觉不容易。

 回复 引用   
2007-01-04 14:28 | Bill[匿名][未注册用户]
支持一下,不错
 回复 引用   
2007-05-24 02:31 | 孔[未注册用户]
老师,您好,请问有C#开发的网络象棋吗,我很感兴趣,希望能学习一下,我的QQ:64240914
 回复 引用   
#7楼[楼主]
2007-05-24 15:34 | KeithDan      
@孔
有一个网络版的象棋

 回复 引用 查看   
2007-07-04 10:59 | 火刚[未注册用户]
老师您有C#开发的网络象棋吗,能发我一份吗?
QQ:406236626
邮箱:xinji041@sina.com
谢谢

 回复 引用   
2007-07-07 20:52 | keithdan
@火刚
恩,过几天我把网络象棋给大家讲一下,最近有点忙,都没时间写东西了

 回复 引用   
2007-10-16 10:04 | 李春明[未注册用户]
谢谢老师了,这个对我很有帮助啊,以前都是用PB的,现在用C#了,有什么不懂的可以和您联系吗
我的邮箱:lcm_424@163.com

 回复 引用   
2007-11-08 22:53 | kkkkkkkkkkkkkkk[未注册用户]
错误 1 找不到类型或命名空间名称“Enums”(是否缺少 using 指令或程序集引用?) D:\My Documents\Visual Studio 2005\Projects\ConsoleApplication8\ConsoleApplication8\Program.cs 8 5 ConsoleApplication8

 回复 引用   
2007-12-19 22:50 | audrey[未注册用户]
非常有用,谢谢老师.学到好多东西啊:)
 回复 引用   
2008-06-17 09:11 | 不离[未注册用户]
老师,能发一份给我吗?学习
谢谢!

 回复 引用   
#15楼[楼主]
2008-06-17 12:00 | KeithDan      
@不离
发什么?源码就在上面啊

 回复 引用 查看   
2008-07-03 21:08 | bobbob0006[未注册用户]
想讨份学习,谢谢。
496531087@qq.com

 回复 引用   
2008-07-03 21:11 | bobbob0006[未注册用户]
已发现,并下载,谢谢!
 回复 引用   
2008-12-01 18:10 | 萧色的秋[未注册用户]
您好!我刚才看了你的代码,有的地方并不是很明白,我是一个新手,您能不能把你的制作的那个软件发到我的邮箱里去啊?有过你愿意,请发到gaoyunxiao666@sina.com 谢谢!
 回复 引用   
2009-09-04 12:16 | WoodLikeWater[未注册用户]
有Bug(双方老将不能照面) 我现在也在用c#写象棋
 回复 引用   
2009-12-02 21:46 | 羽凡[未注册用户]


 回复 引用   
2010-05-14 20:06 | 会长      
楼主:
我也做了一个。http://www.cnblogs.com/zzy0471/archive/2010/05/11/1732887.html

 回复 引用 查看