C#实现的象棋游戏程序

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

其中绘制了一个虚拟网格,其中网格分布为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

时间: 2024-12-11 18:22:10

C#实现的象棋游戏程序的相关文章

一个游戏程序员的学习资料

转自:http://software.intel.com/zh-cn/blogs/2012/03/20/400010004/?cid=sw:prccsdn2194 想起写这篇文章是在看侯杰先生的<深入浅出MFC>时, 突然觉得自己在大学这几年关于游戏编程方面还算是有些心得,因此写出这篇小文,介绍我眼中的游戏程序 员的书单与源代码参考.一则是作为自己今后两年学习目标的备忘录,二来没准对别人也有点参考价值.我的原则是只写自己研究过或准备研究的资料,所以内容无 疑会带上强烈的个人喜好色彩, 比如对网

谢谢 救急-为什么我截图发送给一个答题接口,获得返回值之后传给游戏程序 取不到值。谢谢各位了

问题描述 为什么我截图发送给一个答题接口,获得返回值之后传给游戏程序 取不到值.谢谢各位了 static BOOL SyncGetAnswer(LPCSTR szJpgFile LPCSTR& szAnswer){ BOOL bResult = FALSE; HMODULE hMod = NULL; TRYBLOCK_START CHAR szPath[MAX_PATH] = {0}; // 发送答题 wsprintfA(szPath%slldm.dll"" GetAppPat

电脑使用Dolphin模拟器无法运行游戏程序的解决方法

  电脑使用Dolphin模拟器无法运行游戏程序的解决方法          1.很多时候更改了dolphin的设置,但是第二次打开之后却发现之前更改的设置又回去了,这是因为没有获取到管理员权限.右击桌面上的dolphin快捷方式,点击"兼容性"选项卡,勾选"以管理员身份运行此程序",确定后双击打开dolphin; 2.进入到dolphin主界面,很多人不知道如何在列表中添加游戏.点击上侧图标中的"选项",在弹出的对话框中选择"路径&q

在网上下载的flash游戏程序如何用开发工具查看其代码?

问题描述 在网上下载的flash游戏程序如何用开发工具查看其代码? 我是菜鸟一枚. 所以在网上下载了flash游戏程序,比如有一个是"贪吃蛇" 打开后,里面有三个文件,分别是: Ball.as Snake.fla Snake.swf 而用adobe flash professinal打开Snake.fla后,只能看到一个界面, 而在动作面板中,看不到有代码,这是怎么回事? 是因为我操作错了,还是不能用adobe flash professinal打开,或者应该 用其它开发工具打开,需要

c语言程序猜数字游戏程序

问题描述 c语言程序猜数字游戏程序 #include #include #include #include #include int main(void) { unsigned int max = 3; unsigned int guess = 0; unsigned int chones = 0; unsigned int limit = 20; char answer = 'n'; printf("这是一个猜数字游戏!游戏开始时! "); srand(time(NULL)); wh

javascript实现别踩白块儿小游戏程序_javascript技巧

最近有朋友找我用JS帮忙仿做一个别踩白块的小游戏程序,但他给的源代码较麻烦,而且没有注释,理解起来很无力,我就以自己的想法自己做了这个小游戏,主要是应用JS对DOM和数组的操作. 程序思路:如图:将游戏区域的CSS设置为相对定位.溢出隐藏;两块"游戏板"上分别排布着24块方格,黑色每行随机产生一个,"游戏板"向下滚动并交替显示,将每个操作板的黑块位置存入数组,每次点击时将数组pop出来进行比对(我觉得亮点在这--). 这里是游戏的GitHub地址,大家可以到里点击中

Android五子棋游戏程序完整实例分析_Android

最近学习了五子棋的课程,感觉挺不错.然后自己写了个关于五子棋的android程序,从中还是能够学习到很多东西的.现在我们开始今天五子棋程序的编写历程.程序的源码请参见友情链接: 好了,我们现在开始一步步的构建出项目来,首先是如下的项目结构图: 运行的效果图: 一些前期做准备的代码 1. 主活动类MainActivity,在菜单中加入了再来一局的功能: public class MainActivity extends AppCompatActivity { private ChessBoardV

求Java连连看游戏程序

问题描述 求Java连连看游戏程序能在Eclipse上面运行...有的发我邮箱270364622@qq.com感激不尽啊... 解决方案 解决方案二:这个区javase板块可能有吧解决方案三:兄弟啊,还想找弹弹堂的呢!!!

如何使用C#的图形用户界面实现一个魔板游戏程序

问题描述 使用C#的图形用户界面实现一个魔板游戏程序.功能要求如下:1.基本功能(1)游戏规则一个3×3的魔板,有一个格子是空的,其他格子内随机放置1-8共8个编号的方块,通过单击任意一个与空格子相邻的方块可以把该方块移入空格子,不断的移动方块,直到方块一行一行的按数字顺序排好.(2)程序功能三个基本功能:方块移动,游戏计时,游戏控制(改变游戏状态).(3)程序界面根据游戏的三种状态有三种界面:图1游戏停止状态(初始状态)图2游戏进行状态图3游戏暂停状态主窗口"游戏"菜单:图4主窗口菜