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

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

?? ubox.pas

?? 搞笑俄羅斯方塊這個程序由delphi制作而成。
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
{  俄羅斯方塊核心控制單元  }
unit UBox;

interface

uses
  Windows,SysUtils, Graphics;

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

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

//---------------------------------------------------------------------
type
  TBoxArray  = Array [1..MLen,1..MLen] of TBlockCell;      //單個方塊對應的數組
  TEmptyLine = Array [1..MLen] of Integer;                 //已經完成的行的記錄
  TMapData   = Array [1..MapWid,1..MapHei] of TBlockCell;  //當前記錄



//---------------------------------------------------------------------
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;                                 //背景數組
  CurX,CurY: Integer;                            //當前方塊的位置
  LasX,LasY: Integer;                            //上一次方塊的位置
  BkColor: TColor;                               //背景的顏色
  BColor: TColor;                                //畫方塊的顏色
  Block: TBoxArray;                              //每一次出現的方塊
  EmptyLine: TEmptyLine;                         //已經完成的行
  BlockId: Integer;                              //方塊的屬類
  NextId: Integer;                               //方塊的屬類
  Score: Integer;                                //玩家的得分
  Level: Integer;                                //游戲玩家的級別

  ChangeKey: Integer;                            //用來換方向的鍵
  LeftKey: Integer;                              //左方向
  RightKey: Integer;                             //右方向
  DownKey: Integer;                              //下降鍵
  DirectDownKey: Integer;                        //直接下降鍵

  CurLevelScore: Integer;                        //本關得分


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

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

//---------------------------------------------------------------------
{ 用字符串對方塊數組進行設置 }
{ 如:"1111" 表示一個長條    }
{ I 表示數組的第 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;

//---------------------------------------------------------------------
{ 對方塊數組進行初始化,}
{ 使其獲得基本的形狀。  }
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;


  {終于修正了這個核心bug 原來這里應該使用 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;

//---------------------------------------------------------------------
{ 獲取一個方塊的寬度 }
function GetWidth(B: TBoxArray): Integer;
var
  i,j,MaxLen,Long: Integer;
begin
  { 對于5 和 6 號 進行特殊掃描 }
  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;

//---------------------------------------------------------------------
{ 獲取一個方塊的高度 }
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;

//---------------------------------------------------------------------
{ 用來畫一個立體的方塊 }
{允許使用圖片方塊 }
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) 位置畫出方塊背景 }
{ 方塊用數組 B 表示         }
procedure DrawBoxBK(Canvas: TCanvas;
                    X,Y: Integer;
                    B: TBoxArray;
                    Color: TColor);
var

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久久第一福利| 日本久久精品电影| 99v久久综合狠狠综合久久| av爱爱亚洲一区| 欧美日韩国产另类一区| 欧美成人a视频| 亚洲人成伊人成综合网小说| 日韩精品电影一区亚洲| 成人黄色小视频在线观看| 欧美日韩极品在线观看一区| 国产亚洲人成网站| 午夜精品一区二区三区三上悠亚| 韩国女主播一区二区三区| 一本一本大道香蕉久在线精品 | 国产精品美女一区二区| 亚洲第一av色| 国产高清亚洲一区| 7777精品伊人久久久大香线蕉经典版下载| 国产欧美一区二区精品久导航 | 欧美一区二区三区不卡| 国产精品传媒入口麻豆| 水野朝阳av一区二区三区| 国产欧美日韩亚州综合| 亚洲高清视频中文字幕| 成人久久18免费网站麻豆 | 毛片av一区二区| 91丨porny丨中文| 欧美成人女星排名| 亚洲一二三区视频在线观看| 国产一区二区女| 欧美日韩大陆一区二区| 国产精品免费av| 国模套图日韩精品一区二区| 欧美日韩精品欧美日韩精品| 综合久久一区二区三区| 国产一区二区三区在线观看精品| 欧美人伦禁忌dvd放荡欲情| 最近日韩中文字幕| 国产成人啪免费观看软件| 欧美放荡的少妇| 亚洲乱码国产乱码精品精可以看| 国产米奇在线777精品观看| 欧美一级片免费看| 午夜影院久久久| 91影院在线观看| 国产欧美日韩亚州综合| 国模一区二区三区白浆| 欧美一区二区三区视频在线观看| 亚洲精品免费在线| 99r精品视频| 日本一区二区电影| 国产精品亚洲一区二区三区妖精| 欧美一区二区三区免费在线看 | 欧美这里有精品| 亚洲日穴在线视频| 成人小视频免费在线观看| 日韩精品一区二区三区三区免费| 午夜欧美大尺度福利影院在线看 | 亚洲综合av网| 日本精品视频一区二区| 国产精品久久久久久福利一牛影视| 久久精品国产久精国产| 日韩一区二区三区四区五区六区| 亚洲电影在线播放| 在线观看欧美日本| 一区二区三区电影在线播| 97精品超碰一区二区三区| 成人欧美一区二区三区白人 | 亚洲欧美色一区| www.色综合.com| 中文字幕一区在线观看视频| www.爱久久.com| 国产精品美女www爽爽爽| 国产69精品久久久久毛片 | 91在线一区二区| 中文字幕一区二区三区不卡在线| 成人v精品蜜桃久久一区| 国产精品美女www爽爽爽| av电影在线观看不卡| 国产精品免费久久| 色婷婷久久99综合精品jk白丝| 亚洲欧美偷拍另类a∨色屁股| 色综合久久天天| 亚洲尤物在线视频观看| 欧美日韩精品一区视频| 日本午夜精品视频在线观看| 91精品国产高清一区二区三区蜜臀| 青青草原综合久久大伊人精品| 日韩免费观看2025年上映的电影| 久久国内精品视频| 久久久久久免费网| 成人av中文字幕| 一区二区三区精品久久久| 欧美日韩精品综合在线| 久久99精品久久久久久| 中文字幕精品三区| 日本道色综合久久| 日韩精品乱码免费| 久久品道一品道久久精品| av网站一区二区三区| 亚洲一二三专区| 日韩欧美亚洲一区二区| 国产成人在线影院| 一个色妞综合视频在线观看| 欧美美女网站色| 国产成人在线电影| 亚洲精品久久嫩草网站秘色| 在线综合+亚洲+欧美中文字幕| 黄一区二区三区| 亚洲天堂中文字幕| 日韩欧美国产电影| 成人精品免费网站| 亚洲成人在线免费| 久久看人人爽人人| 色哟哟国产精品免费观看| 麻豆久久一区二区| 国产精品电影一区二区三区| 欧美日韩一区二区三区不卡| 精品一区二区三区不卡| 自拍偷拍国产精品| 欧美一区二区三区在线视频| 国产成人综合精品三级| 亚洲午夜电影网| 国产女主播在线一区二区| 欧美日韩黄色影视| 顶级嫩模精品视频在线看| 亚洲www啪成人一区二区麻豆| 久久青草欧美一区二区三区| 欧美性大战久久| 国产成人av电影在线| 天天免费综合色| 国产精品欧美极品| 欧美一级艳片视频免费观看| 99视频超级精品| 久久精品国产99久久6| 亚洲男同性视频| 久久久777精品电影网影网| 欧美日韩精品一区视频| 丁香另类激情小说| 久热成人在线视频| 亚洲国产成人av网| 日韩码欧中文字| 337p日本欧洲亚洲大胆精品| 欧美色图激情小说| av不卡在线观看| 国产毛片精品国产一区二区三区| 午夜在线成人av| 一区二区在线免费| 亚洲国产精品传媒在线观看| 日韩视频在线你懂得| 色播五月激情综合网| 成人黄色电影在线 | 国产欧美视频一区二区| 日韩午夜小视频| 欧美乱妇一区二区三区不卡视频| 91免费在线视频观看| 国产高清精品久久久久| 久久99国产精品成人| 视频一区二区三区中文字幕| 伊人色综合久久天天人手人婷| 国产精品视频一二三| 久久久99精品久久| 精品成a人在线观看| 日韩欧美的一区| 91麻豆精品国产91久久久使用方法| 欧美在线一区二区三区| 91蜜桃婷婷狠狠久久综合9色| 国产suv精品一区二区883| 国内精品免费在线观看| 麻豆成人av在线| 三级久久三级久久| 午夜日韩在线观看| 五月婷婷久久综合| 亚洲高清免费观看高清完整版在线观看| 亚洲女同一区二区| 亚洲美女视频一区| 亚洲欧美日韩一区二区三区在线观看| 国产精品入口麻豆原神| 国产人成亚洲第一网站在线播放| 久久青草国产手机看片福利盒子| 精品久久久久99| 欧美成人伊人久久综合网| 日韩欧美国产麻豆| 久久综合色综合88| 久久九九全国免费| 国产精品免费丝袜| 亚洲免费观看高清完整| 亚洲免费看黄网站| 亚洲图片自拍偷拍| 丝袜美腿一区二区三区| 日本va欧美va瓶| 韩国成人福利片在线播放| 狠狠色狠狠色综合日日91app| 韩日精品视频一区| 国产成人午夜99999| 9人人澡人人爽人人精品| 一本色道**综合亚洲精品蜜桃冫| 91福利视频久久久久| 欧美精品视频www在线观看| 日韩一区二区三区高清免费看看 |