第21章 五子棋游戏.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第21章 五子棋游戏 娱乐是人类不可或缺的生活内容,从最初的纸牌,到近代的麻将,到电视时代的任天堂,再到网络时代的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 游戏项目的开发过程 【本小节示例参考:\源代码\C21\Fivechess】 在软件工程项目中,一般不提倡在不清楚整体架构和概要设计前就动手进行编程,太早着手代码编写只能增加返工次数。最常使用的方式是模块化分析,根据项目的特点,将不相关的功能分块分阶段进行实现。正式开始编写游戏项目之前,需要先了解一下大致流程,如图21.2所示。 21.3.1 创建程序和棋盘设计 本节将创建单文档应用程序,并在视图区域将五子棋的棋盘绘制出来。考虑到棋盘可以在一个视图界面中实现,因此创建一个单文档应用程序会将问题最小化,然后在视图界面作为棋盘,用鼠标作为下棋的工具即可,创建程序和前文的实例基本一样,如下: 21.3.2 放置棋子的功能开发 按照前文的规划,棋子使用鼠标的左键和右键(分别用这两个鼠标键来表示下棋的双方)来进行单击下棋,即是当用户单击左键时,下黑色棋子,用户单击右键时,下白色棋子,因此,必须为鼠标添加鼠标左键和右键单击的鼠标消息处理函数,步骤如下: 21.3.3 下棋约束功能 鉴于前文所述的3个缺点,本节将解决其中的两个缺点: 没有遵守黑白双方轮流下棋的规则。 同一个格子可以反复放置棋子。 另外一个是判断输赢的缺陷,这个功能虽然不复杂,但代码量比较多

文档评论(0)

yyh892289 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档