吴鉴鹰单片机项目实战精讲之俄罗斯方块坐标的设计.pdfVIP

吴鉴鹰单片机项目实战精讲之俄罗斯方块坐标的设计.pdf

  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 引言 大家都知道!俄罗斯方块游戏是一个古老而著名的益智游戏。它的知名度迎来了 无数程序员青睐。旋转算法是该游戏实现的一个关键技术,现有的大多数算法都 是以数组为基本数据结构来实现方块的旋转。吴鉴鹰本文探讨了俄罗斯方块的另 一种实现方式,即尽量不用或着是少用数组的概念,而是用坐标来取代。并且重 点探讨一种算法叫做旋转算法。 2 程序基础 基块是本程序的最基本单位。程序的实现都是通过对基块的操作实现的。基块为 bs(basesize) bs 一个小正方形,其边长可设为 。而 就是本程序的粒度大小。设 正方形的中心代表整个方块。设游戏区为一个坐标区,则可通过一个坐标(X, Y)就可以来定位基块,这里的坐标就是基块的中心坐标。由于基块是正方形的, 又一般画图函数都是以左上和右下定位图形,所以换算出左上角坐标 X-1/2*bs,Y+1/2*bs X+1/2*bs,Y-1/2*bs ( )和右下角坐标( )就可以画出基块。 X Y 7 因而定义一个接受 , 值的函数就可实现基块的定位及绘图。俄罗斯方块的 类方块都可以由基块组合而成,当然开发更多更具创意的方块也就比较容易了。 下面讨论程序的两个重要概念。定义2.1 绝对坐标系为上文提到的游戏区,坐 XY 标原点和 轴方向都是固定的。它在整个游戏过程中为基块提供确切的坐标。 定义2.2 相对坐标系。它的引入是为了简化旋转算法的实现。从下文旋转算法 XY 可 ,只要将该坐标系的原点和 轴方向改变,就可实现方块的旋转。故相对 坐 XY 标系的坐标原点, 轴方向都是可以改变的。该类坐标系原点逻辑原点坐标为 O (其在程序中透明),故实现时主要使用它的实际原点坐标 (该原点在绝对坐 标系中的坐标)。现假设其实际原点坐标为 (X,Y),设在该相对坐标系内的 x,y X+x,Y+y 一点坐标为( ),则该点的绝对坐标为( )。 1 7 图 俄罗斯游戏中的 类方块 7 1 首先为了说明的方便将 类方块编号如图 所示。 图1 5 由于 号方块的旋转只有一种状态,为了提高程序效率, 将其单独分为一类。其余方块另为一类。 现在通过实现俄罗斯方块的移动来看看上述设置 是如何运作的。现假设要移动的方块为田字类型。为其建立一个相对坐标系,设 其原点实际坐标为 ,将 , 值及方块的类型传递到一个处理函数。该函数根据 坐标原点,方块类型,计算出组成该方块的四个基块的中心坐标,再将该四个坐 标分别传递给四个基块处理函数,这样便可画出该类型的方块。现将方块向右移 动。就是整个相对坐标系向右移动一个 bs 的距离,即原点实际坐标变为 X+1,Y ( ),再按刚才的方法处理就可画出移动后的方块。至于前一个方块,可 以通过设置的 NOTXOR 绘图模式,再重绘前一个方块来实现。这样 7 类方块的左移,右移,下移便可简单的实现了。下面 7 讨论 类方块的旋转算法。 3 旋转算法的实现 旋转算法是游戏实现的一个关键技术,下面就讨论 俄罗斯方块旋转算法的实现。 5 五号方块只有一种状态,所以,旋转函数收到 号 7 方块时,不需做任何处理就可退出函数。是这 类中最简单的一种类型。 其他方块的旋转要分三步,第一步,将它们所在的 90° 坐标系逆时针旋转 ,第二步,将坐标原点向右偏移 一定

文档评论(0)

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

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

1亿VIP精品文档

相关文档