亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tetrisdata.cpp

?? 俄羅斯方塊 VC++ 單機版 可雙人單機對戰(zhàn)
?? CPP
字號:
//---------------------------------------------------------------------------
#include "TetrisData.h"

//---------------------------------------------------------------------------
const TBaseTetris::TTetrisUnits TBaseTetris::BaseUnits[NumUnits] =
{
  {{{{0,0,0,0},{0,0,0,0},{1,1,1,1},{0,0,0,0}},
    {{0,0,1,0},{0,0,1,0},{0,0,1,0},{0,0,1,0}},
    {{0,0,0,0},{0,0,0,0},{1,1,1,1},{0,0,0,0}},
    {{0,0,1,0},{0,0,1,0},{0,0,1,0},{0,0,1,0}}}},
  {{{{0,0,0,0},{0,0,2,0},{0,2,2,2},{0,0,0,0}},
    {{0,0,2,0},{0,0,2,2},{0,0,2,0},{0,0,0,0}},
    {{0,0,0,0},{0,2,2,2},{0,0,2,0},{0,0,0,0}},
    {{0,0,2,0},{0,2,2,0},{0,0,2,0},{0,0,0,0}}}},
  {{{{0,0,0,0},{0,0,0,3},{0,3,3,3},{0,0,0,0}},
    {{0,0,3,0},{0,0,3,0},{0,0,3,3},{0,0,0,0}},
    {{0,0,0,0},{0,3,3,3},{0,3,0,0},{0,0,0,0}},
    {{0,3,3,0},{0,0,3,0},{0,0,3,0},{0,0,0,0}}}},
  {{{{0,0,0,0},{0,4,0,0},{0,4,4,4},{0,0,0,0}},
    {{0,0,4,4},{0,0,4,0},{0,0,4,0},{0,0,0,0}},
    {{0,0,0,0},{0,4,4,4},{0,0,0,4},{0,0,0,0}},
    {{0,0,4,0},{0,0,4,0},{0,4,4,0},{0,0,0,0}}}},
  {{{{0,0,5,0},{0,5,5,0},{0,5,0,0},{0,0,0,0}},
    {{0,0,0,0},{0,5,5,0},{0,0,5,5},{0,0,0,0}},
    {{0,0,5,0},{0,5,5,0},{0,5,0,0},{0,0,0,0}},
    {{0,0,0,0},{0,5,5,0},{0,0,5,5},{0,0,0,0}}}},
  {{{{0,0,6,0},{0,0,6,6},{0,0,0,6},{0,0,0,0}},
    {{0,0,0,0},{0,0,6,6},{0,6,6,0},{0,0,0,0}},
    {{0,0,6,0},{0,0,6,6},{0,0,0,6},{0,0,0,0}},
    {{0,0,0,0},{0,0,6,6},{0,6,6,0},{0,0,0,0}}}},
  {{{{0,0,0,0},{0,7,7,0},{0,7,7,0},{0,0,0,0}},
    {{0,0,0,0},{0,7,7,0},{0,7,7,0},{0,0,0,0}},
    {{0,0,0,0},{0,7,7,0},{0,7,7,0},{0,0,0,0}},
    {{0,0,0,0},{0,7,7,0},{0,7,7,0},{0,0,0,0}}}},
};
//---------------------------------------------------------------------------
TBaseTetris::TBaseTetris()
{
  randomize();
  Ux0 = MapXsize/2-2;
  Uy0 = -1;

  _bStarted = false;
  _bGameOver = false;

  _iRemoving = 0;
  _iScore = 0;
  _iLines = 0;

  memset(&CurrUnit,0,sizeof(TTetrisUnits));
  memset(&IncmUnit,0,sizeof(TTetrisUnits));
  memset(&DispBuffer,0,sizeof(TTetrisBuffer));
  memset(&BlockBuffer,0,sizeof(TTetrisBuffer));

  GenNewUnit();
}
//---------------------------------------------------------------------------
TBaseTetris::~TBaseTetris()
{
  //do nothing.
}
//---------------------------------------------------------------------------
int TBaseTetris::CheckUnit(int x, int y, int r)
{
  int bx,by,v=0;

  for(int i=0; i<4; i++)
   {
     by = i+y;
     for(int k=0; k<4; k++)
      {
        bx = k+x;
        if(CurrUnit.un[r][i][k])
         {
           if((bx<0)||(bx>=MapXsize)||(by>=MapYsize))
            {
              v|=2;
              return v; //illegal move
            }
           if(by>=0)
            {
              if(BlockBuffer.TetrisBuffer[by][bx])
               {
                 v|=2; //illegal move
                 return v;
               }

              if(by>=MapYsize-1)
                v|=1; //dropped
              else if(BlockBuffer.TetrisBuffer[by+1][bx])
                v|=1; //dropped
            }
         }
      }
   }
  return v;
}
//---------------------------------------------------------------------------
int TBaseTetris::TryToRemove(void)
{
  if(_iRemoving)
   {
     if(--_iRemoving==0)
      {
        int irmlines = 0;
        for(int y=0; y<MapYsize; y++)
         {
           bool bOK = true;
           for(int x=0; x<MapXsize; x++)
            if(BlockBuffer.TetrisBuffer[y][x]==0)
             {
               bOK = false;
               break;
             }
           if(bOK)
            {
              int m;
              for(m=y; m>0; m--)
               for(int x=0; x<MapXsize; x++)
                BlockBuffer.TetrisBuffer[m][x] = BlockBuffer.TetrisBuffer[m-1][x];
              for(int x=0; x<MapXsize; x++)
               BlockBuffer.TetrisBuffer[m][x] = 0;
              irmlines ++;
            }
         }
        AddScore(irmlines);
      }
   }
  else
   {
     _iRemoving = 1;
     for(int y=0; y<MapYsize; y++)
      {
        bool bOK = true;
        for(int x=0; x<MapXsize; x++)
         if(BlockBuffer.TetrisBuffer[y][x]==0)
          {
            bOK = false;
            break;
          }
        if(bOK)
         {
           for(int x=0; x<MapXsize; x++)
            BlockBuffer.TetrisBuffer[y][x] = NumUnits+1;
           _iRemoving = 2;
         }
      }
   }
  return _iRemoving;
}
//---------------------------------------------------------------------------
void TBaseTetris::GenNewUnit(void)
{
  CurrUnit = IncmUnit;
  IncmUnit = BaseUnits[random(NumUnits)];

  IncmUnit.x = Ux0;
  IncmUnit.y = Uy0;
  IncmUnit.r = random(4);
}
//---------------------------------------------------------------------------
void TBaseTetris::DispTetris(void)
{
  DispBuffer = BlockBuffer;
  if(!_iRemoving)
   {
     for(int i=0; i<4; i++)
      for(int k=0; k<4; k++)
       if((i+CurrUnit.y>=0)&&(CurrUnit.un[CurrUnit.r][i][k]))
        DispBuffer.TetrisBuffer[i+CurrUnit.y][k+CurrUnit.x] = CurrUnit.un[CurrUnit.r][i][k];
   }
}
//---------------------------------------------------------------------------
void TBaseTetris::Move(int iMdir)
{
  if(_bStarted)
   {
     if(_iRemoving)
      {
        if(!TryToRemove())
         {
           GenNewUnit();
           if(CheckUnit(CurrUnit.x,CurrUnit.y,CurrUnit.r))
             _bGameOver = true;
         }
        DispTetris();
      }
     else
      {
        int ck, x=CurrUnit.x, y=CurrUnit.y, r=CurrUnit.r;
        switch(iMdir)
         {
           case btmLeft : x--; break;
           case btmRight: x++; break;
           case btmDown : y++; break;
           case btmCW   : r++; r&=3; break;
           case btmCCW  : r--; r&=3; break;
         }
        ck=CheckUnit(x,y,r);
        if(ck&2)
         {
           if(iMdir==btmDown)
            {
              BlockBuffer = DispBuffer;
              TryToRemove();
            }
           return;
         }

        CurrUnit.x=x; CurrUnit.y=y; CurrUnit.r=r;
        DispTetris();
        if((ck)&&(iMdir!=btmDown))
         {
           BlockBuffer = DispBuffer;
           TryToRemove();
         }
      }
   }
}
//---------------------------------------------------------------------------
void TBaseTetris::AddScore(int iRmv)
{
  switch(iRmv)
   {
     case 0: _iScore++; break;
     case 1: _iScore+=10; break;
     case 2: _iScore+=30; break;
     case 3: _iScore+=50; break;
     case 4: _iScore+=80; break;
   }
  _iLines+=iRmv;
}
//---------------------------------------------------------------------------
void TBaseTetris::NewGame(void)
{
  memset(&DispBuffer,0,sizeof(TTetrisBuffer));
  memset(&BlockBuffer,0,sizeof(TTetrisBuffer));
  GenNewUnit();

  _bStarted = true;
  _bGameOver = false;

  _iRemoving = 0;
  _iScore = 0;
  _iLines = 0;

  DispTetris();
}
//---------------------------------------------------------------------------

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产午夜精品久久久久久免费视| 欧美老肥妇做.爰bbww| 蜜臀av性久久久久蜜臀aⅴ流畅| 亚洲乱码中文字幕| 亚洲女同一区二区| 亚洲午夜av在线| 天天av天天翘天天综合网色鬼国产| 亚洲1区2区3区4区| 欧美aaa在线| 国产精品一区二区视频| 成人久久久精品乱码一区二区三区| 成人激情av网| 欧美网站一区二区| 欧美精品在线视频| 亚洲精品在线免费观看视频| 国产欧美日韩在线观看| 综合网在线视频| 亚洲一区二区3| 久久99国产精品久久99果冻传媒| 国产真实乱子伦精品视频| 成人深夜在线观看| 欧美视频自拍偷拍| 精品福利av导航| 国产精品久久久久久久久图文区| 亚洲最大的成人av| 美女高潮久久久| av不卡一区二区三区| 91激情五月电影| 日韩欧美在线不卡| 国产精品盗摄一区二区三区| 日韩精品一二三| 国产成人一区在线| 91成人免费在线视频| 精品日韩一区二区三区免费视频| 欧美激情综合在线| 一区二区成人在线视频 | 久久国产精品区| 国产成人免费视频网站| 精品视频1区2区| 久久亚洲一区二区三区四区| 一区二区久久久| 国产经典欧美精品| 欧美三级中文字幕在线观看| 国产日产欧美一区二区视频| 天天做天天摸天天爽国产一区| 懂色中文一区二区在线播放| 欧美一区二区在线免费观看| 亚洲天堂久久久久久久| 久久se这里有精品| 欧美男男青年gay1069videost | 日韩欧美久久久| 亚洲天堂av一区| 国产精品夜夜嗨| 欧美美女直播网站| 亚洲欧美另类在线| 国产美女娇喘av呻吟久久| 欧美日韩国产综合视频在线观看| 国产精品黄色在线观看| 国产在线精品一区二区不卡了| 欧美视频一区在线| 一区二区理论电影在线观看| 97精品超碰一区二区三区| 亚洲精品一区二区三区香蕉| 蜜臀久久99精品久久久画质超高清 | 欧美日韩中文字幕一区| 亚洲欧洲成人精品av97| 国产成人精品免费看| 精品国产不卡一区二区三区| 麻豆久久久久久| 欧美日韩国产在线播放网站| 一区二区日韩电影| 在线观看视频一区二区欧美日韩| 亚洲女人****多毛耸耸8| www.爱久久.com| 亚洲视频每日更新| 9i在线看片成人免费| 国产精品卡一卡二卡三| 99麻豆久久久国产精品免费| 亚洲美女少妇撒尿| av电影在线观看完整版一区二区| 国产精品伦理一区二区| 成人午夜碰碰视频| 亚洲欧洲中文日韩久久av乱码| 成人午夜免费电影| 亚洲欧美国产毛片在线| 色综合天天综合狠狠| 亚洲激情自拍偷拍| 欧美视频精品在线观看| 免费的成人av| 国产校园另类小说区| gogogo免费视频观看亚洲一| 亚洲精品欧美在线| 欧美伦理电影网| 激情图区综合网| 最新热久久免费视频| 欧美日韩亚洲综合在线| 热久久国产精品| 国产日韩欧美精品一区| 91美女福利视频| 蜜桃av一区二区在线观看| 精品福利视频一区二区三区| av动漫一区二区| 天堂成人国产精品一区| 国产天堂亚洲国产碰碰| 欧洲一区二区三区免费视频| 奇米色一区二区| 国产女主播视频一区二区| 欧美艳星brazzers| 激情综合网天天干| 亚洲精品成人少妇| 欧美大胆一级视频| 91丨九色porny丨蝌蚪| 青娱乐精品视频| 国产精品国产a| 日韩欧美中文字幕一区| 91在线国产福利| 看电视剧不卡顿的网站| 自拍偷自拍亚洲精品播放| 91精品久久久久久久99蜜桃| www.欧美.com| 国产在线一区观看| 日韩制服丝袜先锋影音| 亚洲欧美日韩久久| 久久精品一区二区三区不卡牛牛| 欧美三级三级三级| 国产精品一二三四五| 视频一区二区国产| 国产精品美女久久久久久久久久久| 3d成人h动漫网站入口| 91麻豆国产香蕉久久精品| 国模无码大尺度一区二区三区 | 欧美精品一卡两卡| 91女神在线视频| 国产91在线观看丝袜| 开心九九激情九九欧美日韩精美视频电影| 国产精品高潮呻吟| 国产色爱av资源综合区| 精品欧美乱码久久久久久1区2区| 欧美亚洲综合色| 一本到三区不卡视频| www.亚洲激情.com| 国产一区二区三区四区五区美女| 秋霞午夜鲁丝一区二区老狼| 亚洲成av人在线观看| 一区二区三区四区高清精品免费观看| 欧美高清一级片在线观看| 亚洲精品一区二区精华| 精品国产一区二区三区久久久蜜月| 欧美一区二区视频网站| 777久久久精品| 91精品久久久久久久久99蜜臂| 欧美色中文字幕| 555www色欧美视频| 这里只有精品电影| 91精品国产麻豆国产自产在线| 欧美日韩精品三区| 9191久久久久久久久久久| 7777精品久久久大香线蕉| 欧美日韩久久一区二区| 欧美一区二区三区视频| 日韩视频免费观看高清完整版在线观看 | av亚洲精华国产精华精华| 国产精品一二三四区| 国产麻豆精品95视频| 国产精品中文字幕一区二区三区| 国产成人av福利| 成人的网站免费观看| 色国产精品一区在线观看| 欧美精品亚洲一区二区在线播放| 91精品国产综合久久久蜜臀粉嫩| 日韩欧美一区电影| 国产精品无码永久免费888| 亚洲精品一二三四区| 日韩精品午夜视频| 国产成人在线视频网站| 日本韩国视频一区二区| 在线成人av影院| 久久久99久久精品欧美| 国产精品成人午夜| 亚洲综合在线第一页| 日韩精品欧美精品| 国产综合色视频| 99久久综合国产精品| 欧美视频在线一区| 精品国产网站在线观看| 欧美激情一区二区三区在线| 一区二区三区中文免费| 久久电影网站中文字幕| 成人精品高清在线| 欧美一区二区视频免费观看| 国产日产欧美一区| 日韩高清在线不卡| 成人爱爱电影网址| 91精品国产欧美一区二区18| 国产精品色噜噜| 秋霞国产午夜精品免费视频 | 一区二区成人在线观看| 精品在线免费观看| 欧美性大战久久久久久久蜜臀| 精品久久国产字幕高潮|