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

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

?? urunning.pas

?? 一個dos游戲的源代碼
?? PAS
?? 第 1 頁 / 共 2 頁
字號:

    gsPause:
      begin
        Sprite.Active := false;
        Map.Active := false;

      end;

    gsSuccess:
      begin
        fn := ExtractFilePath(Paramstr(0)) + 'SUCCESS.AVI';
        if FileExists(fn) then
        begin
          pbxView.Canvas.Brush.Color := clBlack;
          pbxView.Canvas.FillRect(FBackBitmap.Canvas.ClipRect);
          MediaPlayer2.FileName := fn;
          MediaPlayer2.Open;
          MediaPlayer2.Play;
        end;
      end;
  end;

  if (FGameStatus <> gsTerminate) then
  begin
    if (FGameStatus <> gsSuccess) then
    begin
      UpdateControlStatus;
      UpdateView;
    end;
  end
  else
  begin
    Close //關閉窗口
  end
end;

procedure TForm_Run.UpdateControlStatus;
const
  StatusStr: array[TGameStatus] of string = (
    'Welcome  請按回車鍵正式開始游戲',
    'Playing',
    'Pause',
    'Success', 'Game Over', 'Terminating...');
begin
  Caption := Format('%s - %s', [Application.Title, StatusStr[FGameStatus]]);

end;

//游戲初始化

procedure TForm_Run.InitGame;
var
  i, k: integer;
begin
  Map.Active := true;
  Map.CurrentPoint := 0;
  Map.CurrentMetre := 0;

  Sprite.Visible := True;
  Sprite.Active := False;
  Sprite.X := WORLD_WIDTH div 2;
  Sprite.Direction := drRight;
  Sprite.HP := Sprite.MaxHP;

  Randomize;

  for i := 1 to MaxArrowNumber do
  begin
    Arrows[i].Active := True;
    Arrows[i].ReSet;
  end;

  Arrows[1].X := 400;

  for i := 2 to MaxArrowNumber do
  begin
    Arrows[i].X := Arrows[i - 1].X + Arrows[i].Width * 4 + Random(Dynameter);
  end;

  for i := 1 to MaxFireNumber do
  begin
    Fires[i].Active := True;
    Fires[i].ReSet;
  end;

  Fires[1].X := WORLD_WIDTH div 2;
  for i := 2 to MaxArrowNumber do
  begin
    Fires[i].X := Fires[i - 1].X + Fires[1].Width * 4 + Random(Dynameter);
  end;

  Timer1.Enabled := True;

  if sound then
    MediaPlayer1.Play;

end;

procedure TForm_Run.GameLoop;
var
  Msg: TMsg;
  i: integer;
begin

  // 游戲主循環
  while (FGameStatus = gsPlaying) or (FGameStatus = gsPause) do
  begin
    if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then //取得消息
    begin
      case Msg.message of
        WM_QUIT: //程序結束,離開游戲循環
          begin
            Timer1.Enabled := False;
            FGameStatus := gsTerminate;
            UpdateControlStatus;
            UpdateView;
            Break;
          end;

        WM_PAUSE: //游戲暫停
          begin
            SetGameStatus(gsPause);
          end;

        WM_CONTINUE: //結束暫停狀態,繼續進行游戲
          begin
            FGameStatus := gsPlaying;
            Sprite.Active := False;
            Map.Active := True;
            Timer1.Enabled := True;
            UpdateControlStatus;
            UpdateView;
          end;

        WM_GAMEOVER: // 主角掛掉了,游戲結束
          begin
            Timer1.Enabled := False;
            FGameStatus := gsOver;
            UpdateControlStatus;
            UpdateView;
            Break;
          end;

        WM_SUCCESS:
          begin
            SetGameStatus(gsSuccess);
            Break;
          end;

        WM_INIT_LEVEL:
          begin
            InitGame; //游戲重新開始
          end;
      end;

      //正常的消息處理程序
      TranslateMessage(Msg);
      DispatchMessage(Msg);
    end
    else if Focused then //當窗口扔有輸入焦點時才動作
    begin

      if Map.Active then
      begin
        Map.Roll;
        for i := 1 to MaxArrowNumber do
        begin
          Arrows[i].X := Arrows[1].X - MapRollSpeed;
          Arrows[i].Roll;
        end;
        for i := 1 to MaxFireNumber do
        begin
          Fires[i].X := Fires[i].X - MapRollSpeed;
          Fires[i].Drop;
        end;
        Cut.Cut;
        if Sprite.Active then
          Sprite.Move
        else
          Sprite.RollBack;

      end;

      CheckCollisions;

      //更新畫面
      UpdateView;

    end
    else
    begin
      //若窗口沒有取得輸入焦點,則將控制權交給其他線程
      //直到有消息進來
      WaitMessage;
    end;
  end;
end;

procedure TForm_Run.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Key = VK_ESCAPE) then
    if (FGameStatus = gsTitle) or (FGameStatus = gsOver)
      or (FGameStatus = gsSuccess) then
      Close
    else
    begin
      FGameStatus := gsTerminate;
      exit;
    end;

  if (Key = VK_RETURN) then //回車鍵  暫停/繼續
  begin
    case FGameStatus of
      gsSuccess:
        begin
          InitGame;
          Timer1.Enabled := true;
          SetGameStatus(gsPlaying);
        end;
      gsOver:
        begin
          InitGame;
          Timer1.Enabled := true;
          SetGameStatus(gsPlaying);
        end;
      gsTitle:
        begin
          InitGame;
          Timer1.Enabled := true;
          SetGameStatus(gsPlaying);
        end;
      gsPause:
        begin
          Timer1.Enabled := true;
          PostMessage(0, WM_CONTINUE, 0, 0);
          /////          SetGameStatus(gsPlaying);
        end;
      gsPlaying:
        begin
          Timer1.Enabled := false;
          PostMessage(0, WM_PAUSE, 0, 0);
          /////          SetGameStatus(gsPause);
        end;
    end;
    exit;
  end;

  // 只有在游戲狀態中,鍵盤控制才有效
  if FGameStatus = gsPlaying then
  begin
    case Key of
      VK_RIGHT, VK_LEFT: //// , VK_UP, VK_DOWN :
        begin
          case Key of
            VK_RIGHT: Sprite.Direction := drRight;

            VK_LEFT: Sprite.Direction := drLeft;

            //          VK_UP:   Sprite.Direction := drUp;

            //          VK_DOWN:  Sprite.Direction := drDown;

          end;

          Sprite.Active := True;
        end;

      {      VK_SPACE:
              begin
                //  跳
              end;
            VK_ESCAPE:
              begin
                //  游戲暫停
              end;
      }
    end;
  end;
end;

procedure TForm_Run.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  // 只有在游戲狀態中,鍵盤控制才有效
  if FGameStatus = gsPlaying then
  begin
    case Key of
      VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT: Sprite.Active := False;
    end;
  end;

end;

function TForm_Run.CheckCollisions: Boolean;
var
  R: TRect;
  i: integer;
  function Tile(Rec: TRect): Integer;
    //角色中心點所在位置
  begin
    Result := (Rec.Left + Rec.Right) div 2;
  end;

begin
  result := false;

  // 終于千辛萬苦地跑完一千米,勝利嘍!!
  if (Map.CurrentMetre >= 1000) then
  begin
    PostMessage(0, WM_SUCCESS, 0, 0);
    exit;
  end;

  // 跑過一定距離,加血
  if Map.CurrentPoint mod (Map.PointPerMetre * Map.RunMetre) = 0 then
  begin
    Sprite.HP := Sprite.HP + Map.AddHP;
    if Sprite.HP > Sprite.MaxHP then
      Sprite.HP := Sprite.MaxHP;
  end;

  if IntersectRect(R, Sprite.Rect, Cut.Rect) then
  begin
    Sprite.HP := Sprite.HP - Cut.HurtPoint;
    //如果碰撞到,則人物前進一段距離,以避免連續碰撞
    Sprite.X := Cut.ObjectWidth + MapRollSpeed;
    Result := True;
  end;

  for i := 1 to MaxArrowNumber do
    if IntersectRect(R, Sprite.Rect, Arrows[i].Rect) then
    begin
      Sprite.HP := Sprite.HP - Arrows[i].HurtPoint;
      //如果碰撞時人物中心點在箭中心點左邊,則后退,否則前進
      if Tile(Arrows[i].Rect) < Tile(Sprite.Rect) then
        Sprite.X := Arrows[i].X + Arrows[i].Width
      else
        Sprite.X := Arrows[i].X - Sprite.ObjectWidth - MapRollSpeed;

      Result := True;
    end;

  for i := 1 to MaxFireNumber do
    if IntersectRect(R, Sprite.Rect, Fires[i].Rect) then
    begin
      Sprite.HP := Sprite.HP - Fires[i].HurtPoint;
      //如果碰撞時人物中心點在火球中心點左邊,則后退,否則前進
      if Tile(Fires[i].Rect) < Tile(Sprite.Rect) then
        Sprite.X := Fires[i].X + Fires[i].Width
      else
        Sprite.X := Fires[i].X - Sprite.ObjectWidth - MapRollSpeed;

      Result := True;
    end;

  //人物死亡,游戲結束
  if (Sprite.HP < 0) then
  begin
    Sprite.HP := 0;
    PostMessage(0, WM_GAMEOVER, 0, 0);
  end;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99这里只有久久精品视频| 在线不卡中文字幕| 欧美性猛交xxxx黑人交| xfplay精品久久| 一区二区成人在线| 成人高清在线视频| 欧美一级艳片视频免费观看| 亚洲青青青在线视频| 国产一区二区网址| 欧美精品日韩精品| 亚洲欧美一区二区三区孕妇| 国产精品中文字幕日韩精品| 欧美精品亚洲一区二区在线播放| 亚洲欧美日韩系列| 成人国产精品视频| 欧美高清在线精品一区| 蜜臀久久久久久久| 欧美裸体bbwbbwbbw| 亚洲国产视频一区| 91看片淫黄大片一级在线观看| 久久久精品天堂| 精品系列免费在线观看| 日韩一区有码在线| 粉嫩在线一区二区三区视频| 久久综合色综合88| 国产乱子伦视频一区二区三区| 欧美成人精品3d动漫h| 日本色综合中文字幕| 91精品国产高清一区二区三区 | 欧美精品一区二区久久婷婷| 亚洲午夜精品久久久久久久久| 91福利视频网站| 亚洲色图在线播放| 91福利在线免费观看| 亚洲另类中文字| 欧美日韩亚洲综合在线| 午夜av电影一区| 91精品综合久久久久久| 日本美女一区二区三区视频| 欧美日韩另类国产亚洲欧美一级| 亚洲成人av一区二区| 欧美福利电影网| 久久精品国内一区二区三区| 精品国产精品一区二区夜夜嗨| 免费成人av资源网| 国产性做久久久久久| 大胆亚洲人体视频| 亚洲少妇中出一区| 欧美色图片你懂的| 日本在线不卡视频| 亚洲精品一区二区三区福利| 国产成人欧美日韩在线电影| 国产精品理论在线观看| 99r精品视频| 亚洲国产日韩精品| 欧美v日韩v国产v| 成人性视频网站| 亚洲最大成人网4388xx| 精品国产乱码久久久久久1区2区| 国产.精品.日韩.另类.中文.在线.播放| 国产欧美日韩视频在线观看| 欧美性猛片aaaaaaa做受| 久久精品国产亚洲高清剧情介绍| 久久久一区二区三区| 色综合天天视频在线观看| 日韩成人精品视频| 国产精品久久网站| 欧美精品在线观看播放| 国产99精品国产| 日韩精品视频网| 中文在线资源观看网站视频免费不卡 | 国内偷窥港台综合视频在线播放| 国产精品久久影院| 欧美电影一区二区三区| 国产高清久久久| 亚洲综合清纯丝袜自拍| 久久久高清一区二区三区| 欧美偷拍一区二区| 国产成人精品影视| 日韩精品三区四区| |精品福利一区二区三区| 日韩一区二区免费在线观看| 91丨porny丨在线| 精品亚洲成av人在线观看| 亚洲一区二区av电影| 日韩精品久久理论片| 中国av一区二区三区| 日韩午夜激情av| 欧洲人成人精品| 国产xxx精品视频大全| 日本91福利区| 亚洲国产一区二区三区青草影视| 国产精品拍天天在线| 精品国产成人在线影院| 91麻豆精品国产无毒不卡在线观看 | 日本不卡中文字幕| 伊人一区二区三区| 国产精品黄色在线观看| 精品国产污污免费网站入口| 欧美色中文字幕| 色婷婷精品久久二区二区蜜臀av | 91亚洲午夜精品久久久久久| 韩国精品在线观看| 男女视频一区二区| 天天av天天翘天天综合网色鬼国产 | 色播五月激情综合网| 成人午夜在线免费| 日韩午夜小视频| 91麻豆精品国产91久久久久久久久| 97超碰欧美中文字幕| 成人av网站在线| 国产69精品久久777的优势| 国产精品一二一区| 国产成人av自拍| 成人免费观看视频| www.日本不卡| 99re在线视频这里只有精品| aaa国产一区| 色悠悠亚洲一区二区| 色综合色综合色综合色综合色综合 | 欧美绝品在线观看成人午夜影视| 欧美无人高清视频在线观看| 欧美亚洲日本一区| 4438x成人网最大色成网站| 日韩欧美专区在线| 久久一区二区三区国产精品| 国产欧美综合在线| 日韩理论片在线| 亚洲国产精品久久艾草纯爱| 午夜精品成人在线视频| 日韩成人精品在线观看| 精品影院一区二区久久久| 韩国成人福利片在线播放| 国产高清久久久| 91美女片黄在线观看| 欧美欧美午夜aⅴ在线观看| 欧美一区二区视频网站| 欧美mv日韩mv国产网站| 国产日韩精品一区二区浪潮av| 国产精品久久福利| 亚洲乱码国产乱码精品精可以看| 性做久久久久久久久| 韩国v欧美v亚洲v日本v| 91美女片黄在线| 日韩一区二区三区视频在线观看| 国产欧美日韩三级| 亚洲成人av在线电影| 国产成人免费在线观看| 在线一区二区三区| 日韩精品资源二区在线| 中文字幕一区二区在线观看| 日日夜夜精品视频天天综合网| 狠狠色狠狠色合久久伊人| 91视频www| 日韩欧美www| 亚洲黄色性网站| 精品一区二区三区免费观看| 色综合视频在线观看| 日韩一区二区三区高清免费看看| 国产精品免费久久| 免费观看成人av| 色中色一区二区| 久久精品人人做人人爽97| 图片区小说区区亚洲影院| 国产成人精品免费看| 欧美一区二区成人| 亚洲欧美福利一区二区| 精品一区二区在线视频| 欧美亚洲尤物久久| 中文乱码免费一区二区| 男女男精品视频| 久久久久久久久久久99999| 国产suv精品一区二区6| 精品国产一二三| 亚洲女性喷水在线观看一区| 国内偷窥港台综合视频在线播放| 爽爽淫人综合网网站| 亚洲欧美激情视频在线观看一区二区三区| 成人av资源在线| 亚洲免费观看高清完整版在线观看 | 最新不卡av在线| 91香蕉视频黄| 亚洲成在人线在线播放| 欧美一区二区女人| 精品在线观看免费| 国产欧美日韩激情| 色中色一区二区| 青青草国产精品亚洲专区无| 精品福利视频一区二区三区| 国产精品一区二区黑丝| 中文字幕一区二区三区不卡在线| 欧美伊人精品成人久久综合97| 日韩影院免费视频| 精品免费视频一区二区| www.欧美日韩| 日韩专区在线视频| 国产欧美一区二区三区鸳鸯浴 | 欧美在线视频不卡| 蜜桃视频一区二区| 国产精品免费网站在线观看|