13编写推箱子游戏程序八.pdfVIP

  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文档。上传文档
查看更多
编写推箱子 程序(七)之续篇 ——解决搬运工和箱子无法移动的问题 本文目标 《编写推箱子 程序(七)》一文中,我们实现了绘制 局面的功能,如图1 所示。 但是,搬运工和箱子都不能移动了。本文的目标是解决搬运工/箱子不能移动这一问题。另 一个目标是实现防止搬运工和箱子走到墙上的功能。 要强调的是,为了简化问题,我们假定 局面中只有一个箱子和一枚 。以后我们 将增加箱子和 的数目。 图1 推箱子 局面示例 实现思路和步骤 我们按以下步骤来完成任务: 1. 首先解决搬运工无法移动问题(不考虑推箱子移动的情形)。 a) 分析造成搬运工无法移动的原因。 b) 给出解决搬运工无法移动问题的对策。 2. 接下解决箱子无法移动的问题。 a) 分析造成箱子无法移动的原因。 b) 给出解决箱子无法移动问题的对策。 3. 实现防止搬运工和箱子走到墙上的功能。 解决搬运工无法移动问题 造成搬运工无法移动的原因 造成搬运工无法移动的原因在于: 1. 用来记住搬运工位置(即搬运工所在单元格行号和列号)的成员变量 mManRow, mManColumn 的初始值没有设对。 2. 没有实施下面这一任务:搬运工移动后,要修改表示 局面的二维矩阵的内容。 下面具体解释上述两个原因。 对于第一个原因,让我们回顾“编写推箱子 程序(五)”一文。该文中,mManRow, mManColumn 都被初始化为 0 (“编写推箱子 程序(六)”一文照搬了这一点)。这 使得搬运工出现在网格的左上角(第 1 行第 1 列)。在“编写推箱子 程序(五)”一 文 : 变量mManRow 和mManColumn 是GameView 类的成员变量,定义如下: private int mManRow = 0; private int mManColumn = 0; 但是,“编写推箱子 程序(七)”一文中使用了关卡开局数据(一个二维矩阵), 并根据开局来绘制 局面。这使得:(1)搬运工不在左上角。如图1 所示,在这一关中, 搬运工的初始位置是第8 行第6 列。(2)不同关卡的开局中,搬运工的初始位置是不同的。 如果你不根据开局设置搬运工的初始位置,那么它的初始位置就是左上角(0,0 ),即 mManRow=0, mManColumn=0。这与搬运工在开局的位置不一致。因此,任你在搬运工的 上(下、左、右)方触摸屏幕,搬运工都 走动。这是因为,判别你触摸的位置是否在搬 运工的上(下、左、右)方的方法,比如touch_up_to_man 返回true 值。 对于第二个原因,让我们回顾“编写推箱子 程序(七)”一文。该文中,绘制 局面是根据表示 局面的二维矩阵进行的。实现绘制 局面的方法是 drawGam () 。这意味着,不是根据搬运工的位置(mManRow, mManColumn)来绘 制搬运工。显然,如果搬运工移动了,mManRow 和mManColumn 的值更改了,但没有修 改表示 局面的二维矩阵的内容,在界面上也 看到搬运工位置的变化。 解决搬运工无法移动问题的对策 如何解决搬运工无法移动问题?解决办法是: 1. 根据开局正确设置搬运工的起始位置。 2. 搬运工走动时,修改受影响单元格对应的矩阵元素的值。 第1 条办法的具体做法是:扫描表示开局的二维矩阵,得出搬运工的初始位置(记作(r0, c0) ),把mManRow 的初值设置为r0,把mManColumn 的初值设置为c0 。 下面用get_gongren_chushi_weizhi 这个方法来实现上述功能。这个方法的代码如表1 所示。 表1 求搬运工初始位置的方法 com.yescorp.moveboxgame.GameView.java 1 //根据 开局初始化搬运工

文档评论(0)

136****1820 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档