3.具体设计过程
3.1设计思路
程序界面应是一个二维平面图,所以数据的表示用二维数组,数组两个下标可以表示棋盘上的位置,数组元素的值代表棋格中的状态,共有三种情况,分别是空格、黑棋和白棋。这样给数组元素的取值设定为0、1、2,其中0代表空格,*代表白色棋子,0代表黑色棋子。这样程序的主要工作是接收棋手按键操作,一旦接收到回车键,说明棋手摆子,先判断是不是有效位置,也就是能不能包围住对方棋子,如果能,便为棋子所在的位置往上下、左右、左上、左下、右上、右下8个方向寻找被包围住的所有棋子(必须是连续的,中间不能有空格),将这些被包围住的对方棋子都变成自己的棋子,然后对当前棋盘中的黑白棋个数进行统计并输出结果。如果没有这样的位置可以落子,则停步,让对方走棋,重复上述步骤,直到游戏结束。
3.2程序设计流程图
系统功能流程图,首先我们先初始化系统功能,定义各项函数,并初始化一些参数变量。然后绘制棋盘。然后按enter键进行游戏,当我们输入一个横纵坐标时,系统会判断此坐标是否合法,若合法则落子,并翻转相应的棋子。最终判断双方的胜负情况。如图3.1所示:
8
开 始 初始化系统功能 画出棋盘 按键操作 按键是否 为回车键? 是 否 是否为有效位置? 否 是 落 棋 变成自己的棋子 统计黑白棋个数,输出成绩。 输出胜利者信息 关闭图形系统 结 束 游 戏 图3.1 程序整体流程图
9
图3.2为下棋流程图。首先我们进入游戏,然后由玩家先落子。先判断落子位置是否已经有棋子了,若有则重新输入。若没有,再判断是否能够引起棋子的翻转,若可以则落子,将对方的棋子变成自己的棋子,反之换由对方下子。当一方走完之后,换另一方走。如下图所示:
是 玩家走棋 开始
落子位置是否有棋子 否 否 是 落棋 变为自己的我棋,得分 换电脑走棋 结束 是否引起棋盘变化
图3.2 人机对战模块流程图 10 图3.3为成绩运行流程图,当棋盘上的每一个格子都有棋子的时候,系统将遍历棋盘,然后根据棋盘上棋子的花色分别代表的是哪一方,在哪一方的成绩上+1.遍历完后,判断双方分数的大小,并输出结果。如下图所示:
开始 输出初始成绩 If[i][j]==0 否 否 是 If[i][j]==* 是 玩家score+1 电脑score+1 否 玩家score>电脑score 是 玩家赢 电脑赢 图3.3 成绩输出模块程序流程图 11

