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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? urunning.pas

?? 一個(gè)dos游戲的源代碼
?? PAS
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
//極限1000米
//Author: CrazyWill
//Email: CrazyWill@163.com

unit uRunning;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ImgList, ExtCtrls, StdCtrls, IniFiles,
  uInclude, uSprite, uMap, uArrow, uCut, uFire, MPlayer;

type

  TForm_Run = class(TForm)
    Label1: TLabel;
    pnlView: TPanel;
    pbxView: TPaintBox;
    Timer1: TTimer;
    MediaPlayer1: TMediaPlayer;
    MediaPlayer2: TMediaPlayer;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    Map: TMap;
    Sprite: TSprite;
    Cut: TCut;
    Arrows: array[1..MaxArrowNumber] of TArrow;
    Fires: array[1..MaxFireNumber] of TFire;

    FBackBitmap: TBitmap; // dobule-buffering

    FGameStatus: TGameStatus; // 游戲狀態(tài)

    procedure Init;
    procedure InitGame;
    procedure UpdateView;
    procedure DrawBackBitmap;
    procedure DrawStatusBox(S: string; TopOrCenter: Boolean);
    procedure UpdateControlStatus;

    procedure SetGameStatus(Value: TGameStatus);

    procedure GameLoop; // 游戲主循環(huán)

    //碰撞檢查
    function CheckCollisions: Boolean;

    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form_Run: TForm_Run;
  sound: Boolean;

implementation

uses uRun;

{$R *.dfm}

procedure TForm_Run.UpdateView;
begin
  DrawBackBitmap; // 先畫(huà)在內(nèi)存的bitmap上
  pbxView.Canvas.Draw(0, 0, FBackBitmap); // 再?gòu)?fù)制到屏幕
end;

// 先將畫(huà)面繪制在緩沖用 bitmap, 再?gòu)?fù)制到屏幕

procedure TForm_Run.DrawBackBitmap;
var
  Str: string;
  R: TRect;
  i: integer;
begin
  Map.Draw(FBackBitmap.Canvas);
  for i := 1 to MaxArrowNumber do
    Arrows[i].Draw(FBackBitmap.Canvas);
  Sprite.Draw(FBackBitmap.Canvas);

  for i := 1 to MaxFireNumber do
    Fires[i].Draw(FBackBitmap.Canvas);
  Cut.Draw(FBackBitmap.Canvas);

  //    FBackBitmap.Canvas.Brush.Color := clBlack;
  //    FBackBitmap.Canvas.FillRect(FBackBitmap.Canvas.ClipRect);

  with FBackBitmap.Canvas do
  begin
    Font.Color := clWhite;
    Font.name := 'FixedSys';
    Font.Style := [fsBold];
    Font.Size := 12;
    Brush.Style := bsClear;

    case FGameStatus of
      gsTitle: //畫(huà)出上面的標(biāo)題大字及下方的作者名稱(chēng)
        begin
          R := Rect(0, 0, WORLD_WIDTH,
            WORLD_HEIGHT - TextHeight('и'));
          DrawText(Handle, '“潮之陽(yáng)”軟件工作室', -1, R,
            DT_BOTTOM or DT_CENTER or DT_SINGLELINE);
          DrawStatusBox('極限1000米', True);
        end;

      gsOver:
        DrawStatusBox('Game Over', False);

    else
      begin
        //右上角顯示生命力及行程
        Str := Format('生命力:%d  行程:%d',
          [Sprite.HP, Map.CurrentMetre]);
        TextOut(WORLD_WIDTH - TextWidth(Str) - 5, 5, Str);
      end;
    end;

    //過(guò)關(guān)畫(huà)面
    if FGameStatus = gsSuccess then
      DrawStatusBox('Success!', False);
  end;
end;

procedure TForm_Run.Init;
var
  ini: TINIFILE;
  Filename: string;

begin
  Filename := ExtractFilePath(Paramstr(0)) + GameIniFilename;

  try
    ini := TINIFILE.Create(Filename);
  except
    showmessage('打開(kāi)INI文件出錯(cuò)');
    close;
  end;

  IniDirectory := ini.ReadString('Game', 'IniDirectory', IniDirectory);
  IniDirectory := ExtractFilePath(Paramstr(0)) + IniDirectory + '\';

  ////  IniFilename := ini.ReadString('Game', 'IniFilename', IniFilename);

  ini.Destroy;

  ini := TINIFILE.Create(IniDirectory + IniFilename);

  CurrentSkinName := ini.ReadString('Base', 'SkinName', CurrentSkinName);
  Transparent_Color := ini.ReadInteger('Base', 'Transparent_Color', clBlack);
  WORLD_WIDTH := ini.ReadInteger('Map', 'Width', WORLD_WIDTH);
  WORLD_HEIGHT := ini.ReadInteger('Map', 'Height', WORLD_HEIGHT);

  MapRollSpeed := ini.ReadInteger('Map', 'Speed', MapRollSpeed);

  ini.Destroy;
end;

procedure TForm_Run.FormClose(Sender: TObject; var Action: TCloseAction);
var
  i: integer;
begin
  if (FGameStatus = gsPlaying) or (FGameStatus = gsPause) then
  begin
    Action := caNone; /// 禁用窗口右上角的X按鈕退出程序
    Exit; /// 退出必須按ESC鍵正常退出
  end;

  SetGameStatus(gsPause);

  Timer1.Enabled := false;

  FBackBitmap.Destroy;

  for i := 1 to MaxFireNumber do
    Fires[i].Destroy;
  for i := 1 to MaxArrowNumber do
    Arrows[i].Destroy;
  Cut.Destroy;
  Sprite.Destroy;
  Map.Destroy;

  MediaPlayer1.Close;

  Form_Main.Close;
end;

procedure TForm_Run.FormCreate(Sender: TObject);
var
  i: integer;
  fn: string;
begin
  init;

  Map := TMap.Create;
  Sprite := TSprite.Create;
  Cut := TCut.Create;

  for i := 1 to MaxArrowNumber do
    Arrows[i] := TArrow.Create;

  for i := 1 to MaxFireNumber do
    Fires[i] := TFire.Create;

  pnlView.ClientWidth := Map.Width;
  pnlView.ClientHeight := Map.Height;

  pbxView.Width := Map.Width;
  pbxView.Height := Map.Height;

  self.ClientWidth := Map.Width;
  self.ClientHeight := Map.Height;

  self.Top := (SCREEN.Height - self.Height) div 2;
  self.Left := (SCREEN.Width - self.Width) div 2;

  FBackBitmap := TBitmap.Create;
  FBackBitmap.Width := Map.Width;
  FBackBitmap.Height := Map.Height;

  InitGame;

  UpdateView;

  Timer1.Enabled := true;

  SetGameStatus(gsTitle);

  Sprite.Active := false;
  Map.Active := true;
  Cut.Active := true;
  Arrows[1].Active := true;

  fn := ExtractFilePath(Paramstr(0)) + 'RUN.MID';
  if FileExists(fn) then
  begin
    MediaPlayer1.FileName := fn;
    MediaPlayer1.Open;
    sound := True;
  end
  else
    sound := False;

end;

procedure TForm_Run.Timer1Timer(Sender: TObject);
var
  i: integer;
begin
  if Sprite.Active then
  begin
    Map.Roll;
    Cut.Cut;
    if Map.Active then
    begin
      for i := 1 to MaxArrowNumber do
        Arrows[i].X := Arrows[1].X - MapRollSpeed;
      for i := 1 to MaxFireNumber do
        Fires[i].X := Fires[i].X - MapRollSpeed;
    end;

    for i := 1 to MaxArrowNumber do
      Arrows[i].Roll;
    for i := 1 to MaxFireNumber do
      Fires[i].Drop;

    Sprite.Move;
  end
  else
  begin
    if Map.Active then
    begin
      Map.Roll;
      Cut.Cut;
      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;

      Sprite.RollBack;
    end
  end;

  CheckCollisions;

  UpdateView;
end;

procedure TForm_Run.DrawStatusBox(S: string; TopOrCenter: Boolean);
var
  R: TRect;
  TextSize: TSize;
begin
  with FBackBitmap, FBackBitmap.Canvas do
  begin
    Font.Color := clWhite; //設(shè)置字體屬性
    Font.name := 'FixedSys';
    Font.Style := [fsBold];
    Font.Size := 36;

    TextSize := TextExtent(S);
    // first calculate the necessary rectangle
    R := Rect(0, 0, TextSize.cx, TextSize.cy);
    OffsetRect(R, (Width - TextSize.cx) div 2, (Height - TextSize.cy) div 2);
    // 將框框置于畫(huà)面中央

    if TopOrCenter then
    begin
      R.Top := 24; // 將框框擺在上方中間
      R.Bottom := R.Top + TextSize.cy;
    end;

    InflateRect(R, 10, 10); //描繪外框,寬度為10
    Pen.Width := 4;
    Pen.Color := clWhite;
    Pen.Style := psSolid;
    Brush.Color := clBlue;
    Brush.Style := bsSolid;
    Rectangle(R.Left, R.Top, R.Right, R.Bottom);
    //  將字畫(huà)出來(lái),置中對(duì)齊
    DrawText(Canvas.Handle, PChar(S), Length(S), R, DT_CENTER or DT_SINGLELINE
      or
      DT_VCENTER);
  end;
end;

procedure TForm_Run.SetGameStatus(Value: TGameStatus);
var
  fn: string;
begin
  FGameStatus := Value;

  //根據(jù)新的游戲狀態(tài)開(kāi)關(guān)定時(shí)器
  Timer1.Enabled := (FGameStatus = gsPlaying);

  case FGameStatus of
    gsTitle:
      begin
        Sprite.Active := false;
        Map.Active := false;

      end;

    gsPlaying:
      begin
        Sprite.Active := False;
        Map.Active := True;

        UpdateControlStatus; //更新標(biāo)題欄及菜單
        UpdateView; //更新游戲畫(huà)面

        GameLoop; //  進(jìn)入游戲主循環(huán)(游戲進(jìn)行中程序一直在此循環(huán)內(nèi))
        /////////////////////////////
      end;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久免费偷拍视频| 日韩精品国产欧美| 欧美日韩综合在线免费观看| 日本成人在线不卡视频| 国产精品久久久久久久久免费相片 | 国产精品香蕉一区二区三区| 亚洲欧美另类在线| 久久综合色鬼综合色| 欧美日韩你懂的| 99在线精品观看| 精品亚洲免费视频| 亚洲成人免费视频| 国产精品超碰97尤物18| 欧美大度的电影原声| 91激情在线视频| 成人精品免费网站| 国产一区二区三区四区五区入口| 亚洲一区二区三区美女| **性色生活片久久毛片| 日韩欧美国产综合| 欧美日韩激情一区| thepron国产精品| 国产精品一区二区黑丝| 五月天婷婷综合| 亚洲精品乱码久久久久久| 国产日产欧美一区| 久久嫩草精品久久久久| 欧美一区二区三区日韩| 在线观看欧美日本| 精品国产乱码久久久久久1区2区| 欧美无人高清视频在线观看| 成人免费视频网站在线观看| 久久国产精品99精品国产| 亚洲va韩国va欧美va精品| 亚洲精品一二三区| 综合自拍亚洲综合图不卡区| 中文字幕av一区二区三区高 | 亚洲精品国产a| 中文字幕视频一区二区三区久| www成人在线观看| 日韩精品一区二区三区视频播放 | 91亚洲大成网污www| 粗大黑人巨茎大战欧美成人| 国产福利精品一区| 国产乱码字幕精品高清av| 久久机这里只有精品| 日韩**一区毛片| 免费精品视频最新在线| 另类小说视频一区二区| 麻豆国产一区二区| 久久国产免费看| 久久er精品视频| 国内外成人在线| 国产成人精品www牛牛影视| 国产很黄免费观看久久| 不卡视频一二三| 91亚洲大成网污www| 欧美在线一区二区三区| 欧美挠脚心视频网站| 日韩欧美在线观看一区二区三区| 欧美一区二区日韩一区二区| 精品国精品自拍自在线| 国产偷v国产偷v亚洲高清| 中文字幕在线免费不卡| 一级做a爱片久久| 日韩高清一级片| 精品一区二区三区在线视频| 国产成人精品网址| 在线观看国产日韩| 日韩亚洲欧美成人一区| 久久综合狠狠综合久久综合88| 欧美国产视频在线| 一区二区三国产精华液| 捆绑变态av一区二区三区| 国产99久久久久久免费看农村| 91丨porny丨首页| 91精品国产美女浴室洗澡无遮挡| 久久色成人在线| 亚洲精品日韩综合观看成人91| 亚洲国产精品久久久久秋霞影院| 麻豆精品一区二区av白丝在线| 国产精品综合久久| 欧美在线免费观看亚洲| 日韩欧美国产综合| 中文字幕一区二| 美日韩一区二区三区| 成人小视频免费在线观看| 欧美亚洲国产一区二区三区| 欧美精品一区二区三区视频| 亚洲天堂精品视频| 另类小说欧美激情| 欧美无砖专区一中文字| 欧美国产乱子伦| 日本亚洲天堂网| 北条麻妃一区二区三区| 欧美一级理论性理论a| 国产精品视频你懂的| 青娱乐精品视频| 91在线观看成人| 精品欧美乱码久久久久久1区2区| 亚洲欧美日韩久久| 国产麻豆欧美日韩一区| 欧美日韩国产大片| 中文字幕一区二区三区在线观看| 91麻豆精品视频| 精品国产免费久久| 亚洲午夜精品17c| 风间由美性色一区二区三区| 欧美日韩精品免费观看视频| 中文字幕亚洲成人| 粉嫩av一区二区三区粉嫩| 7777精品伊人久久久大香线蕉经典版下载| 国产亚洲精品资源在线26u| 亚洲国产cao| 91久久人澡人人添人人爽欧美| 久久毛片高清国产| 蜜桃一区二区三区四区| 日本韩国欧美一区| 国产精品乱码妇女bbbb| 久国产精品韩国三级视频| 欧美日韩中字一区| 亚洲精品美腿丝袜| av在线免费不卡| 欧美国产欧美亚州国产日韩mv天天看完整| 视频一区视频二区在线观看| 色伊人久久综合中文字幕| 国产精品视频线看| 国产69精品久久久久777| 26uuu成人网一区二区三区| 日韩精品成人一区二区在线| 91极品视觉盛宴| 一区二区三区色| 色综合久久综合| 亚洲欧洲精品一区二区三区不卡| 国产精品99久久久久久有的能看 | 亚洲精品大片www| 91在线精品一区二区| 欧美国产97人人爽人人喊| 国产一区二区三区四区在线观看| 欧美xxxxx牲另类人与| 蜜桃视频免费观看一区| 日韩一区二区三区四区| 日本成人中文字幕在线视频| 日韩精品一区二区三区老鸭窝 | 高清不卡一二三区| 国产欧美1区2区3区| 成人毛片视频在线观看| 亚洲国产精华液网站w| 国产成人免费视频网站| 亚洲国产精品黑人久久久| 成人午夜激情片| 日韩一区在线播放| 色综合咪咪久久| 亚洲精品va在线观看| 欧美日韩激情在线| 久久99国产精品尤物| 久久精品一区蜜桃臀影院| 国产精品一二二区| 久久精品免视看| 国产盗摄精品一区二区三区在线| 久久亚洲影视婷婷| av在线不卡网| 亚洲电影第三页| 欧美一级电影网站| 国产揄拍国内精品对白| 国产精品不卡在线| 欧美丰满嫩嫩电影| 国产毛片精品国产一区二区三区| 中文字幕欧美激情一区| 欧洲色大大久久| 久久成人精品无人区| 国产精品国产三级国产aⅴ原创| 在线观看91精品国产入口| 日本伊人午夜精品| 国产欧美精品一区二区色综合朱莉| 色综合天天综合网天天看片| 欧美精品视频www在线观看| 久久99精品久久久| 亚洲欧洲av一区二区三区久久| 欧美影院精品一区| 韩日av一区二区| 亚洲一区二区三区在线看| 精品久久久久一区| 日本福利一区二区| 极品少妇xxxx精品少妇偷拍| 中文字幕日韩av资源站| 91精品国模一区二区三区| 国产丶欧美丶日本不卡视频| 亚洲成av人片| 国产精品美女久久久久高潮| 777亚洲妇女| 99久久精品免费精品国产| 蜜臀av在线播放一区二区三区| 国产精品第五页| 欧美成人艳星乳罩| 在线观看精品一区| www.一区二区| 欧美aaaaaa午夜精品| 亚洲精品欧美在线| 日韩女优av电影|