亚洲欧美第一页_禁久久精品乱码_粉嫩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, 'chinasf@hotmail.com');
      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一区二区三区免费野_久草精品视频
精品va天堂亚洲国产| 激情文学综合丁香| 国产麻豆精品theporn| 色综合一个色综合| 26uuu国产在线精品一区二区| 日本一区二区三区高清不卡| 午夜不卡av免费| av电影一区二区| 亚洲精品一区二区三区精华液| 亚洲精品乱码久久久久久久久 | 亚洲福利视频三区| av不卡一区二区三区| 久久综合国产精品| 日韩电影在线免费| 欧美日韩国产首页在线观看| 最新日韩在线视频| 国产成人aaa| 欧美xxxxxxxxx| 日韩高清一级片| 欧美日韩国产bt| 亚洲一区二区三区视频在线播放 | 国产精品网站一区| 国模套图日韩精品一区二区 | 裸体健美xxxx欧美裸体表演| 欧美日韩精品一区二区三区| 亚洲精品少妇30p| 91小视频免费看| 亚洲同性gay激情无套| 91欧美一区二区| 综合激情成人伊人| 色婷婷亚洲精品| 亚洲精品中文在线影院| 91久久精品一区二区三区| 亚洲欧美激情小说另类| 色综合久久中文字幕| 亚洲你懂的在线视频| 色乱码一区二区三区88| 亚洲成在人线免费| 欧美一区二区三区视频免费播放 | 日韩免费观看2025年上映的电影 | 丝袜诱惑亚洲看片| 555www色欧美视频| 免费观看在线综合色| 精品国产sm最大网站| 国产精品一二一区| 中文字幕亚洲不卡| 欧美三级在线播放| 九九**精品视频免费播放| 久久久久国色av免费看影院| 成人av网址在线| 亚洲愉拍自拍另类高清精品| 欧美精品乱码久久久久久| 久久99热狠狠色一区二区| 国产丝袜美腿一区二区三区| www.亚洲色图.com| 亚洲大片免费看| 欧美精品一区二区久久久| 成人手机在线视频| 亚洲高清免费观看| 久久精品综合网| 欧美亚洲精品一区| 国产另类ts人妖一区二区| 国产精品成人一区二区艾草 | bt欧美亚洲午夜电影天堂| 一个色妞综合视频在线观看| 欧美一区二区三级| 成人av资源下载| 热久久久久久久| 日韩一区欧美一区| 欧美va亚洲va香蕉在线| 99视频在线观看一区三区| 天天色天天爱天天射综合| 国产欧美一区二区在线| 欧美肥妇free| 99久久99久久久精品齐齐| 久热成人在线视频| 亚洲老妇xxxxxx| 欧美国产视频在线| 日韩一区二区三区四区 | 欧美一区二区人人喊爽| 91在线视频网址| 精品一区二区三区在线播放| 亚洲欧美电影一区二区| 日韩欧美123| 欧美中文字幕一二三区视频| 成人不卡免费av| 国产一区不卡在线| 日韩国产欧美在线视频| 亚洲狼人国产精品| 国产精品区一区二区三| 久久久不卡影院| 日韩一级片网站| 欧美三电影在线| 欧洲av在线精品| 91啪亚洲精品| 不卡视频在线看| 国产精品一色哟哟哟| 久色婷婷小香蕉久久| 青草国产精品久久久久久| 夜夜揉揉日日人人青青一国产精品| 国产精品三级av在线播放| 欧美变态口味重另类| 欧美一区二区三区电影| 91精品国产品国语在线不卡| 在线观看国产91| 欧美亚洲综合久久| 欧美三区在线观看| 欧美日韩精品一二三区| 欧美日本免费一区二区三区| 在线一区二区观看| 欧美午夜寂寞影院| 欧美日韩一区不卡| 欧美性受xxxx黑人xyx性爽| 色成人在线视频| 色综合久久中文字幕综合网 | 一区二区三区四区不卡视频| 亚洲激情一二三区| 亚洲亚洲精品在线观看| 视频一区国产视频| 蜜桃久久av一区| 国产一区二区三区香蕉| 国产精品乡下勾搭老头1| 国产成人精品影视| eeuss影院一区二区三区| 成人av网站免费观看| 日本韩国欧美一区二区三区| 欧美日韩中字一区| 欧美va在线播放| 日本一区二区三区免费乱视频 | 欧美国产日产图区| 亚洲色图一区二区| 亚洲人精品一区| 午夜亚洲福利老司机| 免费在线看成人av| 国产福利不卡视频| 91视频一区二区| 欧美日韩精品是欧美日韩精品| 日韩无一区二区| 国产精品私人自拍| 亚洲综合成人在线| 老司机午夜精品| 国产精品18久久久久久久久 | 亚洲激情自拍偷拍| 免播放器亚洲一区| 成人午夜电影久久影院| 91成人免费在线视频| 久久这里只有精品6| 中文字幕亚洲不卡| 免费成人你懂的| 99精品欧美一区| 国产精品久久久一本精品 | 欧美一级日韩免费不卡| 国产亚洲va综合人人澡精品| 亚洲精品欧美二区三区中文字幕| 视频一区视频二区中文字幕| 国产精品性做久久久久久| 欧美体内she精高潮| 久久久青草青青国产亚洲免观| 亚洲黄色av一区| 国产精品1024| 欧美日韩电影一区| 日韩毛片视频在线看| 精品在线亚洲视频| 欧美亚洲动漫精品| 一区免费观看视频| 久久机这里只有精品| 欧美色综合天天久久综合精品| 久久免费美女视频| 爽爽淫人综合网网站| 91在线观看免费视频| 久久综合久久综合久久综合| 亚洲成a人片在线不卡一二三区| 成熟亚洲日本毛茸茸凸凹| 欧美大尺度电影在线| 亚洲网友自拍偷拍| 91丝袜呻吟高潮美腿白嫩在线观看| 久久免费美女视频| 美美哒免费高清在线观看视频一区二区| 成人av资源在线| 国产精品无人区| 国产精品自拍网站| 日韩美一区二区三区| 视频一区二区三区中文字幕| 欧美性猛片aaaaaaa做受| 国产精品初高中害羞小美女文| 国产jizzjizz一区二区| 精品999在线播放| 久久精品国产第一区二区三区| 7777精品伊人久久久大香线蕉完整版| 亚洲摸摸操操av| 91麻豆精品视频| 亚洲欧美日韩中文字幕一区二区三区| 成人自拍视频在线| 国产精品乱人伦| 成人黄色电影在线| 亚洲欧美综合网| 91免费视频网址| 亚洲女性喷水在线观看一区| 一本到不卡精品视频在线观看| 中文字幕字幕中文在线中不卡视频|