欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

请问一个俄罗斯方块的例题

更新时间: 2014-01-05 02:40:45 责任编辑: Author_N1

 

请教一个俄罗斯方块的例题。
 我在CSDN上下的一个例子,地址是:http://download.csdn.net/source/1473831
可是没有注释,看起来很吃力。很多地方不理解思路。越看越乱。网上找的相应文档太笼统了。帮不上什么忙。
请问有知道这个例子的朋友,能指点下。如果有详细的注释说明,也请告诉我下。

比如:

#ifndef BLOCK_H
#define BLOCK_H

#include <e32std.h>

class TBlock
{
public:
  TBlock() :iType(0), iRot(0) {}
  static int BlockCount();
  static TBlock Block(int id);
  static TBlock RandomBlock(TInt64 &seed);

  void Rotate(int dir);
  TInt8 RowMask(int nr) const;
  TInt8 Color() const;
protected:
  TBlock(int aType, int aRot) :iType(aType), iRot(aRot) { }
private:
  TInt8 iType;
  TInt8 iRot; 
};

#endif
//////////////////////////////////////////
const int numBlocks=7;
const TUint16 bl_types[4][numBlocks]=
//  ####     ###      ###     ##     ##      ##      ###
//             #      #      ##       ##     ##       #
  {{0x4444, 0x0e20, 0x0740, 0x06c0, 0x0c60, 0x6600, 0xe400},
   {0x0f00, 0x0644, 0x4460, 0x4620, 0x2640, 0x6600, 0x8c80},
   {0x4444, 0x0470, 0x02e0, 0x06c0, 0x0c60, 0x6600, 0x04e0},
   {0x0f00, 0x2260, 0x0622, 0x4620, 0x2640, 0x6600, 0x2620},
  };

TInt8 TBlock::RowMask(int nr) const
{
  return (bl_types[iRot][iType]>>(4*nr))&0xf;//<------------  这是要做什么?
}

/////////////////////////////////////////////////////////////////////////////

bool TGrid::DoesCollide(const TBlock &b, const TPoint &p) const
{
  int i;
  for (i=p.iY; i<p.iY+4; i++)
  {
    if (i<0)
    {
      if ((static_cast<TUint32>(b.RowMask(i-p.iY))<<(12-p.iX))&0xf003f)//《------------------这里又是做什么,为什么这么做?
        return true;
    } else
    if (i>=KGridY)
    {
      if (b.RowMask(i-p.iY)) return true;
    } else
    {
      if (iMask[i]&(b.RowMask(i-p.iY)<<(12-p.iX))) return true;
      if (p.iX<0 && ((b.RowMask(i-p.iY)>>(4+p.iX)))) return true;
    }
  }
  return false;
}


等等~~
此类问题很多。 求帮忙。
------最佳解决方案--------------------
其实是把地图压缩存储了,你用最简单的方法,不压缩就行了。展开后你就看懂了。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:40:45
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/13064/
本文WWW.DOC100.NET DOC100.NET版权所有。