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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? ubox.pas

?? 很好的俄羅斯方塊
?? PAS
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
{  俄羅斯方塊核心控制單元  }
unit UBox;

interface

uses
  Windows,SysUtils, Graphics;

//---------------------------------------------------------------------
const
  BWid   = 15;            //顯示在屏幕上的象素點(diǎn)數(shù)
  MLen   = 4 ;            //方塊數(shù)組的寬度
  BNum   = 7 ;            //方塊的個(gè)數(shù)
  MapWid = 20;            //背景地圖的寬度(按格子數(shù))
  MapHei = 30;            //背景地圖的高度
  BkLeft = -30;           //左邊距離
  BkTop  = 10 ;           //頂點(diǎn)距離
  EmptyBlock    = false;  //空的格子
  NotEmptyBlock = true;   //非空的格子

//---------------------------------------------------------------------
type
   TBlockCell=record
      Empty: Boolean;
      Color: TColor;
   end;

//---------------------------------------------------------------------
type
  TBoxArray  = Array [1..MLen,1..MLen] of TBlockCell;      //單個(gè)方塊對(duì)應(yīng)的數(shù)組
  TEmptyLine = Array [1..MLen] of Integer;                 //已經(jīng)完成的行的記錄
  TMapData   = Array [1..MapWid,1..MapHei] of TBlockCell;  //當(dāng)前記錄



//---------------------------------------------------------------------
procedure Line(Canvas: TCanvas;X1,Y1,X2,Y2:Integer);
procedure SetBoxArray(var B: TBoxArray;I: Integer;S: String);
procedure InitBoxes;
function  GetWidth(B: TBoxArray): Integer;
function  GetHeight(B: TBoxArray): Integer;
procedure DrawMap(Canvas: TCanvas);
procedure DrawRect(Canvas: TCanvas;X1,Y1,X2,Y2: Integer;Color: TColor);
procedure DrawBoxXY(Canvas: TCanvas;X,Y: Integer;B: TBoxArray);
procedure DrawBoxBK(Canvas: TCanvas;X,Y: Integer;B: TBoxArray;Color: TColor);
procedure BoxMoveTo(Canvas: TCanvas;X,Y: Integer;B: TBoxArray);
function  CanGo(X,Y: Integer;B: TBoxArray): Boolean;
procedure CopyBox(var ObjBox: TBoxArray;Source: TBoxArray);
procedure Change(Canvas: TCanvas;var B: TBoxArray;var CurX: Integer;var CurY:Integer);
procedure MoveToMap(X,Y: Integer;B: TBoxArray);
procedure ScanEmptyLine(Canvas: TCanvas;var Line: TEmptyLine);
procedure FreshMap(Canvas: TCanvas;Line: TEmptyLine);
procedure DelAMapLine(I: Integer);
function  Max(X1,X2:Integer):Integer;
procedure ShowNext(Canvas: TCanvas);
procedure ShowMess(Canvas: TCanvas;S: String);
procedure SetBlockColor(var B:TBoxArray;Color: TColor);
procedure CheckBlock(var B:TBoxArray);




//---------------------------------------------------------------------
var
  Box: Array [1..BNum] of TBoxArray;             //一組方塊
  Map: TMapData;                                 //背景數(shù)組
  CurX,CurY: Integer;                            //當(dāng)前方塊的位置
  LasX,LasY: Integer;                            //上一次方塊的位置
  BkColor: TColor;                               //背景的顏色
  BColor: TColor;                                //畫(huà)方塊的顏色
  Block: TBoxArray;                              //每一次出現(xiàn)的方塊
  EmptyLine: TEmptyLine;                         //已經(jīng)完成的行
  BlockId: Integer;                              //方塊的屬類(lèi)
  NextId: Integer;                               //方塊的屬類(lèi)
  Score: Integer;                                //玩家的得分
  Level: Integer;                                //游戲玩家的級(jí)別

  ChangeKey: Integer;                            //用來(lái)?yè)Q方向的鍵
  LeftKey: Integer;                              //左方向
  RightKey: Integer;                             //右方向
  DownKey: Integer;                              //下降鍵
  DirectDownKey: Integer;                        //直接下降鍵

  CurLevelScore: Integer;                        //本關(guān)得分


//---------------------------------------------------------------------
implementation
uses UMain;

//---------------------------------------------------------------------
procedure Line(Canvas: TCanvas;X1,Y1,X2,Y2:Integer);
begin
  Canvas.MoveTo(X1,Y1);
  Canvas.LineTo(X2,Y2);
end;

//---------------------------------------------------------------------
{ 用字符串對(duì)方塊數(shù)組進(jìn)行設(shè)置 }
{ 如:"1111" 表示一個(gè)長(zhǎng)條    }
{ I 表示數(shù)組的第 I 行        }
procedure SetBoxArray(var B: TBoxArray;I: Integer;S: String);
var
  j: Integer;
begin
  for j := 1 to MLen do
    {B[I,j] := StrToInt(Copy(S,j,1));}
    if StrToInt(Copy(S,j,1)) <> 0 then
      B[I,j].Empty := NotEmptyBlock//true
    else
      B[I,j].Empty := EmptyBlock;//;false;
end;

//---------------------------------------------------------------------
{ 對(duì)方塊數(shù)組進(jìn)行初始化,}
{ 使其獲得基本的形狀。  }
procedure InitBoxes;
var
  i,j: Integer;
begin
  SetBoxArray(Box[1],1,'1100');
  SetBoxArray(Box[1],2,'1100');
  SetBoxArray(Box[1],3,'0000');
  SetBoxArray(Box[1],4,'0000');

  SetBoxArray(Box[2],1,'0000');
  SetBoxArray(Box[2],2,'1110');
  SetBoxArray(Box[2],3,'0010');
  SetBoxArray(Box[2],4,'0000');

  SetBoxArray(Box[3],1,'0000');
  SetBoxArray(Box[3],2,'1110');
  SetBoxArray(Box[3],3,'1000');
  SetBoxArray(Box[3],4,'0000');

  SetBoxArray(Box[4],1,'0100');
  SetBoxArray(Box[4],2,'1110');
  SetBoxArray(Box[4],3,'0000');
  SetBoxArray(Box[4],4,'0000');

  SetBoxArray(Box[5],1,'1000');
  SetBoxArray(Box[5],2,'1100');
  SetBoxArray(Box[5],3,'0100');
  SetBoxArray(Box[5],4,'0000');

  SetBoxArray(Box[6],1,'0100');
  SetBoxArray(Box[6],2,'1100');
  SetBoxArray(Box[6],3,'1000');
  SetBoxArray(Box[6],4,'0000');

  SetBoxArray(Box[7],1,'0000');
  SetBoxArray(Box[7],2,'1111');
  SetBoxArray(Box[7],3,'0000');
  SetBoxArray(Box[7],4,'0000');
  //Initialize the background
  for i := 1 to MapWid do
    for j := 1 to MapHei do
      Map[i,j].Empty := EmptyBlock;//false;


  {終于修正了這個(gè)核心bug 原來(lái)這里應(yīng)該使用 MapHei - 3}
  for j := 1 to MapHei - 3 do
    for i := 1 to 3 do
    begin
      Map[i,j].Empty := NotEmptyBlock;
      Map[i,j].Color := clGreen;
      Map[MapWid-3+i,j].Empty  := NotEmptyBlock;
      Map[MapWid-3+i,j].Color := clGreen;
    end;


  for j := MapHei-2 to MapHei do
    for i := 4 to MapWid - 3 do
    begin
      Map[i,j].Empty := NotEmptyBlock;
      Map[i,j].Color := clGreen;
    end;

end;

//---------------------------------------------------------------------
{ 獲取一個(gè)方塊的寬度 }
function GetWidth(B: TBoxArray): Integer;
var
  i,j,MaxLen,Long: Integer;
begin
  { 對(duì)于5 和 6 號(hào) 進(jìn)行特殊掃描 }
  if (BlockId=5) or (BlockId=6) then
  begin
    Long := 0;
    for i := 1 to MLen do
      if B[i,1].Empty <>EmptyBlock then Long := Long + 1;
    if Long = 1 then
    begin
      GetWidth := 2;
      Exit;
    end else
    begin
      GetWidth := 3;
      Exit;
    end;
  end;

  MaxLen := 0;
  for i := 1 to MLen do
  begin
    Long :=0;
    for j := 1 to MLen do
      if B[j,i].Empty <>EmptyBlock  then Long := Long + 1;
    if MaxLen<Long then MaxLen := Long;
  end;
  GetWidth := MaxLen;
end;

//---------------------------------------------------------------------
{ 獲取一個(gè)方塊的高度 }
function GetHeight(B: TBoxArray): Integer;
var
  i,j,MaxLen,Long: Integer;
begin
  if (BlockId=5) or (BlockId=6) then
  begin
    Long := 0;
    for i := 1 to MLen do
      if B[1,i].Empty <>EmptyBlock then Long := Long + 1;
    if Long = 1 then
    begin
      GetHeight := 2;
      Exit;
    end else
    begin
      GetHeight := 3;
      Exit;
    end;
  end;

  MaxLen := 0;
  for i := 1 to MLen do
  begin
    Long :=0;
    for j := 1 to MLen do
      if B[i,j].Empty <>EmptyBlock then Long := Long + 1;
    if MaxLen<Long then MaxLen := Long;
  end;
  GetHeight := MaxLen;
end;

//---------------------------------------------------------------------
{ 用來(lái)畫(huà)一個(gè)立體的方塊 }
{允許使用圖片方塊 }
procedure DrawRect(Canvas: TCanvas;X1,Y1,X2,Y2: Integer;Color: TColor);
var
   Rect: TRect;
begin
   if(UseImgBlock)then
   begin
      Rect.Left := X1;
      Rect.Top := Y1;
      Rect.Right := X1+14;//X2;
      Rect.Bottom := Y1+14;//Y2;
      Canvas.StretchDraw(Rect,frmGame.ImgBlock.Picture.Graphic);
   end
   else
   begin
      Canvas.Brush.Color := Color;
      Canvas.Pen.Color := Color;
      Canvas.Rectangle(X1,Y1,X2,Y2);

      Canvas.Pen.Color := clWhite;
      Line(Canvas,X1,Y1,X1,Y2);
      Line(Canvas,X1,Y1,X2,Y1);

      Canvas.Pen.Color := clBlack;
      Line(Canvas,X2,Y1,X2,Y2);
      Line(Canvas,X1,Y2,X2,Y2);

      Canvas.MoveTo(X1+1,Y2-1);
      Canvas.Pen.Color := clGray;
      Canvas.LineTo(X2-1,Y2-1);
      Canvas.LineTo(X2-1,Y1+1);
   end;
end;

//---------------------------------------------------------------------
{ 在 (X,Y) 位置畫(huà)出方塊背景 }
{ 方塊用數(shù)組 B 表示         }
procedure DrawBoxBK(Canvas: TCanvas;
                    X,Y: Integer;
                    B: TBoxArray;
                    Color: TColor);
var

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲女同一区二区| 国产亚洲欧美日韩在线一区| 国产午夜亚洲精品不卡| 久久国产福利国产秒拍| 粉嫩aⅴ一区二区三区四区五区| 在线免费精品视频| 国产日韩欧美高清| 美女高潮久久久| 欧美日韩中字一区| 18成人在线观看| 国产精品中文有码| 日韩精品一区二区三区swag | 欧美另类久久久品| 亚洲欧美日韩国产一区二区三区| 国产精品一区不卡| 日韩欧美一区二区免费| 亚洲国产欧美日韩另类综合 | 欧美中文字幕一区| 亚洲免费视频中文字幕| 不卡影院免费观看| 国产人妖乱国产精品人妖| 久久99精品久久久久久动态图 | 欧美丝袜丝交足nylons| 亚洲女子a中天字幕| 波多野洁衣一区| 中文字幕国产一区| 国产精品18久久久久久久网站| 日韩欧美三级在线| 日韩电影一区二区三区四区| 欧美视频一区在线观看| 亚洲男人的天堂在线观看| 成人黄色一级视频| 国产精品女主播在线观看| 国产成人午夜精品影院观看视频 | 欧美日韩一区精品| 一区二区三区精品在线| 91啦中文在线观看| 亚洲黄网站在线观看| 色综合久久中文字幕| 亚洲丝袜制服诱惑| 色呦呦日韩精品| 一区二区激情小说| 欧美日免费三级在线| 亚洲一区二三区| 欧美日韩黄视频| 五月天激情小说综合| 欧美老年两性高潮| 日韩av电影免费观看高清完整版在线观看| 欧美日本国产视频| 日本vs亚洲vs韩国一区三区二区 | 日韩片之四级片| 久久精品噜噜噜成人av农村| 欧美大片一区二区| 国模套图日韩精品一区二区| 久久久午夜精品理论片中文字幕| 国内成+人亚洲+欧美+综合在线| 久久久不卡影院| 丁香啪啪综合成人亚洲小说| 中文字幕一区二区三区四区| 91丨porny丨户外露出| 一区二区三区久久| 日韩一级视频免费观看在线| 久久99精品国产.久久久久久| 久久综合久久综合亚洲| 成人综合婷婷国产精品久久免费| 成人欧美一区二区三区黑人麻豆 | 日本福利一区二区| 午夜精品久久久久久久99水蜜桃 | 91免费看`日韩一区二区| 玉足女爽爽91| 日韩一区二区免费视频| 国产jizzjizz一区二区| 亚洲乱码中文字幕综合| 91精品国产综合久久久蜜臀粉嫩| 九九九久久久精品| 中文字幕日韩精品一区| 欧美精品日日鲁夜夜添| 国产乱色国产精品免费视频| 综合久久综合久久| 欧美人动与zoxxxx乱| 经典三级一区二区| 亚洲精品videosex极品| 欧美变态凌虐bdsm| 91欧美激情一区二区三区成人| 亚洲成人av电影| 久久久91精品国产一区二区精品| 91视频观看视频| 免费不卡在线视频| 国产精品国产a级| 91精品国产欧美日韩| 国产成人免费av在线| 亚洲一区二区三区四区的 | 欧美精品自拍偷拍动漫精品| 韩国毛片一区二区三区| 亚洲精品免费在线观看| 欧美成人午夜电影| 91久久香蕉国产日韩欧美9色| 麻豆传媒一区二区三区| 亚洲欧美色综合| 久久久美女艺术照精彩视频福利播放| 色狠狠综合天天综合综合| 国产主播一区二区| 亚洲中国最大av网站| 国产性天天综合网| 欧美精品乱人伦久久久久久| 成人视屏免费看| 麻豆精品在线视频| 亚洲国产日韩a在线播放| 国产精品婷婷午夜在线观看| 91精品国产一区二区三区| 99九九99九九九视频精品| 久久国产成人午夜av影院| 亚洲福利视频一区二区| 国产精品不卡一区二区三区| 欧美v亚洲v综合ⅴ国产v| 欧美三级资源在线| 9i在线看片成人免费| 国产一区999| 日本v片在线高清不卡在线观看| 曰韩精品一区二区| 国产精品国产三级国产a| 久久久久国产精品麻豆ai换脸| 日韩一区二区精品| 欧美日韩国产在线播放网站| 99精品国产99久久久久久白柏 | 亚洲综合一区在线| 国产精品久久久久影院色老大 | 欧美一区二区三区免费视频| 色婷婷av一区二区三区软件| 国产成人在线观看| 国模大尺度一区二区三区| 免费在线观看日韩欧美| 亚洲成人精品一区二区| 亚洲欧美日韩在线不卡| 中文字幕中文字幕在线一区| 久久亚洲影视婷婷| 日韩欧美视频在线| 欧美一区二区在线观看| 欧美日韩精品三区| 欧美三级午夜理伦三级中视频| av在线播放成人| 豆国产96在线|亚洲| 国产麻豆视频一区| 国产一区二区在线电影| 久久国产麻豆精品| 蜜桃av噜噜一区| 日本中文字幕一区二区有限公司| 亚洲va天堂va国产va久| 亚洲国产精品久久不卡毛片 | 欧美国产日本视频| 日本一区二区三区久久久久久久久不 | 蜜桃一区二区三区在线| 丝袜美腿亚洲色图| 日韩制服丝袜av| 亚洲大片精品永久免费| 亚洲午夜在线观看视频在线| 亚洲高清视频在线| 天堂精品中文字幕在线| 天堂午夜影视日韩欧美一区二区| 亚洲成av人片一区二区梦乃| 婷婷综合另类小说色区| 视频在线观看一区| 青青草国产精品97视觉盛宴| 三级欧美在线一区| 蜜臀av在线播放一区二区三区| 免费美女久久99| 韩国精品主播一区二区在线观看 | 秋霞电影一区二区| 毛片av中文字幕一区二区| 国内精品国产成人国产三级粉色| 国产美女主播视频一区| 高清beeg欧美| 91在线国产福利| 欧美色综合影院| 欧美一区二区视频网站| 日韩美女视频在线| 久久久91精品国产一区二区精品 | 国产欧美日韩精品a在线观看| 中文在线资源观看网站视频免费不卡 | 91久久精品国产91性色tv| 欧美午夜寂寞影院| 91精品国产综合久久婷婷香蕉| 日韩美女主播在线视频一区二区三区| 久久这里只有精品首页| 国产精品区一区二区三| 亚洲免费资源在线播放| 日韩精品免费视频人成| 激情丁香综合五月| av亚洲精华国产精华| 欧美综合一区二区三区| 日韩一区二区在线观看视频播放| 久久综合久久综合久久| 亚洲婷婷综合久久一本伊一区| 亚洲午夜在线电影| 免费在线观看一区| 成人久久18免费网站麻豆 | 粉嫩av一区二区三区| 日本精品一级二级| 欧美一级免费大片| 中文字幕免费观看一区|