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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? unit1.cpp

?? 自編小俄羅斯方塊
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <time.h>
#include <mmsystem.h>
#pragma hdrstop

#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
  //缺省為不是游戲暫停狀態
  m_bGamePaush = FALSE;

  //缺省為不插放背景音樂
  m_bMusic = FALSE;

  //缺省為畫網格線
  m_bDrawGrid = TRUE;

  //總分值清零
  m_iPerformance = 0;

  //測試值:為12行,10列
  m_iRow = 12;
  m_iCol = 10;

  //左上角X,Y坐標
  m_iStartX = 10;
  m_iStartY = 10;

  //缺省級別為3級
  m_iLevel = 2;

  //缺省方塊大小為m_iLarge個象素
  m_iLarge = 30;

  //缺省游戲是結束的
  m_bGameEnd = TRUE;

  int i,j;

  //賦初值
  for (i=0;i<100;i++)
    for (j=0;j<100;j++)
            GameStatus[i][j]=0;

  //各種形狀方塊的接觸面數據,參見設計書的接觸面表格,
  //如果某種形狀的方塊沒有4個接觸面,則后面的數據填-1
  for (i=0;i<74;i++)
    for (j=0;j<4;j++)
      InterFace[i][j] = -1;

  InterFace[1][0] = 3;

  InterFace[11][0] = 0;
  InterFace[11][1] = 1;
  InterFace[11][2] = 2;
  InterFace[11][3] = 3;

  InterFace[2][0] = 1;
  InterFace[2][1] = 3;

  InterFace[3][0] = 0;
  InterFace[3][1] = 2;
  InterFace[3][2] = 3;

  InterFace[31][0] = 2;
  InterFace[31][1] = 3;

  InterFace[32][0] = 0;
  InterFace[32][1] = 2;
  InterFace[32][2] = 3;

  InterFace[33][0] = 0;
  InterFace[33][1] = 3;

  InterFace[4][0] = 1;
  InterFace[4][1] = 3;

  InterFace[41][0] = 0;
  InterFace[41][1] = 2;
  InterFace[41][2] = 3;

  InterFace[5][0] = 1;
  InterFace[5][1] = 3;

  InterFace[51][0] = 0;
  InterFace[51][1] = 2;
  InterFace[51][2] = 3;

  InterFace[6][0] = 0;
  InterFace[6][1] = 3;

  InterFace[61][0] = 1;
  InterFace[61][1] = 2;
  InterFace[61][2] = 3;

  InterFace[62][0] = 2;
  InterFace[62][1] = 3;

  InterFace[63][0] = 0;
  InterFace[63][1] = 1;
  InterFace[63][2] = 3;

  InterFace[7][0] = 2;
  InterFace[7][1] = 3;

  InterFace[71][0] = 1;
  InterFace[71][1] = 2;
  InterFace[71][2] = 3;

  InterFace[72][0] = 0;
  InterFace[72][1] = 3;

  InterFace[73][0] = 0;
  InterFace[73][1] = 1;
  InterFace[73][2] = 3;
}
//---------------------------------------------------------------------------
//創建一些設備
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  //白色的黑筆
  whitePen = new TPen();
  whitePen->Color =clWhite;
  whitePen->Style =psSolid;
  whitePen->Width =1;

  //黑色的黑筆
  blackPen = new TPen();
  blackPen->Color =clBlack;
  blackPen->Style =psSolid;
  blackPen->Width =1;

  redPen = new TPen();
  redPen->Color =clRed;
  redPen->Style =psSolid;
  redPen->Width =1;

  //畫刷
  grayBrush = new TBrush();
  grayBrush->Color =clGray;//RGB(0,255,255);
  blueBrush = new TBrush();
  blueBrush->Color =clBlue;
  blackBrush = new TBrush();
  blackBrush->Color =clBlack;

  //決定第一次掉下來的方塊的樣式
  m_inextStatus = Random(7);
  if (m_inextStatus==0) m_inextStatus++;
}
//---------------------------------------------------------------------------
/* * * * * * * * * * * * * * * * * * * * * * * * *
*  功能:承擔所有繪制屏幕工作
* * * * * * * * * * * * * * * * * * * * * * * * */
void __fastcall TForm1::FormPaint(TObject *Sender)
{
  int i,j;

  Canvas->Brush=blackBrush;
  TRect rect=GetClientRect();
  Canvas->Rectangle(rect);

  Canvas->Brush=grayBrush;
  Canvas-> Rectangle(m_iStartY ,m_iStartX, m_iStartY + 301, m_iStartX + 360);

  Canvas->Brush=blueBrush;

  Canvas->Pen=whitePen;

  //畫網格線
  if (m_bDrawGrid)
  {
    //畫橫線
    for (i=0;i<m_iRow+1;i++)
    {
      Canvas->MoveTo(m_iStartY, m_iStartX + i*m_iLarge);
      Canvas->LineTo(m_iStartY+300, m_iStartX +i*m_iLarge);
    }

    //畫豎線
    for (i=0;i<m_iCol+1;i++)
    {
      Canvas->MoveTo(m_iStartY+i*m_iLarge, m_iStartX);
      Canvas->LineTo(m_iStartY+i*m_iLarge, m_iStartX+360);
    }
  }

  //畫方塊
  for (i=0;i<m_iRow;i++)
    for (j=0;j<m_iCol;j++)
    {
      if (GameStatus[i][j]==1)
      {
        //劃的方塊比規定的大小略微小一點
        //畫小方塊邊框黑線
        Canvas->Pen=blackPen;
        Canvas -> MoveTo(m_iStartY+j*m_iLarge +1, m_iStartX+i*m_iLarge +1);
        Canvas -> LineTo(m_iStartY+j*m_iLarge +1, m_iStartX+(i+1)*m_iLarge -1);
        Canvas -> MoveTo(m_iStartY+j*m_iLarge +1,	m_iStartX+(i+1)*m_iLarge -1);
        Canvas -> LineTo(m_iStartY+(j+1)*m_iLarge -1, m_iStartX+(i+1)*m_iLarge -1);

        //畫小方塊邊框白線
        Canvas->Pen=whitePen;
        Canvas -> MoveTo(m_iStartY+j*m_iLarge +1, m_iStartX+i*m_iLarge +1);
        Canvas -> LineTo(m_iStartY+(j+1)*m_iLarge -1,m_iStartX+i*m_iLarge +1);
        Canvas -> MoveTo(m_iStartY+(j+1)*m_iLarge -1,m_iStartX+i*m_iLarge +1);
        Canvas -> LineTo(m_iStartY+(j+1)*m_iLarge -1,m_iStartX+(i+1)*m_iLarge -1);

        //每個方塊填充綠色的背景
        Canvas -> Rectangle(m_iStartY+j*m_iLarge +2,m_iStartX+i*m_iLarge +2,m_iStartY+(j+1)*m_iLarge -2,m_iStartX+(i+1)*m_iLarge -2);
      }
    }

  //顯示游戲區域及游戲級別的漢字描述
  if (!m_bGameEnd)
  {
    SetBkColor(Canvas->Handle,BLACK);
    SetTextColor(Canvas->Handle,WHITE);
    Canvas -> TextOut(m_iStartY+320, m_iStartX+220, "游戲區域大小:");
    Canvas -> TextOut(m_iStartY+320, m_iStartX+240,m_strArea);

    Canvas -> TextOut(m_iStartY+320, m_iStartX+280, "游戲級別:");
    Canvas -> TextOut(m_iStartY+320, m_iStartX+300,m_strLevel);
  }

  //顯示總分
  if (!m_bGameEnd)
  {
    AnsiString lsStr="總分為:";
    lsStr+=IntToStr( m_iPerformance);
    lsStr+=" 分";
    SetBkColor(Canvas->Handle,BLACK);
    SetTextColor(Canvas->Handle,WHITE);
    Canvas -> TextOut(m_iStartY+320, m_iStartX+180,lsStr);
  }

  //畫下一次將要出現的方塊,用于提示用戶
  if (!m_bGameEnd)
  {
    SetBkColor(Canvas->Handle,BLACK);
    SetTextColor(Canvas->Handle,WHITE);
    Canvas -> TextOut(m_iStartY+320, m_iStartX,"下一個方塊:");

    for (UINT k=0;k<4;k++)
    {
      i = NextStatus[k][0];
      j = NextStatus[k][1];

      //劃的方塊比規定的大小略微小一點
      //畫小方塊邊框黑線
      Canvas->Pen=blackPen;
      Canvas -> MoveTo(m_iStartY+j*30 +1+320, m_iStartX+i*30 +1+30);
      Canvas -> LineTo(m_iStartY+j*30 +1+320, m_iStartX+(i+1)*30 -1+30);
      Canvas -> MoveTo(m_iStartY+j*30 +1+320,	m_iStartX+(i+1)*30 -1+30);
      Canvas -> LineTo(m_iStartY+(j+1)*30 -1+320, m_iStartX+(i+1)*30 -1+30);

      //畫小方塊邊框白線
      Canvas->Pen=whitePen;
      Canvas -> MoveTo(m_iStartY+j*30 +1+320,      m_iStartX+i*30 +1+30);
      Canvas -> LineTo(m_iStartY+(j+1)*30 -1+320,  m_iStartX+i*30 +1+30);
      Canvas -> MoveTo(m_iStartY+(j+1)*30 -1+320,  m_iStartX+i*30 +1+30);
      Canvas -> LineTo(m_iStartY+(j+1)*30 -1+320,  m_iStartX+(i+1)*30 -1+30);

      //每個方塊填充藍色的背景
      Canvas -> Rectangle(m_iStartY+j*30 +2+320,m_iStartX+i*30 +2+30,
                          m_iStartY+(j+1)*30 -2+320,m_iStartX+(i+1)*30 -2+30);
    }
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SettingClick(TObject *Sender)
{
//參數順序: 區域大小代碼:0-3,分別為:12X10,18X15,24X20,m_iLargeX25
  //級別:0-5,分別為:1500,1200,1000,800,600,400
  //背景音樂:TRUE 或者 FALSE
  int m_lsArea;
  switch(m_iRow)
  {
  case 12:
    m_lsArea = 0;
    break;
  case 18:
    m_lsArea = 1;
    break;
  case 24:
    m_lsArea = 2;
    break;
  case 30:
    m_lsArea = 3;
    break;
  }

  TOKBottomDlg* dlg=new TOKBottomDlg(m_lsArea,m_iLevel,m_bMusic,m_bDrawGrid,this);

  if (dlg->ShowModal()==IDOK)
  {
    //確定區域的大小
    switch(dlg->m_iArea)
      {
      case 0:
        m_iRow = 12;
        m_iCol = 10;
        m_iLarge = 30;
        break;
      case 1:
        m_iRow = 18;
        m_iCol = 15;
        m_iLarge = 20;
        break;
      case 2:
        m_iRow = 24;
        m_iCol = 20;
        m_iLarge = 15;
        break;
      case 3:
        m_iRow = 30;
        m_iCol = 25;
        m_iLarge = 12;
        break;
      }

      //確定級別
      m_iLevel = dlg->m_iLevel;

      //確定是否繪網格背景
      m_bDrawGrid = dlg->m_bDrawGrid;

      //檢查是否插放音樂
      m_bMusic = dlg->m_bMusic;
      if (m_bMusic)
        PlayMid();
      else
        StopMid();

      Invalidate();
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N12101Click(TObject *Sender)
{
  m_iRow = 12;
  m_iCol = 10;
  m_iLarge = 30;
  Invalidate();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N18151Click(TObject *Sender)
{
  m_iRow = 18;
  m_iCol = 15;
  m_iLarge = 20;
  Invalidate();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N24201Click(TObject *Sender)
{
  m_iRow = 24;
  m_iCol = 20;
  m_iLarge = 15;
  Invalidate();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N30251Click(TObject *Sender)
{
  m_iRow = 30;
  m_iCol = 25;
  m_iLarge = 12;
  Invalidate();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Level1Click(TObject *Sender)
{
  m_iLevel = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Level2Click(TObject *Sender)
{
  m_iLevel = 1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Level3Click(TObject *Sender)
{
  m_iLevel = 1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Level4Click(TObject *Sender)
{
  m_iLevel = 3;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Level5Click(TObject *Sender)
{
  m_iLevel = 4;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Level6Click(TObject *Sender)
{
  m_iLevel = 5;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SoundClick(TObject *Sender)
{
  if (m_bMusic)
  {
    m_bMusic = false;
    Sound->Checked=false;
    StopMid();
  }
  else
  {
    m_bMusic = true;
    Sound->Checked=true;
    PlayMid();
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::GridClick(TObject *Sender)
{
  if (m_bDrawGrid)
    {
     m_bDrawGrid = false;
     Grid->Checked=false;
    }
  else
    {
     m_bDrawGrid = true;
     Grid->Checked=false;
    }

  Invalidate();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ExitClick(TObject *Sender)
{
 Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  //如果原來的方塊已到底或游戲剛開始,則掉下一個新的方塊
  int i,j,k;
  if (m_isBottom)
  {
    m_icurrentStatus = m_inextStatus;
    m_inextStatus = Random(7);  //得到下一次的方塊樣式
    if (m_inextStatus==0) m_inextStatus++;

    m_currentRect = m_icurrentStatus;   //當前落下的方塊的形狀代碼
    RectStatusToActiveStatus( m_icurrentStatus );
    ActiveStatusToGameStatus();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品免费看| 国产欧美精品一区二区三区四区 | 一区二区三区在线观看视频| 成人黄色免费短视频| 国产精品国产三级国产a| 91亚洲精品一区二区乱码| 亚洲综合丝袜美腿| 日韩精品一区二区三区三区免费 | 亚洲一本大道在线| 欧美一区二区视频免费观看| 韩国午夜理伦三级不卡影院| 久久亚洲精品小早川怜子| 成人午夜激情在线| 亚洲一二三四久久| 久久综合资源网| 色婷婷综合视频在线观看| 免费在线看一区| 国产精品无人区| 欧美视频一区二区三区| 国内精品久久久久影院薰衣草| 国产精品福利影院| 欧美一区二区三区在线视频| 不卡的av在线| 日韩在线卡一卡二| 国产精品久久久久久久第一福利 | 日韩国产欧美在线视频| 久久久久国产免费免费| 日本精品视频一区二区| 国产一区在线看| 日韩一区欧美小说| 日韩欧美在线网站| 色88888久久久久久影院野外| 久久aⅴ国产欧美74aaa| 亚洲在线视频网站| 久久久99精品久久| 日韩午夜av一区| 日本韩国精品一区二区在线观看| 久久狠狠亚洲综合| 亚洲在线中文字幕| 国产欧美日韩综合精品一区二区| 欧美老肥妇做.爰bbww| 99精品1区2区| 国产精品77777| 日韩不卡一区二区| 一区二区三区色| 国产精品久久久久久久岛一牛影视 | 26uuu色噜噜精品一区二区| 欧美日韩中文国产| www.日本不卡| 国产河南妇女毛片精品久久久| 日韩影院精彩在线| 亚洲自拍偷拍网站| 国产精品久久久久久久久晋中| 久久免费电影网| 精品国产乱码久久久久久免费| 欧美亚洲动漫精品| 色婷婷精品久久二区二区蜜臀av | 色老汉一区二区三区| 国产91清纯白嫩初高中在线观看| 日韩高清电影一区| 亚洲成av人片www| 亚洲精品欧美二区三区中文字幕| 国产视频一区在线观看 | 成人国产精品免费| 国产一区二区美女诱惑| 美女一区二区三区在线观看| 日韩中文字幕区一区有砖一区| 亚洲综合色网站| 一区二区三区四区五区视频在线观看| 国产精品午夜在线| 国产精品美女久久久久久久| 国产日韩欧美精品在线| 欧美国产日本韩| 国产精品久99| 国产精品久久久久影院亚瑟| 国产精品久久久久aaaa| 亚洲日本护士毛茸茸| 成人免费在线播放视频| 亚洲美女一区二区三区| 亚洲精品午夜久久久| 亚洲激情综合网| 亚洲成人动漫在线免费观看| 亚洲高清免费一级二级三级| 亚洲电影第三页| 蜜臂av日日欢夜夜爽一区| 久久99这里只有精品| 国产乱人伦精品一区二区在线观看| 国产自产高清不卡| 成人一区在线观看| 一本大道综合伊人精品热热| 色婷婷精品大在线视频| 欧美精品三级在线观看| 精品日韩99亚洲| 欧美国产在线观看| 夜夜嗨av一区二区三区网页| 三级欧美韩日大片在线看| 免费在线观看精品| 懂色一区二区三区免费观看| 日本久久电影网| 欧美一二三区在线观看| 久久久精品国产免大香伊| 国产精品丝袜久久久久久app| 中文字幕一区二区三区不卡| 一区二区三区美女视频| 日韩av电影免费观看高清完整版在线观看 | 亚洲欧美一区二区三区久本道91 | 黄色日韩三级电影| 97久久久精品综合88久久| 欧美日韩一区二区欧美激情| 欧美电视剧在线看免费| 中文字幕中文在线不卡住| 亚洲成人av电影在线| 国产中文字幕精品| 色偷偷88欧美精品久久久| www国产精品av| 亚洲乱码国产乱码精品精小说| 日本成人在线不卡视频| 国产成人鲁色资源国产91色综 | 成人一级视频在线观看| 欧美色欧美亚洲另类二区| 国产亚洲欧洲一区高清在线观看| 亚洲欧美国产毛片在线| 国产在线精品一区二区夜色 | 午夜精品久久久久久久久久| 国产一区二区三区四区五区入口 | 色先锋资源久久综合| 精品99999| 亚洲成年人网站在线观看| 国产成人av电影在线观看| 在线观看91av| 亚洲精品国产精华液| 国产一区二区不卡| 777欧美精品| 亚洲在线一区二区三区| 成人久久久精品乱码一区二区三区| 91精品国产美女浴室洗澡无遮挡| 亚洲欧美在线视频| 国产福利一区二区三区视频在线| 欧美日韩mp4| 亚洲综合免费观看高清完整版 | 欧美日韩1234| 亚洲视频小说图片| 国产成人在线视频免费播放| 欧美欧美欧美欧美| 亚洲精品高清在线| 波多野洁衣一区| 久久久久久久精| 久88久久88久久久| 欧美一区二区三区小说| 亚洲一二三区不卡| 欧美影院一区二区三区| 亚洲精品乱码久久久久久黑人 | 老司机精品视频线观看86| 在线精品观看国产| 亚洲欧洲制服丝袜| 色综合天天综合网天天狠天天 | 一区二区三区 在线观看视频| 99热精品一区二区| 国产精品福利av| 不卡区在线中文字幕| 国产精品精品国产色婷婷| 成人黄色在线网站| 亚洲天堂2014| 色综合久久久久久久久久久| 1区2区3区欧美| 91麻豆成人久久精品二区三区| 亚洲欧美日韩久久精品| 色婷婷一区二区三区四区| 亚洲欧美日韩国产另类专区 | 天堂久久久久va久久久久| 欧美日韩国产另类不卡| 日韩avvvv在线播放| 精品国产麻豆免费人成网站| 国产永久精品大片wwwapp| 中文字幕国产一区| 91一区二区三区在线观看| 一区二区三区蜜桃网| 欧美在线短视频| 午夜精彩视频在线观看不卡| 91精品午夜视频| 黄页网站大全一区二区| 欧美高清在线精品一区| 日本大香伊一区二区三区| 图片区小说区国产精品视频| 日韩欧美黄色影院| 粉嫩av一区二区三区粉嫩| 亚洲精品久久嫩草网站秘色| 欧美三区在线视频| 久久机这里只有精品| 国产精品对白交换视频| 欧美性大战久久久久久久蜜臀| 免费在线一区观看| 中文字幕一区二区三区不卡| 欧美探花视频资源| 九九热在线视频观看这里只有精品| 国产亚洲一区二区三区四区| 日本久久电影网| 国产精品夜夜爽| 亚洲sss视频在线视频| 欧美大片一区二区三区|