www.pudn.com > 推箱子源码.rar > Cdesign.pas
unit Cdesign;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Buttons, ToolWin, ComCtrls, StdCtrls, Grids;
type
TForm2 = class(TForm)
SpeedButton7: TSpeedButton;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
ComboBox1: TComboBox;
Label1: TLabel;
SpeedButton8: TSpeedButton;
SpeedButton9: TSpeedButton;
SpeedButton10: TSpeedButton;
SpeedButton11: TSpeedButton;
procedure FormCreate(Sender: TObject);
procedure SpeedButton10Click(Sender: TObject);
procedure SpeedButton11Click(Sender: TObject);
procedure SpeedButton8Click(Sender: TObject);
procedure SpeedButton9Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
function deleteblockfromtstring(name:string;tstringname:tstrings):integer;
//删除tstringname中的一个名为name的块的内容。
procedure insertblocktotstring(i:integer;block,tstringname:tstrings);
//在名为tstringname的tstring中的位置i处插入名为block有tstring。
public
{ Public declarations }
wutype:integer;
end;
var
Form2: TForm2;
implementation
uses UntMain;
{$R *.DFM}
procedure TForm2.FormCreate(Sender: TObject);
var
i:integer;
tsfile:tstrings;
s:string;
begin
wutype:=-1;
tsfile:=tstringlist.create;
tsfile.LoadFromFile('boxworld.ini');
for i:=0 to tsfile.count-1 do begin
s:=trim(tsfile.strings[i]);
if s<>'' then begin
if s[1]='[' then begin
combobox1.Items.Append(copy(s,2,length(s)-2));
end;
end;
end;
tsfile.free;
combobox1.itemindex:=0;
end;
procedure TForm2.SpeedButton10Click(Sender: TObject);
begin
close;
form1.initnewstate(strtoint(combobox1.text));
form1.retry1.enabled:=true;
form1.gototoworld1.enabled:=true;
end;
procedure TForm2.SpeedButton11Click(Sender: TObject);
begin
wutype:=(sender as tspeedbutton).tag;
end;
procedure TForm2.SpeedButton8Click(Sender: TObject);
var
s:string;
i,j:integer;
begin
for i:=0 to 13 do begin
for j:=0 to 15 do begin
form1.stateXY[i,j]:=-1;
end;
end;
s:=combobox1.items.strings[combobox1.items.count-1];
s:=inttostr(strtoint(s)+1);
combobox1.Items.append(s);
combobox1.itemindex:=combobox1.items.count-1;
form1.drawgrid1.Canvas.Rectangle(0,0,form1.drawgrid1.width,form1.drawgrid1.Height);
form1.drawgrid1.Refresh;
SpeedButton9.click;
form1.caption:='设计推箱子--第'+combobox1.text+'关';
end;
procedure TForm2.SpeedButton9Click(Sender: TObject);
var
i,j:integer;
s:string;
ts,tsfile:tstrings;
idx:integer;
begin
ts:=tstringlist.create;
tsfile:=tstringlist.create;
for i:=0 to 13 do begin
s:='';
for j:=0 to 15 do begin
s:=s+inttostr(form1.stateXY[i,j]+1);
end;
ts.append(s);
end;
ts.insert(0,'['+combobox1.text+']');
tsfile.loadfromfile('boxworld.ini');
idx:=deleteblockfromtstring(combobox1.text,tsfile);
insertblocktotstring(idx,ts,tsfile);
tsfile.savetofile('boxworld.ini');
ts.free;
tsfile.free;
end;
function tform2.deleteblockfromtstring(name:string;tstringname:tstrings):integer;
var
i,fromindex,toindex:integer;
begin
fromindex:=tstringname.Count;
toindex:=0;
deleteblockfromtstring:=tstringname.Count;
for i:=0 to tstringname.Count -1 do begin
if copy(tstringname.Strings[i],1,1)='[' then begin
if trim(tstringname.Strings[i])='['+trim(name)+']' then begin
fromindex:=i;
deleteblockfromtstring:=i;
toindex:=tstringname.Count -1;
end;
if i>fromindex then begin
toindex:=i-1;
break;
end;
end;
end;
//删除选定块
for i:=toindex downto fromindex do
tstringname.Delete(i);
end;
procedure tform2.insertblocktotstring(i:integer;block,tstringname:tstrings);
var
j:integer;
begin
for j:=block.count-1 downto 0 do begin
tstringname.Insert(i,block.Strings[j]);
end;
end;
procedure TForm2.ComboBox1Change(Sender: TObject);
var
tslevel:tstrings;
imgindex:integer;
i,j:integer;
begin
form1.drawgrid1.OnSelectCell:=nil;
form1.drawgrid1.Canvas.Rectangle(0,0,form1.drawgrid1.width,form1.drawgrid1.Height);
form1.drawgrid1.Refresh;
tslevel:=tstringlist.Create;
form1.readblockfromfile('boxworld.ini',combobox1.text,tslevel);
for i:=0 to 13 do begin
for j:=1 to 16 do begin
imgindex:=strtoint(tslevel.Strings[i][j])-1;
form1.stateXY[i,j-1]:=imgindex;
end;
end;
tslevel.free;
form1.drawgrid1.OnSelectCell:=form1.DrawGrid1SelectCell;
form1.caption:='设计推箱子--第'+combobox1.text+'关';
form1.repaint;
end;
procedure TForm2.FormShow(Sender: TObject);
begin
combobox1.itemindex:=combobox1.items.indexof(inttostr(form1.curstate));
combobox1.onchange(combobox1);
end;
end.