一、控制类的分析
现在基本的设置完成了。接下来就是需要自己写了。感觉有点无从下手。但是我想也许可以顺着下棋的过程来写。
1、下棋过程
玩家(代表红方),电脑(代表蓝方)。
(1)玩家:点击想移动的棋子,将其放置于可以放置的位置。
(2)电脑:根据玩家棋子的摆放位置,选择己方需要移动的棋子以及摆放的位置。
(3)玩家和电脑:判断输赢。(自然准备以棋子被吃光为条件)
2、功能分析与实现
2.1 玩家角度分析
图2-1
2.1 .1:
分析:我希望玩家能够在点击红色图片的时候图片放大,让玩家能够知道当前控制的棋子是哪颗。(效果如图2-1)
思路:新建一张放大了的红色图片精灵,放置于被点击的位置。
2.1.2:
分析:点击的红色图片放大之后,其也能提示该位置该对象下一步可达的位置。(效果如图2-1)
思路:程序初始化的时候,初始化四张“提示图片精灵”。当发现结点有可达临结点时,则将其移动到对应位置。
2.1.3:
分析:点击图2-1可达位置(黄色部分),其棋子移动到该可达位置。
思路:定义一个结构体,该结构体存储两次点击的数据。从而实现数据和图片的交换。结构体定义暂时如下:
/*存储点击的点的相关数据*/
typedef struct _TouchedInfo
{
int firstToucheLocation; //第一次点击时在坐标数组中对应的位置(-1表示空白, 1-21表示对应的坐标下标点)
int currentActiveChessmanCount; //当前活动的棋子数量,0或者1。当双数次有效点击自然为0,单数次有效点击自然为1。
int secondToucheLocation; //第二次点击时的位置(-1表示点击空白,0表示点击当前活动的棋子,1-21表示点击活动棋子要跳达的位置)
_TouchedInfo()
{
firstToucheLocation = -1;
currentActiveChessmanCount = 0;
secondToucheLocation = -1; //默认点击都是空白位置
}
};
2.2 电脑角度分析
2.2.1:
分析:对于电脑,其需要分析出走哪步。自然是枚举所有己方棋子,然后根据枚举的棋子选择一个方向下到某位置。而在这个问题的处理上,暂时实在想不到好的解决办法。所以先实现前面的先,到最后再去处理有关其智能移动的问题。
下一篇则实现其点击的一些效果。