案例8苹果棋游戏

上传人:wux****ua 文档编号:16210240 上传时间:2020-09-23 格式:PPT 页数:15 大小:280.31KB
返回 下载 相关 举报
案例8苹果棋游戏_第1页
第1页 / 共15页
案例8苹果棋游戏_第2页
第2页 / 共15页
案例8苹果棋游戏_第3页
第3页 / 共15页
点击查看更多>>
资源描述
Visual C+程序开发案例教学,案例8 苹果棋游戏,游戏规则,苹果棋为8横8纵,共有64个方格 黑、白二色棋子 开局黑、白棋子各二枚,交叉放置 双方各执一色,轮流下子 所下己方之子应与已有己方之子对对方某些棋子构成夹击之势(无论横、竖、斜线,没有空格) 被夹击的对方棋子则自动转换为己方棋子 棋盘所有格子均已填满,棋局结束 棋盘上棋子多的一方获胜,本案例知识点,鼠标消息的判断 棋局的判断 菜单消息 二维数组的应用,要点分析,棋盘初始化后,在屏幕上的位置是已知的,可以通过鼠标单击的位置来判断落子的位置 使用二维数组A8,8来存储落子 Ai,j=0,表示该处无子 Ai,j=-1,表示该处是黑子 Ai,j=1,表示该处是白字,要点分析,当鼠标在棋盘上左键单击后,扫描当前A数组,判断此空格是否可以下子(已有子无效,没有形成夹击无效) 记录下子位置 判断棋局,对8个可能的方向上分别进行搜索,若形成夹击的情况,则改变棋子颜色,否则无效 找不到任何落子处,游戏结束,要点分析,检查落子的8个方向,有dx和dy的不同组合来表示,dx=0 dy=-1,dx=1 dy=-1,dx=1 dy=0,dx=1 dy=1,dx=0 dy=1,dx=-1 dy=1,dx=-1 dy=0,dx=-1 dy=-1,编程要求,棋盘显示比例适当,带有各自线,棋盘颜色采用与棋子反差大的颜色(黄色和绿色) 在窗口适当位置显示提示信息 当前该哪方下棋 当前盘面情况 黑、白轮流下子,没有形成夹击,鼠标点击无效 下子正确后,能够将被夹击的子转换为己方棋子 正确判断和显示比赛结果,解题步骤,用AppWizard生成一个名为AppleChess的SDI的程序框架,均用缺省设置 编辑项目的菜单资源,在主菜单中添加一个菜单“重玩”选项,标识为ID_REPLAY,将菜单属性General选项卡中Pop-up设为非选中状态,解题步骤,利用ClassWizard为视图类添加与菜单选项相对应的成员函数,在Message Maps选项卡,选择CAppleChessView类,在Object IDs列表框选择ID_REPLAY标识,在Messages列表框中选择COMMAND,添加成员函数 void CAppleChessView:OnReplay() ,解题步骤,利用ClassWizard为视图添加鼠标单击的消息处理函数,选择CAppleChessView类,WM_LBUTTONDOWN消息,添加成员函数 void CAppleChessView:OnLButtonDown(UINT nFlags, CPoint point) ,基本框架下新增代码的作用,AppleChessView.h文件中,在前面添加一些需要的宏定义 AppleChessView.h文件中,CAppleChessView类定义中添加需要的成员变量 AppleChessView类中添加三个成员函数 void CAppleChessView:CheckNext(int i,int j, int intFlag) /作用是检查某一个方向上的棋子是否构成夹击之势,若是,可以改变棋局,吃掉对方棋子为己色,基本框架下新增代码的作用,void CAppleChessView:CheckNext(int i,int j, int intFlag) /8个方向检查在i,j处落子是否可以,只有形成夹击之势才符合落子条件,则保存m_Next数组中,统计棋子总数 BOOL CAppleChessView:FillNext() /找出下一步的所有可能棋局,至少存在一个可能的落子处,存放m_Next中 在CAppleChessView类的OnDraw函数中添加画棋盘、画棋谱、白棋、黑棋、提示输出信息等,基本框架下新增代码的作用,在CAppleChessView类的构造函数CAppleChessView:CAppleChessView() 中添加棋盘初始化代码,黑、白个2个棋,黑棋先行,输出显示的初始信息 在CAppleChessView类中添加鼠标消息响应函数void CAppleChessView:OnLButtonDown(UINT nFlags, CPoint point) 点击鼠标得到棋盘坐标,判断该单击点是否和搜索出的某一棋局相匹配,若是则刷新棋盘(显示该棋局)和显示输出信息,如果棋盘无空,则Game Over!,基本框架下新增代码的作用,在CAppleChessView类中为菜单添加消息响应函数 void CAppleChessView:OnReplay() 该函数与初始化的成员函数代码基本一样 由于程序中需要存储下一步棋局,增加了一个新类structNext,其中包括结构体成员的定义,作业,理解、调试案例 写出苹果棋案例流程框架(流程图) 写出案例理解和体会 改进发挥(棋盘颜色,棋盘大小,人机对弈、对弈规则加难,如向后搜索更多步等),
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!