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.