首 页 | 模 板 | 学 院 | 源 码 | 书 籍 | 壁 纸 | 字 体 | JS脚本 | FLASH源码 | 软 件 | 矢 量 | 服务器软件 | 素 材 | 其 它 |
设为主页
加入收藏
联系站长
平面设计 | 网页制作 | 程序编写 | 数 据 库 | 媒体动画 | 网络冲浪 | 服务器相关 | 站长乐园 | 业界动态 |
当前在线
C#一个象棋游戏程序
2006-12-6 15:46:32  作者:模板天下收集整理  来源:未知 网友评论 0 条 论坛
   

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

其中绘制了一个虚拟网格,其中网格分布为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)以实现自己的特殊限制移动,比如炮,马,象,兵等

共分1页  [1] 

>> 相关文章

关于网站 | 客服中心 | 服务条款 | 友情链接 | 广告联系 | 本站历程 | 网站导航

吉ICP备05000107号