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

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

?? uformmain.pas

?? 泡泡堂單機版源程序
?? PAS
?? 第 1 頁 / 共 4 頁
字號:
  end;

  //draw Right
  for i := 1 to MaxPower do
  begin
    if ix + i <= Cnt_TileWidthCount 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 := 6;

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

end;

constructor TBombSprite.Create(AParent: TSprite; Player: TPlayerSprite);
var
  i, j, clientx, clienty: integer;
begin
  inherited Create(AParent);

  //  RefPlayer := FormMain.Player;
  Image := FormMain.DXImageList.Items.Find('p');
  Width := Cnt_TileWidth - 4;
  Height := Cnt_TileHeight - 4;
  refPlayer := Player;

  i := Trunc(refPlayer.X - cnt_OffsetX) div Cnt_TileWidth;
  j := Trunc(refPlayer.Y - cnt_OffsetY) div Cnt_TileHeight;

  clientX := i * Cnt_TileWidth + cnt_OffsetX;
  clientY := j * Cnt_TileHeight + cnt_OffsetY;

  refPlayer.BombCount := refPlayer.BombCount + 1;

  if (refPlayer.X - clientX) > (cnt_TileWidth div 2) then
  begin
    inc(i, 1);
    clientX := clientX + cnt_TileWidth;
  end;
  if (refPlayer.Y - clientY) > (cnt_TileHeight div 2) then
  begin
    inc(j, 1);
    clientY := clientY + cnt_TileHeight;
  end;

  BX := i;
  BY := j;
  X := clientX;
  Y := clientY;
  Z := 0;

  PixelCheck := FALSE;
  Tile := TRUE;
  newBomb := True;

  Face := TBombTileSprite.Create(AParent);
  Face.Image := formMain.DXImageList.Items.Find('boom');
  Face.Width := Face.Image.Width;
  Face.Height := Face.Image.Height;
  Face.X := clientX - 2;
  Face.Y := clientY - 2;
  Face.Z := refPlayer.Z + 1;
  Face.AnimCount := Face.Image.PatternCount - 1;
  Face.AnimLooped := True;
  Face.AnimSpeed := 35 / 1000;
  Face.PixelCheck := FALSE;
  FBombTimeOut := GetTickCount;
end;

procedure TBombSprite.DoDraw;
begin
  if (GetTickCount - FBombTimeOut) > Cnt_BombTimeOut then
  begin
    BuilderFire;
  end;
end;

procedure TBombSprite.DoMove(MoveCount: Integer);
begin
  inherited;
  //  Exit;
    //如果炸彈不和玩家在同一位置,則newBomb 屬性為 FALSE,(永遠為false)
  if NewBomb then                       //如果newBomb =true
  begin
    //玩家所在位置

    if (Abs(refPlayer.X - X) > (cnt_TileWidth + 2)) or
      (Abs(refPlayer.Y - y) > (cnt_TileHeight + 2)) then
      NewBomb := FALSE;
    exit;

  end;

end;

{ TFireSprite }

constructor TFireSprite.Create(AParent: TSprite);
begin
  inherited;
  Image := FormMain.DXImageList.Items.Find('boob');
  Width := Cnt_TileWidth;
  Height := Cnt_TileHeight;
  FFireTimeOut := GetTickCount;
end;

procedure TFireSprite.DoCollision(Sprite: TSprite; var Done: Boolean);
//var
//  ix, iy            : integer;
begin
  inherited;
  if Sprite is TBombSprite then
  begin
    (Sprite as TBombSprite).BuilderFire;
    (Sprite as TBombSprite).dead;
  end;

  if Sprite is TPlayerSprite then
  begin
    Self.Z := (Sprite as TPlayerSprite).Z - 1;
    (Sprite as TPlayerSprite).HP := (Sprite as TPlayerSprite).HP - 1;
    if (Sprite as TPlayerSprite).hp <= 0 then
      (Sprite as TPlayerSprite).ShowDead := TRUE;
    Dead;
  end;

end;

procedure TFireSprite.DoDraw;
begin
  inherited;
  if (GetTickCount - FFireTimeOut) > Cnt_FireTimeOut then
    Dead;
end;

procedure TFireSprite.DoMove(MoveCount: Integer);
begin
  inherited;
  Collision;
end;

procedure TFormMain.FormDestroy(Sender: TObject);
begin
  TileList.free;
  PlayerList.Free;
end;

procedure TFormMain.InitSysCursor;
begin
  if gameState = gsMain then
    DXDraw.Cursor := crNone
  else
    DXDraw.Cursor := crDefault;
  CursorSprite := TCursorSprite.Create(DXSpriteEngine.Engine);
  CursorSprite.Image := DXImageList.Items.Find('cursor');
  CursorSprite.Z := 9999;

end;

{ TGoodsSprite }

constructor TGoodsSprite.Create(AParent: TSprite);
begin
  inherited Create(AParent);
  Image := FormMain.DXImageList.Items.Find('goods');
  Width := Image.Width;
  Height := Image.Height;
  Randomize;
  AddWhat := Max(Abs(Random(4)), 1);
  Self.AnimCount := 2;
  moveTimeOut := getTickCount;
  case AddWhat of
    1: Self.AnimStart := 0;
    2: Self.AnimStart := 6;
    3: Self.AnimStart := 8;
  end;
  Self.AnimSpeed := 40 / 1000;
  Self.AnimLooped := TRUE;
end;

procedure TGoodsSprite.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
  inherited;
  if (Sprite is TPlayerSprite) then
  begin
    case AddWhat of
      1:
        begin
          (Sprite as TPlayerSprite).MaxBombCount := (Sprite as
            TPlayerSprite).MaxBombCount + 1;
        end;
      2:
        begin
          (Sprite as TPlayerSprite).Power := (Sprite as TPlayerSprite).Power +
            1;
        end;
      3:
        begin
          (Sprite as TPlayerSprite).Speed := (Sprite as TPlayerSprite).Speed +
            500;
        end;
    end;
    if AddWhat in [1, 2, 3] then
    begin
      (Sprite as TPlayerSprite).Exp := (Sprite as TPlayerSprite).Exp + 1;
      (Sprite as TPlayerSprite).HP := (Sprite as TPlayerSprite).HP + AddWhat;
    end;
    Dead;
  end;
end;

procedure TGoodsSprite.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);

  if ((GetTickCount - moveTimeOut) > 800) then
  begin
    if MoveTo then
    begin
      Image.Draw(Engine.Surface, r.Left, r.Top - 3, ImageIndex);
      MoveTo := not MoveTo;
    end
    else
    begin
      Image.Draw(Engine.Surface, r.Left, r.Top + 3, ImageIndex);
      MoveTo := not MoveTo;
    end;
    moveTimeOut := GetTickCount;
  end
  else
    Image.Draw(Engine.Surface, r.Left, r.Top, ImageIndex);
end;

procedure TGoodsSprite.DoMove(MoveCount: Integer);
begin
  inherited;
  Collision;
end;

procedure TFormMain.InitUI;
begin
  edit1.Visible := gamestate = gslogin;
  edit2.Visible := gamestate = gslogin;
  ComboBox1.visible := gamestate = gslogin;
  if GameState = gsMain then
  begin
    FExitButton := TButtonSprite.Create(DXSpriteEngine.Engine);
    with FExitButton do
    begin
      ObjName := 'exit';
      Image := DxImageList.Items.Find('button');
      Width := Image.Width;
      Height := Image.Height;
      AnimCount := 4;
      AnimLooped := false;
      AnimSpeed := 0;
      AnimStart := 2;
      X := 660;
      Y := 555;
      z := 999;
    end;

  end;

  if GameState = gsLogin then
  begin

  end;
end;

procedure TFormMain.DXDrawMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  bsR               : TRect;
  Pt                : TPoint;
begin
  if GameState = gsMain then
  begin
    BsR :=
      Rect(
      Trunc(FExitButton.X),
      Trunc(FExitButton.Y),
      Trunc(FExitButton.x) + FExitButton.Width,
      Trunc(FExitButton.y) + FExitButton.Height
      );

    Pt.X := X;
    Pt.Y := y;
    if PtInRect(BsR, Pt) then
      Self.Close;
  end;

  if GameState = gsLogin then
  begin
    BsR :=
      Rect(
      Trunc(580),
      Trunc(440),
      Trunc(580) + 80,
      Trunc(440) + 80
      );

    Pt.X := X;
    Pt.Y := y;
    if PtInRect(BsR, Pt) then
    begin
      if edit1.Text = '' then
      begin
        Application.MessageBox('請輸入《玩家一》的姓名', '提示', mb_ok or
          mb_IconInformation);
        if edit1.CanFocus then
          Edit1.SetFocus;
        Edit1.SelectAll;
        exit;
      end;
      if edit2.Text = '' then
      begin
        Application.MessageBox('請輸入《玩家二》的姓名', '提示', mb_ok or
          mb_IconInformation);
        if edit2.CanFocus then
          Edit2.SetFocus;
        Edit2.SelectAll;
        exit;
      end;
      gameState := gsMain;

      Self.InitSysCursor;
      Self.InitMap(ComBoBox1.Items.Strings[ComboBox1.ItemIndex] + '.map');
      Self.InitMapTile;
      Self.InitPlayer;
      Self.InitUI;

    end;

  end;
end;

procedure TFormMain.StartGame(lagcount: Integer);
begin
  if GameState <> gsMain then
  begin
    GameState := gsMain;
    Exit;
  end;
  if GameState = gsMain then
  begin
    DXImageList.Items.Find('Frame').Draw(DXDraw.Surface, 0, 0, 0);
    //  UpdateMapView(LagCount);

    DXSpriteEngine.Move(lagcount);
    DxSpriteEngine.Draw;
    DxSpriteEngine.Dead;

    with DXDraw.Surface.Canvas do
    begin
      Brush.Style := bsClear;
      Font := FormMain.Font;
      Font.Color := clWhite;
      Textout(150, 2, 'FPS: ' + inttostr(DXTimer.FrameRate) +
        ' ESC 退出 ALT+ENTER 全屏幕/窗口切換');
      Textout(150, 15, 'P1按鍵: 上(R) 下(F) 左(D) 右(G) 放雷(A)' +
        '  P2按鍵: 上(↑) 下(↓) 左(←) 右(→) 放雷(/)');
      Textout(50, 577, 'www.91go.net');
      textOut(300, 577, 'By Delphi 7 and DelphiX');
      Release;
    end;

    with DXDraw.Surface.Canvas do
    begin
      Brush.Style := bsClear;
      Font := FormMain.Font;
      Font.Color := clBlue;
      Pen.Width := 1;
      Pen.Color := clBlack;
      Rectangle(Trunc(Player1.Face.X - 1), Trunc(Player1.Face.Y - 11),
        Trunc(Player1.Face.X + Player1.HP * 2 + 1), Trunc(Player1.Face.Y - 11 +
        4));
      Pen.Color := clRed;
      Rectangle(Trunc(Player1.Face.X), Trunc(Player1.Face.Y - 10),
        Trunc(Player1.Face.X + Player1.HP * 2), Trunc(Player1.Face.Y - 10 + 2));
      Textout(Trunc(Player1.Face.X), Trunc(Player1.Face.Y - 9 - 13),
        'HP:' + Inttostr(Player1.HP));
      Release;
    end;

    with DXDraw.Surface.Canvas do
    begin
      Brush.Style := bsClear;
      Font := FormMain.Font;
      Font.Color := clBlue;
      Pen.Width := 1;
      Pen.Color := clBlack;
      Rectangle(Trunc(Player2.Face.X - 1), Trunc(Player2.Face.Y - 11),
        Trunc(Player2.Face.X + Player2.HP * 2 + 1), Trunc(Player2.Face.Y - 11 +
        4));
      Pen.Color := clRed;
      Rectangle(Trunc(Player2.Face.X), Trunc(Player2.Face.Y - 10),
        Trunc(Player2.Face.X + Player2.HP * 2), Trunc(Player2.Face.Y - 10 + 2));
      Textout(Trunc(Player2.Face.X), Trunc(Player2.Face.Y - 9 - 13),
        'HP:' + Inttostr(Player2.HP));
      Release;
    end;

  end;
end;

procedure TFormMain.InitGameMapList;
var
  fpath             : string;
  fs                : TsearchRec;
begin
  ComboBox1.items.Clear;
  fpath := ExtractFilePath(ParamStr(0)) + 'Map\*.map';
  if findfirst(fpath, faAnyFile, fs) = 0 then
  begin
    if (fs.Name <> '.') and (fs.Name <> '..') then
      if (fs.Attr and faDirectory) = faDirectory then
      else
        comboBox1.Items.Add(ChangeFileExt(ExtractFileName(fs.Name), ''));
    while findnext(fs) = 0 do
    begin
      if (fs.Name <> '.') and (fs.Name <> '..') then
        if (fs.Attr and faDirectory) = faDirectory then
        else
          comboBox1.Items.Add(ChangeFileExt(ExtractFileName(fs.Name), ''));
    end;
  end;
  findclose(fs);
  if ComboBox1.Items.Count > 0 then
    ComboBox1.itemINdex := 0;

end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产蜜臀av在线一区二区三区| 日韩av中文在线观看| 欧美精品一区二区三区久久久| 欧美婷婷六月丁香综合色| av影院午夜一区| 99riav久久精品riav| 不卡一区二区在线| 国产精品影视在线观看| 麻豆精品蜜桃视频网站| 久久精品国产精品亚洲综合| 久久精品久久精品| 国产制服丝袜一区| 国产成人久久精品77777最新版本| 国产一区二区三区美女| 国产成a人亚洲| 色综合视频一区二区三区高清| 成人性生交大片| 91丨porny丨中文| 精品视频1区2区| 欧美一区二区三区思思人| 久久综合色综合88| 中文字幕一区二区三区乱码在线 | 亚洲精品国产精品乱码不99| 亚洲男同1069视频| 无码av免费一区二区三区试看| 美女视频一区在线观看| 国产99久久久国产精品免费看 | 奇米精品一区二区三区在线观看一| 首页国产欧美日韩丝袜| 国产黄人亚洲片| 在线观看三级视频欧美| 欧美成人一区二区三区在线观看| 国产欧美一区二区三区网站| 一区二区成人在线观看| 韩国午夜理伦三级不卡影院| 91在线免费看| 精品久久一区二区| 尤物在线观看一区| 国产尤物一区二区在线| 欧美在线free| 国产日韩欧美不卡在线| 五月天亚洲精品| 成人高清视频在线| 日韩午夜av一区| 亚洲色图在线看| 国产美女在线精品| 欧美色成人综合| 中文字幕制服丝袜成人av| 免费在线观看一区| 色呦呦国产精品| 国产亚洲人成网站| 美腿丝袜亚洲三区| 在线免费观看成人短视频| 国产欧美精品一区二区三区四区 | 777午夜精品视频在线播放| 国产精品视频在线看| 免费看欧美美女黄的网站| 色琪琪一区二区三区亚洲区| 国产精品天干天干在观线| 精品一区二区三区香蕉蜜桃| 欧美日本国产视频| 一区二区三区四区av| 成人黄色在线视频| 国产欧美一区二区精品久导航 | 免费观看成人av| 日本精品免费观看高清观看| 国产欧美日韩综合精品一区二区| 日本不卡高清视频| 欧美日韩精品一区二区天天拍小说| 中文字幕一区二区三区在线不卡| 国产白丝网站精品污在线入口| 日韩视频在线观看一区二区| 日韩综合小视频| 欧美精品在欧美一区二区少妇| 亚洲午夜精品网| 欧美日韩国产中文| 日韩精品国产欧美| 日韩欧美成人午夜| 久久精品国产亚洲高清剧情介绍| 欧美美女bb生活片| 日韩福利视频网| 日韩欧美中文字幕一区| 免费成人在线影院| 2020国产成人综合网| 国产麻豆视频精品| 中文字幕不卡一区| 91精品福利视频| 亚洲成精国产精品女| 91精品久久久久久久91蜜桃| 麻豆91免费看| 国产日韩一级二级三级| 99天天综合性| 亚洲一区二区三区视频在线| 在线成人午夜影院| 久久99久久精品| 欧美高清在线精品一区| 91丨九色丨国产丨porny| 亚洲黄色片在线观看| 制服丝袜激情欧洲亚洲| 国内外成人在线视频| 亚洲视频一二区| 欧美猛男gaygay网站| 国产精品白丝jk黑袜喷水| 亚洲视频中文字幕| 欧美一卡二卡在线观看| 国产成人精品亚洲777人妖 | 喷水一区二区三区| 国产精品国产三级国产三级人妇 | 一区二区三区**美女毛片| 这里只有精品99re| 成人性生交大片| 亚洲福利国产精品| 国产精品午夜在线观看| 欧美精品丝袜中出| 国产精品白丝jk黑袜喷水| 亚洲愉拍自拍另类高清精品| 精品国产免费人成电影在线观看四季| 成人av午夜影院| 蜜桃视频在线一区| 一区二区三区四区av| 欧美xxxxxxxx| 91福利视频网站| 国产精品资源网| 日韩精品久久久久久| 自拍偷自拍亚洲精品播放| 欧美一区二区三区日韩| 色噜噜久久综合| 国产成人综合在线观看| 日本欧美一区二区三区乱码| 亚洲激情中文1区| 亚洲国产精品成人综合色在线婷婷| 欧美久久久影院| 欧洲亚洲精品在线| 成人av电影在线播放| 国产一区二区三区视频在线播放| 亚洲bt欧美bt精品| 伊人夜夜躁av伊人久久| 国产精品久久久久久久久果冻传媒 | 久久久国际精品| 日韩一区二区三区视频| 欧洲中文字幕精品| 91成人国产精品| 成人精品国产一区二区4080| 国产在线不卡一区| 久久99蜜桃精品| 男男视频亚洲欧美| 日韩成人av影视| 天堂av在线一区| 婷婷一区二区三区| 亚洲午夜精品久久久久久久久| 亚洲欧美日韩中文播放| 国产精品高潮呻吟| 亚洲欧洲精品一区二区三区不卡| 亚洲精品一区在线观看| 精品免费视频.| 亚洲精品一区二区在线观看| 久久久亚洲精品一区二区三区| 精品国产乱码久久久久久图片| 日韩欧美一区二区视频| 欧美第一区第二区| 精品不卡在线视频| 久久久久国产精品免费免费搜索| 国产欧美一区二区三区网站| 国产精品久久久久久亚洲伦| 成人欧美一区二区三区黑人麻豆 | 亚洲成人免费观看| 日韩精品国产欧美| 久久国产日韩欧美精品| 国产一区二区在线观看免费| 国产·精品毛片| 91麻豆文化传媒在线观看| 欧美日韩在线一区二区| 宅男噜噜噜66一区二区66| 精品国产乱码久久久久久老虎| 久久久午夜电影| 综合色天天鬼久久鬼色| 亚洲午夜精品17c| 开心九九激情九九欧美日韩精美视频电影 | 国产91精品精华液一区二区三区| 99久久综合精品| 欧美日韩一区三区四区| 精品国产成人系列| 亚洲视频一区在线| 日本在线播放一区二区三区| 国产美女精品人人做人人爽| 日本韩国视频一区二区| 日韩一区二区三| 国产精品伦一区| 日韩中文字幕区一区有砖一区| 国产精一品亚洲二区在线视频| 97久久超碰国产精品电影| 欧美一卡2卡3卡4卡| 国产精品久久久久影院| 日日摸夜夜添夜夜添国产精品 | 日韩一级视频免费观看在线| 中文字幕一区二区三区在线观看| 日韩电影一区二区三区四区| 成人精品免费视频| 日韩视频一区二区三区在线播放| 综合久久综合久久|