展开全部
代码就不发了,我没有。
学习一下如何step by step:
1。简单的象棋游戏,就是一个窗体(这个你得会创建一个新窗体吧!),然后在里面画上棋盘,棋子就可以了。
2。棋盘吗,就是个背景,找张图片贴近来也好,自己控制GDI+函数话也好(就是重写窗体的绘图函数:protected override void OnPaint(PaintEventArgs e) , 参数e.Graphics来划线阿什么的)。你得了解这个窗体客户区的坐标,以窗体总长宽作为整体,划分为9*8=72部分作为棋子的落脚点,每个部分的中央点就是你划线所要连接起来成为棋盘线的。就算你直接贴图,也得把这9*8矩阵(就是一个二维数组了)的信息记好。建议创建一个“落脚点“对象,比如StandPoint这样的东西。
3。棋子吗,定义一个对象好了,比如Chess。棋子得有一些数据,棋子是什么棋子阿,属于哪一方的阿,活的还是死的阿,活的活在棋盘上的哪个StandPoint上啊,等等。棋子还得有一些方法,比如要把自己画出来啊,一个马得帖一个马的图片上来啊,一个马从当前StandPoint可以到下一个StandPoint,规则是什么啊(简单说就是x,y坐标的变换:一共有8种情形了,先x++,然后x++并且y++,或者可以x++,然后x++并且y--;或者先x--,然后x--并且y--。。。等等你自己总结,不过当下标溢出(超出棋盘边界)或者第一步行动的格子有棋子(就是俗称拌马腿啊),那就不能移动)
4。一个游戏,要有一个“一盘棋”的概念。定义一个“GamePlay"好了,要包含一些数据:当前轮到谁了,谁胜谁负了,等等。
5。走棋怎么走?定义个Selector对象,每次鼠标产生一次MouseClick事件,就判断坐标,查询当前所有活着的棋子Chess对象,谁包含了这个坐标点,如果找到这样一个Chess,就生成一个Selector,然后再点一次鼠标的时候,看看落点是什么,如果是自己方的棋子,重新生成selector,否则就让当前selector指导该棋子走向下一个位子,前提是要符合这个棋子本身所包含的rule属性。
好了,讲的抽不抽象看你能理解多少了。如果你不能理解,说明你对面向对象程序设计还很陌生,那我还是建议你从更简单的练习做起,多多体会。
学习一下如何step by step:
1。简单的象棋游戏,就是一个窗体(这个你得会创建一个新窗体吧!),然后在里面画上棋盘,棋子就可以了。
2。棋盘吗,就是个背景,找张图片贴近来也好,自己控制GDI+函数话也好(就是重写窗体的绘图函数:protected override void OnPaint(PaintEventArgs e) , 参数e.Graphics来划线阿什么的)。你得了解这个窗体客户区的坐标,以窗体总长宽作为整体,划分为9*8=72部分作为棋子的落脚点,每个部分的中央点就是你划线所要连接起来成为棋盘线的。就算你直接贴图,也得把这9*8矩阵(就是一个二维数组了)的信息记好。建议创建一个“落脚点“对象,比如StandPoint这样的东西。
3。棋子吗,定义一个对象好了,比如Chess。棋子得有一些数据,棋子是什么棋子阿,属于哪一方的阿,活的还是死的阿,活的活在棋盘上的哪个StandPoint上啊,等等。棋子还得有一些方法,比如要把自己画出来啊,一个马得帖一个马的图片上来啊,一个马从当前StandPoint可以到下一个StandPoint,规则是什么啊(简单说就是x,y坐标的变换:一共有8种情形了,先x++,然后x++并且y++,或者可以x++,然后x++并且y--;或者先x--,然后x--并且y--。。。等等你自己总结,不过当下标溢出(超出棋盘边界)或者第一步行动的格子有棋子(就是俗称拌马腿啊),那就不能移动)
4。一个游戏,要有一个“一盘棋”的概念。定义一个“GamePlay"好了,要包含一些数据:当前轮到谁了,谁胜谁负了,等等。
5。走棋怎么走?定义个Selector对象,每次鼠标产生一次MouseClick事件,就判断坐标,查询当前所有活着的棋子Chess对象,谁包含了这个坐标点,如果找到这样一个Chess,就生成一个Selector,然后再点一次鼠标的时候,看看落点是什么,如果是自己方的棋子,重新生成selector,否则就让当前selector指导该棋子走向下一个位子,前提是要符合这个棋子本身所包含的rule属性。
好了,讲的抽不抽象看你能理解多少了。如果你不能理解,说明你对面向对象程序设计还很陌生,那我还是建议你从更简单的练习做起,多多体会。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询