游戏之家 > 游戏库

核心玩法是什么?

游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷。

在判断出不是雷的方块上按下左键,可以打开该方块。如果方块上出现数字,则该数字表示其周围3×3区域中的地雷数(一般为8个格子,对于边块为5个格子,对于角块为3个格子。所以扫雷中最大的数字为8);如果方块上为空(相当于0),则可以递归地打开与空相邻的方块;如果不幸触雷,则游戏结束。

在判断为地雷的方块上按下右键,可以标记地雷(显示为小红旗)。重复一次或两次操作可取消标记(如果在游戏菜单中勾选了“标记(?)”,则需要两次操作来取消标雷)。

同时按下左键和右键完成双击。当双击位置周围已标记雷数等于该位置数字时操作有效,相当于对该数字周围未打开的方块均进行一次左键单击操作。地雷未标记完全时使用双击无效。若数字周围有标错的地雷,则游戏结束,标错的地雷上会显示一个“ ×”


1, 随机布雷模块

在该模块中,我们要为扫雷游戏随机的布置地雷,扫雷游戏的布雷面板可以用二维int数组表示,若某位置为地雷,则该位置用数字-1表示,若该位置不是地雷,则暂时用数字0表示。我们要编写程序完成在该二维数组中随机布雷的操作,程序读入三个参数:布雷面板的行数(r),列数(c),布置的地雷数(n),且要满足要求0

以上一模块产生的随机地雷分布的二维数组为数据来源,计算该二维数组中不是地雷的位置周围的8个位置总共有多少个地雷,将这一数字存储在该位置3, 输出布雷面板:

我们要编写程序完成布雷面板的控制台输出,为了区分布雷面板中哪些位置是已经被用户排开的,哪些位置是未被排开的,我们对以上二维数组的数据定义作如下约定:

若该位置保存的数字是n,则n满足如下条件:

1) 若0<=n<=8,则表示该位置不是地雷,其周围位置的地雷数就是n,且该位置未被用户排开。

2) 若10<=n<=18,则表示该位置不是地雷,其周围位置的地雷数就是n,且该位置已经被用户排开。

3) 若n==-1,则表示该位置是地雷,并且未被用户标记。

4, 用户排雷程序模块

完成以上两个模块后,用户可以完成排雷的操作,我们要编写一个程序来支持用户通过控制台来排除地雷,用户可以在控制台输入坐标位置,来表示排除该位置是地雷。当用户输入坐标位置后,程序需要执行如下操作:

1) 若该坐标位置是地雷(值为-1),则,程序结束,用户排雷失败。

@亚历山大谨慎

2) 若该坐标位置存储的数字是大于0小于等于8的整数(该位置不是地雷,该位置周围地雷数等于该数字,该位置未被用户排开),则将该位置排开(并将该位置的数字 10,表示该位置已经排开),然后重新输出一遍布雷面板。

3) 若该坐标位置存储的数字是大于等于10小于等于18的整数(该位置不是地雷,该位置已经被排开),则输出错误信息,请用户重新输入。

4) 若该坐标位置存储的数字等于0(该位置不是地雷,该位置周围的8个位置也没有地雷,该位置还未被用户排开),则找该位置的周围8个位置,将其排开,排开时递归的执行排雷程序模块的操作。


1, 随机布雷模块

在该模块中,我们要为扫雷游戏随机的布置地雷,扫雷游戏的布雷面板可以用二维int数组表示,若某位置为地雷,则该位置用数字-1表示,若该位置不是地雷,则暂时用数字0表示。我们要编写程序完成在该二维数组中随机布雷的操作,程序读入三个参数:布雷面板的行数(r),列数(c),布置的地雷数(n),且要满足要求0

以上一模块产生的随机地雷分布的二维数组为数据来源,计算该二维数组中不是地雷的位置周围的8个位置总共有多少个地雷,将这一数字存储在该位置3, 输出布雷面板:

我们要编写程序完成布雷面板的控制台输出,为了区分布雷面板中哪些位置是已经被用户排开的,哪些位置是未被排开的,我们对以上二维数组的数据定义作如下约定:

若该位置保存的数字是n,则n满足如下条件:

1) 若0<=n<=8,则表示该位置不是地雷,其周围位置的地雷数就是n,且该位置未被用户排开。

2) 若10<=n<=18,则表示该位置不是地雷,其周围位置的地雷数就是n,且该位置已经被用户排开。

3) 若n==-1,则表示该位置是地雷,并且未被用户标记。

4, 用户排雷程序模块

完成以上两个模块后,用户可以完成排雷的操作,我们要编写一个程序来支持用户通过控制台来排除地雷,用户可以在控制台输入坐标位置,来表示排除该位置是地雷。当用户输入坐标位置后,程序需要执行如下操作:

1) 若该坐标位置是地雷(值为-1),则,程序结束,用户排雷失败。

@亚历山大谨慎

2) 若该坐标位置存储的数字是大于0小于等于8的整数(该位置不是地雷,该位置周围地雷数等于该数字,该位置未被用户排开),则将该位置排开(并将该位置的数字 10,表示该位置已经排开),然后重新输出一遍布雷面板。

3) 若该坐标位置存储的数字是大于等于10小于等于18的整数(该位置不是地雷,该位置已经被排开),则输出错误信息,请用户重新输入。

4) 若该坐标位置存储的数字等于0(该位置不是地雷,该位置周围的8个位置也没有地雷,该位置还未被用户排开),则找该位置的周围8个位置,将其排开,排开时递归的执行排雷程序模块的操作。