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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? uformmain.pas

?? 泡泡堂單機(jī)版源程序
?? PAS
?? 第 1 頁 / 共 4 頁
字號(hào):
      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;

      //調(diào)整顯示的坐標(biāo)位置
      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;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久亚洲毛片 | 99re热这里只有精品免费视频| 国产日韩欧美精品电影三级在线| 91麻豆免费观看| 日本91福利区| 亚洲日本免费电影| 欧美不卡激情三级在线观看| 成人美女视频在线观看18| 五月婷婷久久综合| 亚洲人午夜精品天堂一二香蕉| 欧美丰满少妇xxxbbb| 成人精品免费视频| 九九九精品视频| 一区二区三区在线视频播放| 国产清纯白嫩初高生在线观看91| 欧美精选午夜久久久乱码6080| caoporen国产精品视频| 另类人妖一区二区av| 亚洲最色的网站| 国产精品久久久一本精品| 日韩一区二区三区免费看 | 8x8x8国产精品| 色网综合在线观看| 国产成人精品网址| 韩国一区二区视频| 全国精品久久少妇| 亚洲电影你懂得| 亚洲人吸女人奶水| 国产精品电影一区二区| 亚洲国产精品黑人久久久| 精品对白一区国产伦| 日韩一级黄色大片| 91精品国产色综合久久| 欧美日韩在线一区二区| 欧美在线视频全部完| 91视频国产观看| 99久久国产综合精品女不卡| 国产精品综合二区| 亚洲欧洲制服丝袜| 久久亚洲一级片| 欧美精品一二三四| 欧美一a一片一级一片| 成人一级视频在线观看| 久久se精品一区二区| 爽好多水快深点欧美视频| 亚洲免费av观看| 国产精品日日摸夜夜摸av| 欧美精品一区二区高清在线观看| 欧美日韩久久久一区| 色综合久久88色综合天天6 | 免费人成在线不卡| 亚洲一区在线免费观看| 中文字幕在线视频一区| 国产亚洲精品bt天堂精选| www日韩大片| 欧美一级xxx| 欧美老女人在线| 欧美日韩中文另类| 欧美性感一类影片在线播放| 欧洲生活片亚洲生活在线观看| av中文字幕在线不卡| 成人精品一区二区三区四区 | 狠狠久久亚洲欧美| 激情综合色综合久久综合| 老司机精品视频在线| 美女视频免费一区| 久久精品国产久精国产| 韩国精品在线观看| 国产成人午夜99999| 国产91精品一区二区麻豆亚洲| 国产盗摄精品一区二区三区在线 | 99久久国产免费看| 一本到不卡免费一区二区| 一本大道久久a久久综合| 色悠久久久久综合欧美99| 91黄色免费版| 欧美色区777第一页| 欧美精品黑人性xxxx| 欧美一区午夜视频在线观看| 久久久久久久久免费| 亚洲国产成人午夜在线一区| 亚洲欧美综合网| 亚洲综合色区另类av| 丝袜a∨在线一区二区三区不卡 | 丁香天五香天堂综合| 波多野结衣中文一区| 91片在线免费观看| 欧美午夜电影网| 91精品国产全国免费观看| 制服视频三区第一页精品| 精品福利一区二区三区免费视频| 国产精品素人一区二区| 亚洲精品中文在线| 日本人妖一区二区| 国产成人丝袜美腿| 91首页免费视频| 欧美日韩一区二区三区在线看| 日韩欧美亚洲另类制服综合在线| 精品日韩在线观看| 亚洲日本在线看| 五月综合激情网| 国产精品自在欧美一区| 色综合天天性综合| 日韩视频在线你懂得| 国产精品人成在线观看免费| 亚洲成人免费av| 国产精品99久久久久久宅男| 91色综合久久久久婷婷| 欧美电影免费观看高清完整版在 | 欧美日韩精品欧美日韩精品一 | 欧美一区二区福利在线| 中文在线一区二区| 三级欧美在线一区| 国产成人av影院| 在线播放亚洲一区| 国产精品国产三级国产三级人妇| 亚洲国产美国国产综合一区二区| 国产一区二区三区日韩 | 人禽交欧美网站| 色综合亚洲欧洲| 2020国产精品| 亚洲综合免费观看高清在线观看| 国产一区二区三区视频在线播放| 欧美在线观看一二区| 欧美国产国产综合| 天天综合网 天天综合色| www.亚洲在线| 日韩欧美国产三级| 一区二区三区欧美日韩| 久久97超碰色| 欧美日韩久久不卡| 亚洲欧美在线aaa| 国产一区免费电影| 欧美日韩国产一区| 亚洲色图第一区| 国产激情一区二区三区四区| 欧美日韩高清一区二区不卡 | 亚洲综合视频网| 成人动漫一区二区三区| 精品乱码亚洲一区二区不卡| 午夜视频在线观看一区| 色综合色狠狠综合色| 国产精品乱码妇女bbbb| 国产乱国产乱300精品| 欧美网站大全在线观看| 亚洲欧洲日韩av| 国产精品一区二区免费不卡| 色综合久久88色综合天天| 精品国产成人系列| 日韩精品一级二级| 欧美精品视频www在线观看| 亚洲精品欧美二区三区中文字幕| 成人国产视频在线观看| 国产婷婷色一区二区三区| 久久国产福利国产秒拍| 日韩视频在线一区二区| 另类小说图片综合网| 91精品婷婷国产综合久久性色| 亚洲国产日韩综合久久精品| 91麻豆高清视频| 夜夜精品浪潮av一区二区三区| 91老师国产黑色丝袜在线| 亚洲日本va在线观看| 欧美在线观看你懂的| 中文字幕在线观看一区| 91免费国产视频网站| 综合精品久久久| 色欧美乱欧美15图片| 亚洲综合色区另类av| 欧美日韩成人综合在线一区二区| 亚洲综合自拍偷拍| 在线观看成人小视频| 亚洲成人免费电影| 欧美一区二区黄色| 国产麻豆欧美日韩一区| 国产精品少妇自拍| 色成人在线视频| 亚洲电影一区二区| 欧美系列在线观看| 奇米影视一区二区三区小说| 欧美精品aⅴ在线视频| 久久电影网电视剧免费观看| 欧美国产一区二区| 色综合色狠狠天天综合色| 亚洲123区在线观看| 精品成人一区二区| a级精品国产片在线观看| 亚洲另类色综合网站| 欧美男生操女生| 国产一区二区三区电影在线观看 | 成人免费观看男女羞羞视频| 亚洲人成精品久久久久| 欧美日韩黄色一区二区| 久久福利资源站| 亚洲天堂精品视频| 欧美一区二区三区男人的天堂 | 成人福利在线看| 亚洲va欧美va天堂v国产综合| 精品国产制服丝袜高跟| 一本大道久久精品懂色aⅴ|