完整版C语言贪吃蛇设计思路和代码详解.docVIP

完整版C语言贪吃蛇设计思路和代码详解.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
完整版C语言贪吃蛇设计思路和代码详解

到了本章,你已经学完了大部分C语言的基础知识,详细讲解贪吃蛇代码的条件就具备了。 本教程教你编写的贪吃蛇不依赖TC环境,不依赖任何第三方库,可以在VC 6.0、VS等常见IDE中编译通过,请看下图: 更多效果图请查看:游戏初始化、游戏进行中、游戏结束。 请大家先把贪吃蛇的源码下载下来浏览一下,我们再具体分析,这样将会有更好的效果。 贪吃蛇源代码下载:/s/1bnwJB8V 提取密码:81qm 贪吃蛇设计思路 上图中的红色空心方框(□)表示边框,是贪吃蛇的边界,贪吃蛇不能碰到它,否则就“死掉”,游戏结束。绿色实心方框(■)表示贪吃蛇的活动范围,贪吃蛇可以自由移动,食物(苹果)也会随机出现在这个区域。我们不妨将贪吃蛇的活动范围称为“贪吃蛇地图”,而加上边框就称为“全局地图”。 我们需要记录地图中每一个节点的信息,包括: 位置:也就是第几行几列; 类型:这个节点出现的是贪吃蛇、食物、边框,还是什么都没有(绿色的背景)。 索引:也就是数组下标,稍后会说明是什么意思。 所以需要定义一个结构体二维数组: struct char type; int index; globalMap[MAXWIDTH][MAXHEIGHT]; 用一维下标和二维下标表示位置;用 type 表示类型,不同的类型用不同的数字代表;用 index 表示索引。 直观上讲,应该将 type 定义为int类型,不过int占用四个字节,而节点类型的取值范围非常有限,一个字节就足够了,所以为了节省内存才定义为char类型。 同时,再建立一个足够大的一维数组,让贪吃蛇在数组内活动: struct int x; int y; snakeMap[ MAXWIDTH-2 * MAXHEIGHT-2 ] x、y 表示行和列,也就是 globalMap 数组的两个下标。globalMap 数组中的索引 index 就是 snakeMap 数组的下标。 globalMap 表示了所有节点的信息,而 snakeMap 只表示了贪吃蛇的活动区域。通过 snakeMap 可以定位 globalMap 中的元素,反过来通过 globalMap 也可以找到 snakeMap 中的元素。请看下图: 图1:globalMap 和 snakeMap 的初始对应关系 贪吃蛇向左移动时,headerIndex 指向 404,tailIndex指向 406。 为什么设计的这么晦涩和复杂呢?因为这样设计有以下几个好处: 贪吃蛇移动时不用处理所有节点,只要添加蛇头、删除蛇尾、重建 globalMap 和 snakeMap 的对应关系就可以; 随机生成食物一次就可以成功,不用担心食物会占用边框或贪吃蛇的位置; 贪吃蛇移动时,不用遍历数组就可以知道是否与自身相撞。 这些优点,如果你自己尝试过其他方案就会深有体会。 12114注册

文档评论(0)

haocen + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档