⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 urun.pas

📁 一个dos游戏的源代码
💻 PAS
字号:
//极限1000米
//Author: CrazyWill
//Email: CrazyWill@163.com

unit uRun;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, ImgList, OleCtrls, SHDocVw, MPlayer,
  uSkinSelect, uForm_Info, uForm_Author;

type
  TForm_Main = class(TForm)
    Image6: TImage;
    Panel1: TPanel;
    Image_Point: TImage;
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Timer1: TTimer;
    ImageList1: TImageList;
    MediaPlayer1: TMediaPlayer;
    pnlTITLE: TPanel;
    MediaPlayer2: TMediaPlayer;
    Image5: TImage;
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormCreate(Sender: TObject);
    procedure pnlTITLEClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form_Main: TForm_Main;

implementation

uses uRunning;

var
  CurrentPosition: integer;
  sound: Boolean;

{$R *.dfm}

procedure TForm_Main.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  point_step: integer;

  procedure SelectOK;
  var
    str: string;
  begin
    case CurrentPosition of
      0:
        begin
          Form_Main.Hide;
          Form_Run.Show;
        end;
      1:
        begin
          {          str := '游戏操作说明' + #13 + #10 + #13 + #10 +
                      '选择“开始游戏”一项,进入游戏主界面,' + #13 + #10 +
                      '且游戏处于暂停状态,按回车键正式开始。' + #13 + #10 + #13 + #10 +
                      '游戏中随时按回车键暂停与继续,' + #13 + #10 +
                      'ESC键立即退出游戏,' + #13 + #10 +
                      '方向键操作游戏角色。';
                    showmessage(str);
          }
          Hide;
          Form_Info.ShowModal;
          Show;
        end;
      2:
        begin
          Hide;
          Form_SkinSelect.ShowModal;
          Show;
        end;
      3:
        begin
          {          str := '“潮之阳”软件工作室' + #13 + #10 + #13 + #10 +
                      '  程序设计:许昭鹏' + #13 + #10 +
                      '  界面设计:陈培淋';
                    showmessage(str);
          }
          Hide;
          Form_Author.ShowModal;
          Show;
        end;
      4:
        begin
          close;
        end;
    end;

  end;

begin

  if pnlTITLE.Visible then
  begin
    pnlTITLEClick(Sender);
    exit;
  end;

  point_step := 40;

  if (Key = VK_ESCAPE) then
    close;
  if (Key = VK_DOWN) or (Key = VK_UP) then
  begin
    case CurrentPosition of
      0:
        begin
          ImageList1.GetBitmap(0, Image1.Picture.Bitmap);
          Image1.Refresh;
        end;
      1:
        begin
          ImageList1.GetBitmap(2, Image2.Picture.Bitmap);
          Image2.Refresh;
        end;
      2:
        begin
          ImageList1.GetBitmap(4, Image3.Picture.Bitmap);
          Image3.Refresh;
        end;
      3:
        begin
          ImageList1.GetBitmap(6, Image4.Picture.Bitmap);
          Image4.Refresh;
        end;
      4:
        begin
          ImageList1.GetBitmap(8, Image5.Picture.Bitmap);
          Image5.Refresh;
        end;
    end;
  end;

  case Key of
    VK_DOWN:
      begin
        Inc(CurrentPosition);
        if (CurrentPosition > 4) then
          CurrentPosition := 0;
        Image_Point.Top := CurrentPosition * point_step;
        Image_Point.Refresh;
        if sound then
          MediaPlayer1.Play;
      end;
    VK_UP:
      begin
        Dec(CurrentPosition);
        if (CurrentPosition < 0) then
          CurrentPosition := 4;
        Image_Point.Top := CurrentPosition * point_step;
        Image_Point.Refresh;
        if sound then
          MediaPlayer1.Play;
      end;
    VK_RETURN:
      SelectOK;
    VK_SPACE:
      SelectOK;
  end;

  case CurrentPosition of
    0:
      begin
        ImageList1.GetBitmap(1, Image1.Picture.Bitmap);
        Image1.Refresh;
      end;
    1:
      begin
        ImageList1.GetBitmap(3, Image2.Picture.Bitmap);
        Image2.Refresh;
      end;
    2:
      begin
        ImageList1.GetBitmap(5, Image3.Picture.Bitmap);
        Image3.Refresh;
      end;
    3:
      begin
        ImageList1.GetBitmap(7, Image4.Picture.Bitmap);
        Image4.Refresh;
      end;
    4:
      begin
        ImageList1.GetBitmap(9, Image5.Picture.Bitmap);
        Image5.Refresh;
      end;
  end;
end;

procedure TForm_Main.FormCreate(Sender: TObject);
var
  fn: string;
begin
  Panel1.Color := clBlack;

  self.ClientWidth := 400;
  self.ClientHeight := 240;
  self.Top := (SCREEN.Height - self.Height) div 2;
  self.Left := (SCREEN.Width - self.Width) div 2;

  Self.Color := clBlack;
  CurrentPosition := 0;
  imagelist1.GetBitmap(1, Image1.Picture.Bitmap);
  imagelist1.GetBitmap(2, Image2.Picture.Bitmap);
  imagelist1.GetBitmap(4, Image3.Picture.Bitmap);
  imagelist1.GetBitmap(6, Image4.Picture.Bitmap);
  imagelist1.GetBitmap(8, Image5.Picture.Bitmap);
  fn := ExtractFilePath(Paramstr(0)) + 'SelectChange.Wav';
  if FileExists(fn) then
  begin
    MediaPlayer1.FileName := fn;
    MediaPlayer1.Open;
    sound := True;
  end
  else
    sound := false;

  fn := ExtractFilePath(Paramstr(0)) + 'TITLE.avi';
  if FileExists(fn) then
  begin
    pnlTITLE.BringToFront;
    pnlTITLE.Refresh;
    with mediaplayer2 do
    begin
      filename := fn;
      open;
      play;
    end;
  end
  else
    pnlTITLEClick(Sender);
end;

procedure TForm_Main.pnlTITLEClick(Sender: TObject);
begin
  MediaPlayer2.Close;
  pnlTITLE.SendToBack;
  pnlTITLE.Visible := False;
  self.BorderStyle := bsDialog;
  self.Width := 350;
  self.Height := 330;
  self.Top := (SCREEN.Height - self.Height) div 2;
  self.Left := (SCREEN.Width - self.Width) div 2;
  self.Refresh;
end;

procedure TForm_Main.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  MediaPlayer1.Close;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -