告诉学生们与玩家和计算机所做的移动有关的信息可以存储在名为A的3×3的数组中。3×3数组中的每个元素将表示战场中的方格,如下图所示。
A[0, 0] |
A[0, 1] |
A[0, 2] |
A[1, 0] |
A[1, 1] |
A[1, 2] |
A[2, 0] |
A[2, 1] |
A[2, 2] |
对于每个数组元素的单元格
最初,值0被存储到所有数组元素中。当玩家把炸弹放到单元格内时,对应于此单元格的数组元素中的值更改为1。当计算机把炸弹埋设到单元格内时,对应于此单元格的数组元素中的值更改为-1。
如果以下任一为true,则计算机将赢得游戏:
n A[0,0] + A[0, 1] + A[0, 2] = -3
n A[1,0] + A[1, 1] + A[1, 2] = -3
n A[2,0] + A[2, 1] + A[2, 2] = -3
n A[0,0] + A[1, 0] + A[2, 0] = -3
n A[0,1] + A[1, 1] + A[2, 1] = -3
n A[0,2] + A[1, 2] + A[2, 2] = -3
n A[0,0] + A[1, 1] + A[2, 2] = -3
n A[0,2] + A[1, 1] + A[2, 0] = -3
如果以下任一为true,则玩家将赢得游戏:
n A[0,0] + A[0, 1] + A[0, 2] = 3
n A[1,0] + A[1, 1] + A[1, 2] = 3
n A[2,0] + A[2, 1] + A[2, 2] = 3
n A[0,0] + A[1, 0] + A[2, 0] = 3
n A[0,1] + A[1, 1] + A[2, 1] = 3
n A[0,2] + A[1, 2] + A[2, 2] = 3
n A[0, 0]+ A[1, 1] + A[2, 2] = 3
n A[0,2] + A[1, 1] + A[2, 0] = 3
计算机将作为游戏中的另一个玩家。学生们需要编写计算机动作的逻辑。计算机会在玩家赢得游戏之前为其设立有难度的挑战。
为计算机的移动编写代码时,必须考虑以下要点:
n 首先计算机应检查它是否可通过将炸弹埋设到任意可用单元格内时赢得游戏。为此您可以检查任意行、列和对角线的单元格之和是-2。如果对于任意行、列或对角线,此条件为true,则意味着此行、列或对角线已经包含了计算机放置的两个炸弹,还包含空白的单元格。计算机可以填满此空白单元格赢得游戏。
n 如果计算机通过将炸弹放到任一空白单元格内不会赢得游戏,计算机应检查这些,阻止玩家赢得游戏。为此您可以检查任意行、列和对角线的单元格之和是2。如果对于任意行、列或对角线,此条件为true,则意味着此行、列或对角线已经包含了玩家放置的两个炸弹,还包含空白的单元格。玩家可以填满此空白单元格赢得游戏。因此,计算机应填满此单元格,阻止玩家赢得游戏。
n 如果以上两个条件都不是true,则计算机可以随机选择一个单元格并在那里放置炸弹。
为了生成随机数,可使用以下代码:
Random ran= new Random();
num =ran.Next(0,2); //0 is included in therange, 2 is excluded
以下是滑铁卢战役的最初屏幕的界面设计。
以下是游戏板的界面设计。
以下是积分板的界面设计。
这组将用12个小时(每个学生)来完成项目。在此期间,他们需要:
n 分析用例研究并明确这些要求
n 设计游戏的界面
n 开发游戏所用的基本逻辑
n 实现开发的逻辑
n 开发游戏
n 开发帮助系统并将其集成到项目中
n 打包完整的解决方案
- 顶
- 0
- 踩
- 0