1、 1 人工智能人工智能 projectproject 报告报告 目录目录 1自动扫雷自动扫雷3 需求分析3 游戏规则3 扫雷游戏设计3 自动扫雷设计5 用户手册5 运行结果6 结论7 主要算法代码7 2 1 自动扫雷自动扫雷 1问题描述、需求分析 扫雷是 Windows 操作系统自带的桌面小游戏之一,由于其规则简单,长期 以来一直受到电脑用户的欢迎。 自动扫雷是开始扫雷后根据扫雷规则利用计算机 进行扫雷。 开始棋局,单击第一个按钮,因为执行第一个动作时所有按钮是雷 的概率都相等,为了方便起见每次开局后都按下第一个按钮,如果不幸第一个按 钮就是雷,那么单击-开始-重新开局。 2.游戏规则 游戏界
2、面如下图所示,游戏区域是由M X N个格子组成的“雷区” ,左上方 的数字显示雷区中未被标出的地雷的个数, 右上方的数字显示用户从第一次点击 开始所用的时间,单位是秒。中间的图标指示游戏的状态(完成:笑脸;失败: 哭脸)。用户需要通过鼠标操作来确定雷区中所有地雷的位置: 左键单击:尝试某个格子是否有 地雷。如果该格子下有地雷,则游戏 失败如果该格子下没有地雷但其周 围八个格子下有地雷,该格子会显示 其周围八个格子中地雷的个数;如果 该格子下没有地雷且其周围八个格子 下也没有地雷,则此处被挖开。右键 单击:改变某个格子是否有雷的标志 (工)。或左右键同时单击:当该格子 周围已标地雷的个数与格子中
3、的数字 相同时,则挖开周围的其余格子。当 提示该格子周围已标地雷的个数少于 格子; 3.扫雷游戏设计 每个格子有如下几种状态: MS_NORMAL,MS_OPEN,MS_FLAG,MS_QUEST,MS_EXPLODE MINESTATUS 1)格子类 共有变量如下: MINESTATUS m_nStatus;/格子状态 int m_nMineNum;/格子周围的雷数,即格子上显示的数字 CWnd *m_pParent;/父窗口 int m_nX,m_nY; /按下按钮的横纵坐标 成员函数 3 SetStatus(MINESTATUS nStatus)/设置状态 GetStatus()/获取状态 SetMineNum(int nMineNum)/设置雷数 GetMineNum() /获取雷数 DrawItem(BOOL bFail=TRUE);/绘制格子 2)布雷类 共有变量如下 int m_nRow,m_nCol;/棋盘有多少行多少列 int m_nMineNum; /棋盘上的雷数 int m_nX,m_nY; /棋盘的位置 int m_nOldMine; int m_aMineTest9; int m_nMineTest; CMineButton *m_aLandMine10000; /棋盘 CWnd *m_pParent; 成员