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

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

?? uformmain.pas

?? 單機版泡泡堂游戲源代碼
?? PAS
?? 第 1 頁 / 共 4 頁
字號:
      if RCount <= 16 then
        Inc(RCount)
      else
        RCount := 0;
      if (X) > (Cnt_OffsetX + Cnt_MapWidth) then
        X := Cnt_OffsetX + Cnt_MapWidth;
      FAnimRun := TRUE;
      goto GotoRunBreak;
    end;
  end;

  GotoRunBreak:

  if isKeyChange and (TmpDir <> Dir) then
  begin
    OldDir := TmpDir;
  end;

  ModifyZIndex(x, y);
  Collision;

  if ID = 0 then
  begin

    if FormMain.DXInput.Keyboard.Keys[Ord('A')] then
    begin
      if CanDropBomb(x, y) and ((GetTickCount - FDropBombTimeOut) >
        Cnt_DropBombTimeOut) and (BombCount < MaxBombCount) then
      begin
        FDropBombTimeOut := GetTickCount;
        Bomb := TBombSprite.Create(FormMain.DXSpriteEngine.Engine,
          FormMain.Player1);
        //去掉其他的新炸彈
  //      for i := 0 to BombList.Count - 1 do
  //        TBombSprite(BombList.Items[i]).newBomb := FALSE;
        BombList.Add(Bomb);
      end;
    end;

  end
  else                                  //玩家二
  begin

    if FormMain.DXInput.Keyboard.Keys[Ord('/')] then
    begin
      if CanDropBomb(x, y) and ((GetTickCount - FDropBombTimeOut) >
        Cnt_DropBombTimeOut) and (BombCount < MaxBombCount) then
      begin
        FDropBombTimeOut := GetTickCount;
        Bomb := TBombSprite.Create(FormMain.DXSpriteEngine.Engine,
          FormMain.Player2);
        //去掉其他的新炸彈
//      for i := 0 to BombList.Count - 1 do
//        TBombSprite(BombList.Items[i]).newBomb := FALSE;
        BombList.Add(Bomb);
      end;
    end;
  end;

  //formMain.Caption := inttostr(Integer(Dir)) + ':' + inttostr(Integer(OldDIr));
end;

procedure TFormMain.InitPlayer;
var
  PerY              : Integer;
begin
  Player1 := TPlayerSprite.Create(DXSpriteEngine.Engine);
  Player1.Face.Image := DXImageList.Items.Find('player2');
  Player1.Face.Width := Player1.Face.Image.Width;
  Player1.Face.Height := Player1.Face.Image.Height;
  Player1.Face.AnimCount := Player1.Face.Image.PatternCount;
  Player1.Power := 1;
  Player1.Speed := 2000;
  Player1.MaxBombCount := 1;
  Player1.X := GetPlayerPos(0).X + Cnt_OffsetX;
  if Player1.Image.PatternHeight > Cnt_TileHeight then
    PerY := Player1.Image.PatternHeight - Cnt_TileHeight
  else
    PerY := 0;
  Player1.Y := GetPlayerPos(0).Y + Cnt_OffsetY - PerY;
  Player1.ID := 0;
  Player1.gameOver := false;
  PlayerList.AddObject('Player1', Player1);

  Player2 := TPlayerSprite.Create(DXSpriteEngine.Engine);
  Player2.Face.Image := DXImageList.Items.Find('player1');
  Player2.Face.Width := Player2.Face.Image.Width;
  Player2.Face.Height := Player2.Face.Image.Height;
  Player2.Face.AnimCount := Player2.Face.Image.PatternCount;
  Player2.Power := 2;
  Player2.Speed := 1500;
  Player2.MaxBombCount := 1;
  Player2.gameOver := false;
  Player2.X := GetPlayerPos(1).X + Cnt_OffsetX;
  if Player2.Image.PatternHeight > Cnt_TileHeight then
    PerY := Player2.Image.PatternHeight - Cnt_TileHeight
  else
    PerY := 0;
  Player2.Y := GetPlayerPos(1).Y + Cnt_OffsetY - PerY;
  Player2.ID := 1;
  PlayerList.AddObject('Player2', Player2);

  Player1.HP := 10;
  Player2.HP := 10;

end;

procedure TFormMain.InitScreen;
begin

  DXDraw.Finalize;

  if not (doFullScreen in DXDraw.Options) then
  begin
    StoreWindow;
    DXDraw.Cursor := crDefault;
    BorderStyle := bsNone;
    DXDraw.Options := DXDraw.Options + [doFullScreen];
  end;

  DXDraw.Initialize;

end;

function TPlayerSprite.GetLeft: double;
begin
  result := x;
end;

function TPlayerSprite.GetTop: double;
begin
  result := y;
end;

procedure TPlayerSprite.ModifyZIndex(x, y: Double);
var
  L                 : integer;
begin
  y := Y - cnt_PlayerTop + 1;
  L := Trunc(Y / Cnt_TileHeight) + 1;
  if L = 0 then
    Inc(l, 1);
  L := L * 2 + 1;
  Z := 0;
  Face.Z := L;
end;

procedure TPlayerSprite.SetLeft(value: double);
begin
  x := value;
end;

procedure TPlayerSprite.SetTop(value: double);
begin
  y := value;
end;

procedure TFormMain.InitMapTile;
var
  ix, iy, PerY      : Integer;
  TileImg, ObjImage, ObjImg1, ObjImg2: TPictureCollectionItem;
  ClientX, ClientY  : Integer;
  iZ                : Integer;
  ts                : TTileSprite;
  os                : TObjectSprite;
label
  setZIndex;
begin
  // 600 X 520 的圖像大小,塊大小為40像素
  TileImg := DXImageList.Items.Find('tile');
  ObjImg1 := DXImageList.Items.Find('building');
  ObjImg2 := DXImageList.Items.Find('box');

  for ix := 0 to Cnt_TileWidthCount do
  begin
    iZ := 0;
    for iy := 0 to Cnt_TileHeightCount do
    begin
      ClientX := iX * Cnt_TileWidth + Cnt_OffsetX;
      ClientY := iY * Cnt_TileHeight + Cnt_OffsetY;
      if mapTile[ix, iy].TileIndex > 0 then
      begin
        ts := TTileSprite.Create(DXSpriteEngine.Engine);
        with ts do
        begin
          Image := TileImg;
          Width := Image.Width;
          Height := Image.Height;
          X := ClientX;
          Y := ClientY;
          Z := -1;
          Tile := TRUE;
          isBackground := TRUE;
          ShowZIndex := FALSE;
          AnimStart := mapTile[ix, iy].TileIndex - 1;
          BX := ix;
          BY := iy;
        end;
        TileList.AddObject('ts', ts);
      end;

      Inc(Iz, 2);

      if mapTile[ix, iy].ObjIndex < 1 then
        goto SetZIndex;

      if mapTile[iX, iy].CanDestroy and (mapTile[ix, iy].ObjIndex <> 5) then
        //能摧毀的則是箱子之類的建筑
        ObjImage := ObjImg2
      else
        ObjImage := objImg1;

      //調整顯示的坐標位置
      if ObjImage.PatternHeight > Cnt_TileHeight then
        PerY := ObjImage.PatternHeight - Cnt_TileHeight
      else
        PerY := 0;

      os := TObjectSprite.Create(DXSpriteEngine.Engine);
      with os do
      begin
        Face := TImageSprite.Create(DXSpriteEngine.Engine);
        Face.Image := ObjImage;
        Face.Width := Face.Image.Width;
        Face.Height := Face.Image.Height;
        Face.X := ClientX;
        Face.Y := ClientY - PerY;
        if (mapTile[ix, iy].ObjIndex = 5) then
          Face.Z := iZ + 1
        else
          Face.Z := iZ;
        Face.AnimStart := mapTile[ix, iy].ObjIndex - 1;
        Image := DXImageList.Items.Find('P');
        Width := Image.Width - 4;
        Height := Image.Height - 4;
        X := ClientX;
        Y := ClientY;                   // - PerY;
        Z := 0;
        Tile := TRUE;
        BX := ix;
        BY := iy;
      end;
      TileList.AddObject('os', os);

      SetZIndex:
    end;

  end;
end;

{ TTileSprite }

procedure TTileSprite.DoDraw;
var
  ImageIndex        : Integer;
  r                 : TRect;
begin
  ImageIndex := SELF.AnimStart + Trunc(SELF.AnimPos);
  r := Rect(Trunc(Self.WorldX), Trunc(Self.WorldY), Trunc(Self.WorldX) +
    Image.Width, Trunc(Self.WorldY) + Image.Height);
  Image.Draw(Engine.Surface, r.Left, r.Top, ImageIndex);
  if ShowZIndex then
    with Engine.Surface.Canvas do
    begin
      Brush.Style := bsClear;
      Font.Color := clBlue;

      Font.Size := 12;
      TextOut(Trunc(X), Trunc(y), Inttostr(Z));
      Release;
    end;
end;

procedure TPlayerSprite.SetZIndex(Z: integer);
begin
  Face.Z := Z;
end;

{ TObjectSprite }

procedure TObjectSprite.DoDraw;
begin
  //屏蔽繪圖過程
  if ShowZIndex then
    FormMain.Caption := FloatToStr(X) + ',' + FloatToStr(Y);
end;

{ TBomb }

procedure TBombSprite.BuilderFire;

  procedure SetObjectDead(ix, iy: Integer);
  var
    i               : Integer;
    //    oi              : Integer;
  begin
    with formMain do
      for i := TileList.Count - 1 downto 0 do
        if TileList.Objects[i] <> nil then
          if TileList.Strings[i] = 'os' then
            if TileList.Objects[i] is TObjectSprite then
              if ((TileList.Objects[i] as TObjectSprite).BX = ix) and
                ((TileList.Objects[i] as TObjectSprite).BY = iy) then
              begin
                if MapTile[ix, iy].CanDestroy or (MapTile[ix, iy].ObjIndex = 5)
                  then
                begin
                  //oi := MapTile[ix, iy].ObjIndex;
                  //建立寶物
                  if (TileList.Objects[i] as TObjectSprite).Face.Image.Name =
                    'box' then
                  begin
                    Randomize;
                    if (Max(Abs(Random(999)), 1) mod 2) = 0 then
                    begin
                      with TGoodsSprite.Create(Engine) do
                      begin
                        X := (TileList.Objects[i] as TObjectSprite).Face.X;
                        Y := (TileList.Objects[i] as TObjectSprite).Face.Y;
                        Z := (TileList.Objects[i] as TObjectSprite).Face.Z;
                      end;
                    end;
                  end;

                  MapTile[ix, iy].ObjIndex := 0;
                  MapTile[ix, iy].CanDestroy := TRUE;
                  (TileList.Objects[i] as TObjectSprite).Face.Dead;
                  (TileList.Objects[i] as TObjectSprite).Dead;
                  TileList.Objects[i] := nil;

                  //TileList.Delete(i);
                  { if oi = 4 then
                     Continue;  }
                  //break;
                end;
              end;
  end;

var
  I                 : integer;
  FireSprite        : TFireSprite;
  MaxPower          : integer;
  aniIndex          : integer;
  Ix, iY            : integer;
  ZIndex            : integer;
begin
  for i := RefPlayer.BombList.Count - 1 downto 0 do
    if RefPlayer.BombList.Items[i] <> nil then
      if (TBombSprite(RefPlayer.BombList.Items[i]).BX = bx) and
        (TBombSprite(RefPlayer.BombList.Items[i]).BY = by) then
      begin
        RefPlayer.BombList.Delete(i);
        break;
      end;

  Face.Dead;
  Dead;

  RefPlayer.BombCount := refPlayer.BombCount - 1;
  ZIndex := 999;
  MaxPower := refPlayer.Power;
  //炸彈中心
  FireSprite := TFireSprite.Create(Parent);
  FireSprite.X := X;
  FireSprite.Y := Y;
  FireSprite.AnimStart := 0;
  FireSprite.Z := ZIndex;

  //draw Up
  Ix := bx;
  iY := by;

  for i := 1 to MaxPower do
  begin

    if iy - i >= 0 then
    begin
      if FormMain.MapTile[ix, (iy - i)].ObjIndex > 0 then
        if not FormMain.MapTile[ix, (iy - i)].CanDestroy then //如果是墻
          break
        else                            //如果能銷毀則讓碰撞事件處理
        begin
          SetObjectDead(ix, (iy - i));
          break;
        end;
    end
    else
      Break;                            //墻邊

    FireSprite := TFireSprite.Create(Parent);
    FireSprite.X := X;
    FireSprite.Y := Y - (i * Cnt_TileHeight);

    if i < MaxPower then
      aniIndex := 1
    else
      aniIndex := 5;

    FireSprite.AnimStart := aniIndex;
    FireSprite.Z := ZIndex;
    FireSprite.DoDraw;
  end;

  //draw Down
  for i := 1 to MaxPower do
  begin

    if iy + i <= Cnt_TileHeightCount then
    begin
      if FormMain.MapTile[ix, (iy + i)].ObjIndex > 0 then
        if not FormMain.MapTile[ix, (iy + i)].CanDestroy then //如果是墻
          break
        else                            //如果能銷毀則讓碰撞事件處理
        begin
          SetObjectDead(ix, (iy + i));
          break;
        end;
    end
    else
      Break;                            //墻邊

    FireSprite := TFireSprite.Create(Parent);
    FireSprite.X := X;
    FireSprite.Y := Y + (i * Cnt_TileHeight);

    if i < MaxPower then
      aniIndex := 1
    else
      aniIndex := 4;

    FireSprite.AnimStart := aniIndex;
    FireSprite.Z := ZIndex;
    FireSprite.DoDraw;
  end;

  //draw Left
  for i := 1 to MaxPower do
  begin
    if ix - i >= 0 then
    begin
      if FormMain.MapTile[(ix - i), iy].ObjIndex > 0 then
        if not FormMain.MapTile[(ix - i), iy].CanDestroy then //如果是墻
          break
        else                            //如果能銷毀則讓碰撞事件處理
        begin
          SetObjectDead((ix - i), iy);
          break;
        end;
    end
    else
      Break;                            //墻邊

    FireSprite := TFireSprite.Create(Parent);
    FireSprite.X := X - (i * Cnt_TileWidth);
    FireSprite.Y := Y;

    if i < MaxPower then
      aniIndex := 2
    else
      aniIndex := 7;

    FireSprite.AnimStart := aniIndex;
    FireSprite.Z := ZIndex;
    FireSprite.DoDraw;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91视频在线看| 成人久久久精品乱码一区二区三区 | 国产在线精品一区二区三区不卡| 欧美日韩在线播放三区| 偷拍日韩校园综合在线| 欧美电影在线免费观看| 青椒成人免费视频| 久久久久久久综合| 972aa.com艺术欧美| 亚洲一区二区综合| 欧美大片一区二区| 国产九色精品成人porny| 国产精品毛片a∨一区二区三区 | 国产一区在线视频| 国产精品久久久久久久久久久免费看 | 欧美亚男人的天堂| 久久精品国产精品亚洲精品| 久久免费视频色| 99re视频精品| 日韩电影免费在线看| 久久久噜噜噜久久人人看 | 欧美日韩日本视频| 蜜臀99久久精品久久久久久软件| 久久久亚洲欧洲日产国码αv| 成人久久18免费网站麻豆| 亚洲黄色尤物视频| 亚洲精品在线电影| av午夜一区麻豆| 日韩不卡免费视频| 国产精品久久久久国产精品日日| 欧美丝袜自拍制服另类| 久久激情五月婷婷| 亚洲狠狠丁香婷婷综合久久久| 91精品国产91热久久久做人人| 成人综合婷婷国产精品久久蜜臀| 亚洲已满18点击进入久久| 久久久精品免费网站| 欧美影视一区在线| 国产xxx精品视频大全| 亚洲午夜电影网| 国产片一区二区| 日韩三级视频中文字幕| 色吧成人激情小说| 国产精品一区二区久激情瑜伽| 亚洲一区二区三区视频在线播放 | 又紧又大又爽精品一区二区| 精品噜噜噜噜久久久久久久久试看| 91在线你懂得| 国产suv精品一区二区6| 蜜臀av性久久久久av蜜臀妖精| 亚洲激情综合网| 国产精品久久久久久妇女6080| 精品免费99久久| 欧美日韩三级在线| 91福利小视频| 色菇凉天天综合网| 91在线一区二区三区| 国产成人免费9x9x人网站视频| 日本成人在线网站| 亚洲成人免费av| 综合色中文字幕| 国产精品久久国产精麻豆99网站| 欧美成人精品1314www| 欧美美女一区二区在线观看| 色综合中文字幕国产| 韩国欧美国产1区| 老司机一区二区| 日韩成人伦理电影在线观看| 视频一区欧美精品| 日精品一区二区| 视频在线观看91| 日本亚洲电影天堂| 欧美a级理论片| 美脚の诱脚舐め脚责91| 秋霞午夜av一区二区三区| 日产欧产美韩系列久久99| 亚洲v日本v欧美v久久精品| 一区二区不卡在线播放| 尤物视频一区二区| 亚洲成人黄色影院| 亚洲国产欧美另类丝袜| 亚洲国产视频在线| 天使萌一区二区三区免费观看| 亚洲国产日韩综合久久精品| 午夜精品福利在线| 男女男精品视频| 韩国中文字幕2020精品| 国产成人h网站| www.欧美精品一二区| 在线看日韩精品电影| 欧美日韩夫妻久久| 日韩美女天天操| 国产日韩精品一区二区三区在线| 国产校园另类小说区| 国产精品美女久久久久aⅴ国产馆| 亚洲欧洲综合另类| 亚洲成人资源在线| 精品一区二区三区久久久| 国产精品伊人色| 97久久人人超碰| 4438亚洲最大| 国产亚洲人成网站| 亚洲免费高清视频在线| 午夜久久久久久电影| 狠狠久久亚洲欧美| 色婷婷综合久色| 日韩视频中午一区| 国产精品午夜春色av| 亚洲国产中文字幕在线视频综合| 精品写真视频在线观看| av成人老司机| 在线播放视频一区| 欧美激情一区不卡| 丝袜美腿亚洲综合| 成人黄色777网| 欧美一区二区视频在线观看2020| 久久色中文字幕| 亚洲一区影音先锋| 国产美女在线精品| 欧美视频一区在线观看| 26uuu久久天堂性欧美| 一区二区三区不卡视频 | 五月天视频一区| 国产91在线观看| 777奇米四色成人影色区| 国产欧美精品区一区二区三区 | 奇米影视一区二区三区小说| 国产精一品亚洲二区在线视频| 日本精品免费观看高清观看| 精品少妇一区二区三区在线播放| 亚洲精品写真福利| 国产乱码精品1区2区3区| 欧美无砖砖区免费| 亚洲国产精品t66y| 蜜臀99久久精品久久久久久软件| 99视频国产精品| 久久久午夜精品| 美女尤物国产一区| 欧美影院一区二区三区| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 亚洲天堂福利av| 国产盗摄视频一区二区三区| 91麻豆精品国产91久久久久久久久| 国产精品视频一二三| 久久精品国产99国产精品| 在线中文字幕一区| 国产精品免费久久久久| 黄页网站大全一区二区| 欧美一级夜夜爽| 亚洲大片免费看| 色综合欧美在线| 亚洲欧洲av一区二区三区久久| 国产精品一区二区在线播放| 日韩久久久精品| 日本欧美久久久久免费播放网| 在线观看三级视频欧美| 亚洲视频免费在线观看| 成人丝袜18视频在线观看| 国产日韩欧美精品综合| 国产99一区视频免费| 2021国产精品久久精品| 久久精品国产免费看久久精品| 日韩亚洲欧美综合| 麻豆国产一区二区| 日韩一区二区精品| 麻豆精品一区二区综合av| 日韩欧美电影在线| 久久精品国产亚洲高清剧情介绍| 日韩欧美亚洲另类制服综合在线| 日韩国产欧美视频| 欧美一区二区精美| 久久精品国产精品亚洲综合| 精品国产乱码久久久久久牛牛| 国产一区二区三区免费在线观看| 精品国产一区二区三区久久久蜜月 | 国产成人综合自拍| 欧美激情综合在线| 91在线你懂得| 亚洲国产一二三| 日韩三级精品电影久久久| 久久疯狂做爰流白浆xx| 2欧美一区二区三区在线观看视频| 九色综合国产一区二区三区| 国产亚洲精品福利| www.亚洲激情.com| 一区二区三区不卡视频| 欧美一区二区视频在线观看2022| 韩国理伦片一区二区三区在线播放| 精品一区二区三区影院在线午夜| av网站一区二区三区| 亚洲男人的天堂在线观看| 色乱码一区二区三区88| 国产综合色精品一区二区三区| 日韩一区二区三区精品视频| 激情欧美一区二区三区在线观看| 久久久亚洲欧洲日产国码αv| 不卡av在线免费观看| 亚洲444eee在线观看| 精品国产一二三| 99国产精品久久久久久久久久|