《五子棋游戏编程》PPT课件.ppt

上传人:w****2 文档编号:6225890 上传时间:2020-02-20 格式:PPT 页数:11 大小:210KB
返回 下载 相关 举报
《五子棋游戏编程》PPT课件.ppt_第1页
第1页 / 共11页
《五子棋游戏编程》PPT课件.ppt_第2页
第2页 / 共11页
《五子棋游戏编程》PPT课件.ppt_第3页
第3页 / 共11页
点击查看更多>>
资源描述
五子棋游戏 娱乐是人类不可或缺的生活内容 从最初的纸牌 到近代的麻将 到电视时代的任天堂 再到网络时代的3D场景游戏 都蕴含着人类智慧的结晶 本章以五子棋游戏为主线 讲解棋牌游戏的入门程序设计方法 本章的主要内容如下 棋牌游戏的种类和发展阶段 读者将概要性地了解棋牌游戏的现状和发展情况 五子棋游戏设计 读者将学会编写五子棋游戏 并以此为基础 熟悉棋牌游戏设计的一般方法 21 1棋牌游戏种类及简介 目前在游戏软件市场上的棋牌游戏种类繁多 基本上 我们日常生活中有的 都已经有了相应的游戏软件 如QQ游戏中心 就是以真人远程棋牌游戏为主的游戏服务站 玩家通过登陆QQ信息 然后可以集中在QQ游戏中心的服务大厅里面自己寻找对手 或者自己寻找棋牌空位 然后等待别人来挑战 棋牌游戏有很多 常见的有如下几种 中国象棋 中国象棋估计是当前国内最流行的棋类游戏 跳棋 下棋双方各10个棋子 最快走到对方阵地则获胜 锄大地 纸牌游戏 QQ网络游戏大厅中使用率较高的游戏 拱猪 纸牌游戏 QQ网络游戏大厅中使用率较高的游戏 五子棋 本章将实现该游戏 黑白棋 与五子棋的棋牌类似 下棋时 可以将对方处于自己棋子中间的棋变成自己的棋子 棋盘下满后 哪方棋子多则获胜 围棋 与黑白棋 五子棋的棋牌类似 21 2五子棋游戏开发的基础和概要设计 开发一个五子棋游戏需要从两方面入手 一是游戏规则 二是技术 其实任何软件开发都是这两大类 只是前者不叫做游戏规则 而叫做 业务流程 而技术则是涉及到该项目的一些算法 运行平台 数据库设计等 21 2 1游戏规则和效果 相信大多数读者已经玩过五子棋 当然也有少数读者没有玩过 为了使游戏开发更具有逻辑性 在此将介绍一下五子棋的规则 1 棋盘为方格状 玩家有2位 分别可以下黑棋和白棋 棋子放置在方格中央 2 玩家不能连续下棋 必须黑白两家轮流下 3 当方格棋盘中 如果横向 纵向或斜向有5个连续的同颜色棋子 则表示该颜色棋子玩家获胜 4 当棋盘格子全部填满 而没有任何玩家获胜 表示该盘棋平局 如图21 1所示 21 2 2技术难点的解决方案 五子棋游戏的规则比较简单 这里的技术难点主要在于设计和实现 玩家设计 用鼠标的左键和右键来区分两个玩家 棋盘设计 可以使用图形对象绘制棋盘 下棋控制 使用鼠标消息处理函数来完成 如可以编写鼠标右键消息为放置黑色棋子 反之 左键则放置白色棋子 放置棋子的绘制 通过判断鼠标单击的坐标 看是否在某个各自区域内 如果在各自区域内 则以该格子中点为棋子的中点 绘制一个棋子 判断下棋顺序 可以通过标志变量来记录 如左键单击 则标志变量变为0 右键单击 则标志变量变为1 同时 当左键需要单击时 判断当前的标志变量是否为1 如果是 则说明右键刚刚下棋 现在的确是轮到左键下棋 下棋后标志变量变为0 反之亦然 判断输赢 当横向 纵向或斜向有5个连续的棋子时 该方获得胜利 此时 应该使用方格的状态标记来记录该方格放置的是什么颜色的棋子 如可以使用二维状态数组或二维向量来记录棋子颜色 如二维数组a 3 5 的值为1 则可以表示在 3 5 坐标处是黑色棋子 如果值为2 则表示该坐标处放置的是白色棋子 如果为0 则为空白格子 即没有放置任何棋子 下棋其他约束 如在棋盘中已经被占用的格子是不能再下棋了 这个可以使用二维格子的状态数组来表示 0则表示该格子是空的 可以放置 否则不能放置 21 3游戏项目的开发过程 在软件工程项目中 一般不提倡在不清楚整体架构和概要设计前就动手进行编程 太早着手代码编写只能增加返工次数 最常使用的方式是模块化分析 根据项目的特点 将不相关的功能分块分阶段进行实现 正式开始编写游戏项目之前 需要先了解一下大致流程 如图21 2所示 21 3 1创建程序和棋盘设计 本节将创建单文档应用程序 并在视图区域将五子棋的棋盘绘制出来 考虑到棋盘可以在一个视图界面中实现 因此创建一个单文档应用程序会将问题最小化 然后在视图界面作为棋盘 用鼠标作为下棋的工具即可 创建程序和前文的实例基本一样 如下 21 3 2放置棋子的功能开发 按照前文的规划 棋子使用鼠标的左键和右键 分别用这两个鼠标键来表示下棋的双方 来进行单击下棋 即是当用户单击左键时 下黑色棋子 用户单击右键时 下白色棋子 因此 必须为鼠标添加鼠标左键和右键单击的鼠标消息处理函数 步骤如下 21 3 3下棋约束功能 鉴于前文所述的3个缺点 本节将解决其中的两个缺点 没有遵守黑白双方轮流下棋的规则 同一个格子可以反复放置棋子 另外一个是判断输赢的缺陷 这个功能虽然不复杂 但代码量比较多 将在下一节进行处理 下棋规则是 1 双方一定要轮流下棋 2 已经下棋的格子不能再放置棋子 学会这些游戏规则后 才考虑怎么去赢对方 编程也一样 也应该按照这个思路出发去完成程序设计 21 3 4游戏获胜决断的开发 该功能是棋牌游戏中较难的功能 不过读者不用担心 其实算法并不难 只是实际编写要细心 本节也会详细将这些细节介绍到位 游戏规则是这样的 如某一方 黑棋或白棋 在同一行 同一列或同一斜线上具有连续5个同色的棋子 则该颜色棋子的那方就取得胜利 因此 可以使用一个整形二维数组来记录当前棋局的情况 二维数组的值定义如下 0 表示该位置没有棋子 1 表示该位置已经放置了黑色棋子 2 表示该位置已经放置了白色棋子 因此 现在考虑的问题有两个 问题1 要在下每个棋后 将数组变量对应位置的数组元素值做改变 变为 1 或 2 这个很容易实现 只需在鼠标消息处理函数中调用Location 函数后改变数组元素值即可 问题2 下每个棋后 判断在这个棋子同一行 同一列或同一斜线上是否具有连续5个同色的棋子 如果有 则宣布该方胜利 并退出游戏 如果没有则继续游戏 轮到对方下棋 21 4小结 本章作为一个综合性的游戏项目设计 虽然没有涉及到新的知识 但作为综合性的例子 成功完成实例的开发还需要一定的经验和耐心 建议读者独立完成该项目 以体验自己本书的学习效果 本章涉及的知识点并且要求读者掌握的主要有 鼠标消息处理函数 读者应该掌握鼠标消息处理函数的添加已经鼠标消息处理函数的参数的意义 分模块实现较复杂的程序设计 读者应该养成分模块来进行程序设计的良好习惯 对弈游戏算法 读者应该领悟对弈游戏的令牌变量的意义 下棋规则等相应的程序设计以及输赢判断的基本实施思路
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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