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

📄 editorunit2.pas

📁 一个用delphi编写的过关游戏
💻 PAS
字号:
unit editorUnit2;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, DXDraws, ExtCtrls;

type
  TForm2 = class(TForm)
    DXDraw1: TDXDraw;
    DXImageList1: TDXImageList;
    Bevel1: TBevel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure DXDraw1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
Procedure REfr;

var
  Form2: TForm2;
var dx2,dy2,dx,dy : integer;

implementation

uses EditorUnit1, editorUnit3;

{$R *.DFM}

var
    sy,sx : integer;
    hyp : integer;

Procedure REfr;
var i,j,d : integer;
begin;
form2.dxdraw1.surface.fill(clwhite);
hyp:=form2.dximagelist1.Items[0].picture.height div 32;

if dx>15 then dx:=15;
if dx<0 then dx:=0;
if dy<0 then dy:=0;
if dy>hyp-1 then dy:=hyp-1;

sx:=dx-form2.dxdraw1.width div 64;
sy:=dy-form2.dxdraw1.height div 64;

if sx<0 then sx:=0;
if sy<0 then sy:=0;

if sx>16-form2.dxdraw1.width div 32 then sx:=16-form2.dxdraw1.width div 32;
if sy>hyp-form2.dxdraw1.height div 32 then sy:=hyp-form2.dxdraw1.height div 32;



//if sx>8 then sx:=8;
//if sy>15 then sy:=15;


for j:=0 to form2.dxdraw1.height div 32-1 do
 for i:=0 to form2.dxdraw1.width div 32-1 do
  begin
  d:=i+sx+(j+sy)*16;

  form2.dximagelist1.items[0].draw(form2.dxdraw1.surface,i*32,16+(j)*32,d);
//  form2.dximagelist1.items[0].draw(form2.dxdraw1.surface,i*32,16+(j)*32,256);

  if (j=dy-sy) and (dx-sx=i) then
   form2.dximagelist1.items[1].draw(form2.dxdraw1.surface,i*32,16+j*32,0);

  if (j=dy2-sy) and (dx2-sx=i) then
   form2.dximagelist1.items[1].drawalpha(form2.dxdraw1.surface,bounds(i*32,16+j*32,32,32),0,128);

  end;

form2.label1.caption:=inttostr(dx+dy*16);
form2.dxdraw1.flip;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
savedialog1.InitialDir:=extractfilepath(application.exename);
opendialog1.InitialDir:=extractfilepath(application.exename);

dx:=0;dy:=0;
//dximagelist1.items[0].Picture.loadfromfile('gfx\klosser.bmp');
if fileexists('gfx\klosser.bmp') then
 dximagelist1.items[0].Picture.loadfromfile('gfx\klosser.bmp')
  else
 dximagelist1.items[0].Picture.loadfromfile('klosser.bmp');
refr;
end;

procedure TForm2.BitBtn2Click(Sender: TObject);
begin
inc(dx);
refr;
end;

procedure TForm2.BitBtn1Click(Sender: TObject);
begin
dec(dx);
refr;
end;

procedure TForm2.BitBtn4Click(Sender: TObject);
begin
dec(dy);
refr;
end;

procedure TForm2.BitBtn3Click(Sender: TObject);
begin
inc(dy);
refr;
end;

Procedure save(f : string);
var ff : file;
    dy,xx,yy : integer;
begin
assign(ff,f);
rewrite(ff,1);
blockwrite(ff,game.level.info,sizeof(levelextrainfotype));
for dy:=0 to game.level.info.width-1 do
 blockwrite(ff,game.level.l[dy,0],(game.level.info.height*2));
close(ff);
end;



Procedure load(f : string);
var ff : file;
    dy,xx,yy : integer;
begin
resetlevel;
assign(ff,f);
reset(ff,1);
blockread(ff,game.level.info,sizeof(levelextrainfotype));
for dy:=0 to game.level.info.width-1 do
 blockread(ff,game.level.l[dy,0],(game.level.info.height*2));
close(ff);
end;


procedure TForm2.Button1Click(Sender: TObject);
var dx,dy : integer;
begin
for dx:=0 to maxwidth do
 for dy:=0 to maxheight do
  if (dx>game.level.info.width) and (game.level.l[dx,dy]<>-1) or
     (dy>game.level.info.height) and (game.level.l[dx,dy]<>-1) then
   begin
   messagebox(0,'Du har klosser utenfor brett omr錮et!','Advarsel!',0);
   form3.showmodal;
   break;
   end;

if game.level.info.width=0 then form3.showmodal;
if savedialog1.Execute = true then
 begin
 save(savedialog1.filename);
 savedialog1.initialdir:=extractfilepath(savedialog1.filename);
 opendialog1.FileName:=savedialog1.filename;
 end;
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
if opendialog1.Execute = true then
 begin
 load(opendialog1.filename);

 form3.edit1.text:=inttostr(game.level.info.width);
 form3.edit2.text:=inttostr(game.level.info.height);

 form3.edit3.text:=game.level.info.name;
 form3.combobox2.text:=game.level.info.background;
 form3.combobox3.Text:=game.level.info.backobjs;
 form3.combobox1.text:=game.level.info.sprites;
 form3.edit4.text:=inttostr(game.level.info.scrollbackground);

 initbmp;
 opendialog1.initialdir:=extractfilepath(opendialog1.filename);
 savedialog1.filename:=opendialog1.filename;
 end;
end;

procedure TForm2.FormActivate(Sender: TObject);
begin
refr;
end;

procedure TForm2.Button3Click(Sender: TObject);
begin
if application.messagebox('Vil du t鴐me brettet?','',mb_yesno)=mryes then
 resetlevel;
end;

procedure TForm2.DXDraw1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if button=mbleft then
 begin
 dy:=(y-16) div 32 + sy;
 dx:=x div 32 + sx;
 if dx>16 then dx:=16;
 if dy>hyp then dy:=hyp;
 dx2:=dx;
 dy2:=dy;
 end else
 begin
 dy2:=(y-16) div 32 + sy;
 dx2:=x div 32 + sx;
 if dx2>16 then dx2:=16;
 if dy2>hyp then dy2:=hyp;
 end;

refr;
end;

end.

⌨️ 快捷键说明

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