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

📄 umap.pas

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

unit uMap;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ImgList, ExtCtrls, StdCtrls, MMSystem,
  IniFiles, uInclude;

type

  TMap = class
  private
    FSpeed: Integer; //屏幕卷动速度  单位:像素
    FWidth: Integer;
    FHeight: Integer;

    FActive: Boolean; //是否进行动作

    FPointPerMetre: integer; //屏幕上多少个点为1米
    FCurrentMetre: Integer; //已经走了多少米

    FCurrentPoint: Integer; //已经走了多少点

    FRunMetre: Integer; //跑多少米加一次血
    FAddHP: integer; //每跑RunMetre米加多少血

    FBits, FInvBitmap: TBitmap;

  protected

  public

    constructor Create; virtual;
    destructor Destroy; override;
    procedure Draw(Canvas: TCanvas);
    procedure Roll;

    property PointPerMetre: integer read FPointPerMetre;
    property CurrentPoint: integer read FCurrentPoint write FCurrentPoint;
    property CurrentMetre: integer read FCurrentMetre write FCurrentMetre;

    property RunMetre: integer read FRunMetre;
    property AddHP: integer read FAddHP;

    property Speed: integer read FSpeed; //// write FSpeed;
    property Width: integer read FWidth write FWidth;
    property Height: integer read FHeight write FHeight;
    property Active: Boolean read FActive write FActive;

  end;

implementation

constructor TMap.Create;
var
  ini: TIniFile;
  sTemp: string;
  iniSection: string;
begin
  inherited Create;
  // 初始化
  iniSection := 'Map';

  FActive := True;

  FBits := TBitmap.Create;
  FInvBitmap := TBitmap.Create;

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

  sTemp := ini.ReadString(iniSection, 'Filename', sTemp);
  FBits.LoadFromFile(IniDirectory + sTemp);

  FSpeed := ini.ReadInteger(iniSection, 'Speed', MAP_DEFAULT_SPEED);
  FWidth := ini.ReadInteger(iniSection, 'Width', FWidth);
  FHeight := ini.ReadInteger(iniSection, 'Height', FHeight);
  FPointPerMetre := ini.ReadInteger(iniSection, 'PointPerMetre', 100);
  FRunMetre := ini.ReadInteger(iniSection, 'RunMetre', 0);
  FAddHP := ini.ReadInteger(iniSection, 'AddHP', 0);

  FCurrentMetre := 0;
  FCurrentPoint := 0;

  ini.Destroy;
end;

destructor TMap.Destroy;
begin
  FInvBitmap.Free;
  FBits.Free;
  inherited Destroy;
end;

procedure TMap.Draw(Canvas: TCanvas);
var
  i: integer;
begin
  i := CurrentPoint mod Width;

  BitBlt(Canvas.Handle, 0, 0, Width - i, Height, FBits.Canvas.Handle, i, 0,
    SRCCOPY);
  BitBlt(Canvas.Handle, Width - i, 0, i, Height, FBits.Canvas.Handle, 0, 0,
    SRCCOPY);

  //  Bitblt(canvas.Handle,0,0,Width,Height,FBits.Canvas.Handle,0,0,SRCCOPY);
end;

procedure TMap.Roll;
begin
  if not FActive then
    Exit;
  CurrentPoint := CurrentPoint + Speed;
  FCurrentMetre := FCurrentPoint div FPointPerMetre;
end;

end.

⌨️ 快捷键说明

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