用图形编程编写棋类游戏

图形编程简介

图形编程编辑器是自己疫情时候给孩子学习编程写的类似于scratch一样的图形化编程软件,使用鼠标拖放代码块完成编程,学习各种编程知识。和scratch等给予blockly的图形编程不同,这个软件支持所有的代码语法,包括变量(作用域和类型,局部和全局变量)、所有运算符、逻辑、循环、循环跳转、函数(参数、返回值和递归)、多线程、模块化编程和面向对象编程,同时也提供了很多有趣的类库,比如画图、语音、文件系统、时间日期、制作scratch游戏等,也支持一些硬件,目前实现了EV3和Arduino的控制。

图形化编程

使用图形编程编写游戏

和scratch类似,这个图形编辑器也支持使用精灵Sprite显示角色,但是要通过代码创建和控制精灵,同时scratch每个精灵都有一个单独线程执行,但是在这个图形编辑器种,需要自己控制线程,这样更加符合代码编程,让孩子更加容易理解代码运行方式。

这个编辑器也支持绘图,把绘图和scratch游戏加在一起,这样就能制作更加复杂的游戏。比如对于棋类游戏,可以使用绘图绘制棋盘,每个棋子作为一个精灵,将精灵放在数组中,精灵的控制和使用会变得简单,这样就能制作一些scratch无法制作的复杂游戏,比如棋类游戏。

我也使用了这个图形编辑器程序编写了各种游戏,比如猫捉老鼠、五子棋、围棋和国际象棋。

国际象棋编写方法

国际象棋有黑白双方,每方6种棋子,共16个棋子,由于每种棋子都有自己走法和规则,比如兵升级、王车移位等。因此,使用面向对象编程,可以简化,避免复杂的逻辑语句判断和每种棋子的复杂逻辑,让程序变得非常简介。

国际象棋的抽象

我们首先对棋子进行抽象,找出其共有的属性和方法,每个棋子都有棋子的颜色,类型、位置等属性,对于棋子的操作都有移动、被吃子,不同的棋子还需要方法,判断棋子是否可以移动到具体的位置,这个方法每个棋子都需要每种棋子具体实现。下棋过程种,用户选择棋子,并且点击要移动到的格子,程序会调用棋子的canMove方法,判断是否可以移动,只有这个方法返回true,这样就调用move方法移动到该位置,并且吃掉该位子的对方棋子

各个棋子的实现

每种棋子都需要继承棋子基类,并且实现判断是否可以移动到位置的方法,如果走子后又特殊操作,比如王车易位或者士兵升级等特殊操作,也要重载棋子移动方法。然后实现所有种类的棋子,包括车、马、象、后、王、兵。下边代码只实现王和象简单的移动,没有判断移动后产生的其他问题,比如“送王”问题、王车易位等。

后的实现:

车的实现:

马的实现:

象的实现:

王的实现:

兵的实现:

全部代码

全部代码如下,只实现了各个棋子的走法和吃子,没有实现将军的检查和其他规则,比如网车移位,小兵生变等。

该图形编程编写的国际象棋游戏,已经上传到csdn,可以点击下载,同可以下载支持对战的国际象棋,也可以从微软市场中下载“图形编程编辑器”,例子里有各种棋类游戏

更多推荐

用图形编程编写国际象棋游戏