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

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

?? ubox.pas

?? 很好的俄羅斯方塊
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
  i,j: Integer;
begin
  Canvas.Brush.Color := Color;
  Canvas.Pen.Color := Color;
  for i := 1 to MLen do
    for j := 1 to MLen do
      if B[i,j].Empty <>EmptyBlock then
      Canvas.Rectangle(X+i*BWid-BWid,
                       Y+j*BWid-BWid,
                       X+i*BWid,
                       Y+j*BWid);    //修正了覆蓋背景中的bug使改變背景成為可能。
                       {原來的程序:
                       X+i*BWid -1,
                       Y+j*BWid -1);}    //修正了覆蓋背景中的bug使改變背景成為可能。
end;

//---------------------------------------------------------------------
{ 在 (X,Y) 位置畫出方塊 }
{ 方塊用數組 B 表示     }
procedure DrawBoxXY(Canvas: TCanvas;
                    X,Y: Integer;
                    B: TBoxArray);
var
  i,j: Integer;
begin
  for i := 1 to MLen do
    for j := 1 to MLen do
      if B[i,j].Empty <>EmptyBlock {=true} then
      DrawRect(Canvas,X+i*BWid-BWid,
               Y+j*BWid-BWid,
               X+i*BWid-1,
               Y+j*BWid-1,B[i,j].Color);
end;

//---------------------------------------------------------------------
{ 使用背景數組的維數為坐標 }
{ 畫方塊,這樣可以脫離實際 }
{ 屏幕                     }
procedure BoxMoveTo(Canvas: TCanvas;
                    X,Y: Integer;
                    B: TBoxArray);
begin
  DrawBoxBK(Canvas,BkLeft+(LasX-1)*BWid,BkTop+(LasY-1)*BWid,B,BkColor);
  DrawBoxXY(Canvas,BkLeft+(X-1)*BWid,BkTop+(Y-1)*BWid,B);
end;

//---------------------------------------------------------------------
{ 畫背景圖 }

procedure DrawMap(Canvas: TCanvas);
var
  i,j: Integer;
begin
  Canvas.Pen.Color := clYellow xor BkColor;
  Canvas.Brush.Color := BkColor;
  Canvas.Rectangle(BkLeft+3*BWid-1,BkTop-1,
                   BkLeft+(MapWid-3)*BWid+1,
                   BkTop+(MapHei-3)*BWid+1);
  for i := 4 to MapWid-3 do
    for j := 1 to MapHei-3 do
      if Map[i,j].Empty <>EmptyBlock{=true} then
      DrawRect(Canvas,BkLeft+i*BWid-BWid,BkTop+j*BWid-BWid,
                            BkLeft+i*BWid-1,BkTop+j*BWid-1,Map[i,j].Color);

end;

//---------------------------------------------------------------------
{ 測試是否可以走到 (X,Y) 地圖位置 }
function  CanGo(X,Y: Integer;B: TBoxArray): Boolean;
var
  i,j: Integer;
  Flag: Boolean;
begin
  if (X<1) or (X>MapWid) or
     (Y<1) or (Y>MapHei) then
     begin
       CanGo := false;
       Exit;
     end;

  Flag := true;
  for i := X to X+MLen-1 do
    for j := Y to Y+MLen-1 do
    begin
      if (Map[i,j].Empty <>EmptyBlock{true}) and (B[i-X+1,j-Y+1].Empty <>EmptyBlock{=true}) then
        Flag := false;
    end;
  CanGo := Flag;
end;

//---------------------------------------------------------------------
{ 用來對兩個數組之間的拷貝 }
procedure CopyBox(var ObjBox: TBoxArray;Source: TBoxArray);
var
  i,j: Integer;
begin
  for i := 1 to MLen do
    for j := 1 to MLen do
      ObjBox[i,j] := Source[i,j];
end;

//---------------------------------------------------------------------
{ 對一個數組進行轉置 }
{ 用來實現反轉效果   }
procedure Change(Canvas: TCanvas;var B: TBoxArray;var CurX: Integer;var CurY:Integer);
var
  i,j: Integer;
  tmp: TBoxArray;
begin
  if BlockId = 1 then Exit;
  if (BlockId = 7) then
  begin
    for i := 1 to MLen do
      for j:= 1 to MLen do
        tmp[i,j] := B[j,i];
  end else
  begin
      for i := 1 to MLen do
         for j := 1 to MLen do
            tmp[i,j].Empty  := EmptyBlock;

     for i := 1 to 3 do
         for j := 1 to 3 do
           if B[i,j].Empty  <> EmptyBlock then tmp[j,3-i+1] := B[i,j];
  end;

  if not CanGo(CurX,CurY,tmp) then exit;

  DrawBoxBK(Canvas,BkLeft+(LasX-1)*BWid,BkTop+(LasY-1)*BWid,B,BkColor);
  CopyBox(B,tmp);

  DrawBoxXY(Canvas,BkLeft+(CurX-1)*BWid,BkTop+(CurY-1)*BWid,B);
end;

//---------------------------------------------------------------------
{ 當一個方塊停止的時候,把他完全復制給背景 }
procedure MoveToMap(X,Y: Integer;B: TBoxArray);
var
  i,j: Integer;
begin
  for i := X to X+MLen-1 do
    for j := Y to Y+MLen-1 do
      if B[i-X+1,j-Y+1].Empty <>EmptyBlock then Map[i,j] := B[i-X+1,j-Y+1];
end;

//---------------------------------------------------------------------
{ 在 MAP 中找已經完成的行 }
procedure ScanEmptyLine(Canvas: TCanvas;var Line: TEmptyLine);
var
  i,j,k: Integer;
  EptLine: Boolean; //是一個空行
begin
  k := 1;
  for i := 1 to MapHei do
  begin
    EptLine := true;
    Line[k] := 0;
    { 掃描一行 }
    for j := 1 to MapWid do
      if Map[j,i].Empty = EmptyBlock then EptLine := false;
    if EptLine then
    begin
      Line[k] := i;
      k := k + 1;
      if k=5 then exit;
    end;
  end;
  //for i := CurY to CurY+Hei-1 do
  {for i := CurY to CurY + 3 do
  begin
    EptLine := true;
    Line[i-CurY+1] := 0;
    for j := 1 to MapWid do
      if Map[j,i].Empty = EmptyBlock then EptLine := false;
    if EptLine then
      Line[i-CurY+1] := i;
  end;
  }
end;

//---------------------------------------------------------------------
{ 對地圖進行消行的處理 }
procedure FreshMap(Canvas: TCanvas;Line: TEmptyLine);
var
  i: Integer;
  Count: Integer;
  Hei: Integer;
begin
  Hei := GetHeight(Block);
  Count := 0;
  for i := 1 to Hei do
  begin
    if Line[i]<>0 then
    begin
      DelAMapLine(Line[i]);
      DrawMap(Canvas);
      Count := Count +1;
    end;
  end;
  {在這里積分,按平方記}
  Score := Score +Count*Count*100;
  CurLevelScore := CurLevelScore +Count*Count*100;

end;

//---------------------------------------------------------------------
{ 刪除地圖數組中的第 I 行 }
procedure DelAMapLine(I: Integer);
var
  j,k: Integer;
begin
  for k := I downto 2 do
    for j := 4 to MapWid - 3 do  {這里一定要使用 4 和 MapWid - 3 這兩個之間的寬度,否則有錯誤} 
      Map[j,k] := Map[j,k-1];
end;

//---------------------------------------------------------------------
function Max(X1,X2: Integer): Integer;
begin
  if X1 <= X2 then Max := X2
    else Max := X1;
end;

//---------------------------------------------------------------------
{ 顯示下個方塊 }
procedure ShowNext(Canvas: TCanvas);
var
   Block: TBoxArray;
begin
  Canvas.Brush.Color := frmGame.Color;
  Canvas.Pen.Color := frmGame.Color;
  Canvas.Rectangle(BkLeft+290,BkTop+50,BkLeft+290+4*BWid,BkTop+50+4*BWid);
  CopyBox(Block,Box[NextId]);
  SetBlockColor(Block,clGreen xor frmGame.Color);
  DrawBoxXY(Canvas,BkLeft+290,BkTop+50,Block);
end;

//---------------------------------------------------------------------
{ 顯示提示信息 }
procedure ShowMess(Canvas: TCanvas;S: String);
begin
  Canvas.Brush.Color := clWhite;
  Canvas.Pen.Color := clYellow;
  Canvas.TextOut(200,60,S);
end;

//---------------------------------------------------------------------
{設置方塊的顏色}
procedure SetBlockColor(var B:TBoxArray;Color: TColor);
var
   i,j: integer;
begin
   for i:= 1 to MLen do
      for j:=1 to MLen do
      B[i,j].Color := Color;
end;

//---------------------------------------------------------------------
{修正方快的坐標偏差(主要是垂直方向)
  這里存在一個修正問題,有可能出現下面的情況:
       0,0,0,0
       1,0,0,0
       1,1,1,0
       0,0,0,0
  那么這個時候應該把CurY的值修正為左上角的第一個一的直,而以前CurY的值
  為左上角(1,1)坐標的直。
  用在進行變換方快之后調整。。。
}
procedure CheckBlock(var B:TBoxArray);
var
   i,j: integer;
   EmptyLine: Boolean;
begin
   for j:= 1 to GetHeight(B) do
   begin
      EmptyLine := true;//如果一行為空那么這個直為true;
      for i:= 1 to GetWidth(B) do
         if B[i,j].Empty = NotEmptyBlock then EmptyLine := false;

      if EmptyLine then
      begin
         CurY := CurY + 1; //修正當前的y坐標
         exit;
      end;{if}
   end;{for i}
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
石原莉奈在线亚洲二区| 亚洲国产成人porn| 欧美色精品在线视频| 国产在线精品视频| 婷婷开心久久网| 日本一区二区动态图| 91精品欧美一区二区三区综合在| 国产99精品国产| 美女视频第一区二区三区免费观看网站| 国产精品久久久久毛片软件| 91精品国产色综合久久不卡蜜臀 | 制服丝袜日韩国产| 不卡一卡二卡三乱码免费网站| 久久国产精品99久久人人澡| 亚洲国产精品久久不卡毛片| 亚洲天堂免费看| 国产片一区二区| 精品国产在天天线2019| 欧美日韩久久久久久| 91亚洲永久精品| 成人国产精品视频| 国产伦精品一区二区三区免费 | 成人av电影在线| 国内精品写真在线观看| 日韩黄色在线观看| 亚洲午夜久久久久久久久久久| 国产精品免费视频网站| 久久久国产精华| 久久综合一区二区| 精品免费国产二区三区| 欧美一级xxx| 欧美一区二区黄| 91精品国产欧美一区二区18| 欧美丰满少妇xxxbbb| 精品视频999| 3751色影院一区二区三区| 欧美日韩www| 欧美一级在线免费| 欧美一级理论片| 日韩欧美在线观看一区二区三区| 欧美日韩国产综合草草| 欧美日本在线视频| 欧美美女bb生活片| 777久久久精品| 日韩欧美成人激情| 久久欧美一区二区| 国产精品久久久久久久久免费樱桃 | 波多野结衣在线aⅴ中文字幕不卡| 国产精品一区免费视频| 成人免费毛片a| 92精品国产成人观看免费| 色美美综合视频| 欧美蜜桃一区二区三区| 精品久久人人做人人爰| 国产欧美日韩激情| 亚洲精品久久久久久国产精华液 | 国产精品夜夜嗨| 成人永久免费视频| 色系网站成人免费| 欧美一区二区三区小说| 久久色在线视频| 亚洲色图欧美在线| 婷婷丁香激情综合| 国产在线一区二区| 一本色道亚洲精品aⅴ| 欧美日韩国产美女| 久久综合五月天婷婷伊人| 亚洲欧美另类久久久精品2019| 亚洲成av人片在线观看无码| 美脚の诱脚舐め脚责91| 成人午夜激情片| 欧美三级电影在线观看| 久久在线免费观看| 亚洲精选在线视频| 久久av资源网| 日韩一级片在线播放| 欧美精品v日韩精品v韩国精品v| 精品美女在线播放| 国产精品剧情在线亚洲| 日韩成人精品在线观看| 国产不卡高清在线观看视频| 精品视频免费在线| 欧美激情中文字幕| 日韩精品一二三四| yourporn久久国产精品| 日韩欧美一级特黄在线播放| 国产精品福利一区| 日本不卡123| 91啦中文在线观看| 精品国产乱码久久久久久图片| 亚洲欧洲日韩在线| 精品一二三四区| 欧美日韩一级片网站| 国产亲近乱来精品视频| 日韩高清一级片| 一本大道综合伊人精品热热| 欧美精品一区二区三区在线播放| 一区二区在线观看视频| 国产美女主播视频一区| 欧美视频完全免费看| 国产精品区一区二区三| 久久国产精品第一页| 欧美视频在线观看一区| 国产精品福利一区| 国产美女精品在线| 欧美一级电影网站| 亚洲成人午夜电影| 95精品视频在线| 国产精品美女www爽爽爽| 狠狠色丁香婷综合久久| 91精品欧美久久久久久动漫| 亚洲女人小视频在线观看| 国产成人精品一区二| 精品欧美一区二区久久| 性做久久久久久久久| 色婷婷狠狠综合| 久久网站最新地址| 老司机精品视频一区二区三区| 欧美三级电影在线观看| 一区二区三区四区五区视频在线观看| 丁香亚洲综合激情啪啪综合| 精品动漫一区二区三区在线观看| 日韩精品福利网| 欧美高清www午色夜在线视频| 一区二区三区高清| 色综合久久久久综合| 亚洲视频在线一区| www.亚洲人| 亚洲欧洲精品天堂一级| av一区二区三区黑人| 中文字幕中文字幕一区| 成人av电影免费在线播放| 国产精品国产三级国产有无不卡| 国产99久久久国产精品免费看| 国产色91在线| 国产91丝袜在线观看| 国产精品欧美久久久久无广告| 国产成人免费视频网站 | 99精品久久免费看蜜臀剧情介绍| 26uuu亚洲| 国产精品白丝av| 中文字幕免费一区| 91麻豆免费在线观看| 亚洲乱码国产乱码精品精的特点 | 国产精品素人视频| 99久久99久久免费精品蜜臀| 自拍偷拍亚洲激情| 在线中文字幕一区| 日韩av一二三| 久久久另类综合| 99国产精品一区| 亚洲午夜在线观看视频在线| 91精品国产一区二区三区蜜臀| 狠狠色丁香九九婷婷综合五月| 欧美精品一区二区三区四区| 国产不卡视频一区二区三区| 亚洲精品乱码久久久久久| 欧美老女人第四色| 国产一区二区三区最好精华液| 欧美国产欧美综合| 欧美亚洲综合网| 久久电影国产免费久久电影| 国产日韩欧美精品一区| 91久久精品一区二区| 青青草国产精品97视觉盛宴| 久久久午夜精品| 日本精品裸体写真集在线观看 | 91色视频在线| 日韩极品在线观看| 日本一区二区三区在线不卡| 色吊一区二区三区| 精品亚洲porn| 亚洲免费大片在线观看| 日韩无一区二区| 97精品国产露脸对白| 日韩高清欧美激情| 国产精品久久久久婷婷二区次| 欧美日韩精品福利| 成人激情视频网站| 日韩精品一区第一页| 中文字幕不卡在线观看| 欧美理论在线播放| proumb性欧美在线观看| 日本vs亚洲vs韩国一区三区| 国产精品灌醉下药二区| 91精品国产欧美一区二区成人| 播五月开心婷婷综合| 精品一区二区在线观看| 亚洲国产另类av| 国产精品日韩精品欧美在线| 欧美一区午夜视频在线观看| 91欧美一区二区| 国产精品一区在线观看乱码| 五月天视频一区| 怡红院av一区二区三区| 中文字幕欧美日韩一区| 精品国产区一区| 欧美日韩国产免费一区二区| 色综合色狠狠天天综合色| 国产传媒一区在线|