www.pudn.com > Jiayu.rar > Untmath.pas


unit Untmath; 
 
interface 
 
uses 
  Windows, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
  Dialogs, StdCtrls, ExtCtrls, Buttons,MMSystem, Menus,  
  RzSpnEdt, jpeg ; 
 
type 
  TFrmmath = class(TForm) 
    pnl1: TPanel; 
    pnl2: TPanel; 
    lbl1: TLabel; 
    lbl2: TLabel; 
    pb1: TPaintBox; 
    lbl3: TLabel; 
    lbl4: TLabel; 
    lbl5: TLabel; 
    pb2: TPaintBox; 
    pnl3: TPanel; 
    rg3: TRadioGroup; 
    pnl4: TPanel; 
    btn2: TSpeedButton; 
    img1: TImage; 
    pm1: TPopupMenu; 
    N1: TMenuItem; 
    N2: TMenuItem; 
    N3: TMenuItem; 
    Image1: TImage; 
    GroupBox1: TGroupBox; 
    RzSpinner1: TRzSpinner; 
    Label1: TLabel; 
    Label2: TLabel; 
    RadioButton1: TRadioButton; 
    RadioButton2: TRadioButton; 
    RadioButton3: TRadioButton; 
    RadioButton4: TRadioButton; 
    Bevel1: TBevel; 
    procedure rg2Click(Sender: TObject); 
    procedure btn2Click(Sender: TObject); 
    procedure FormCreate(Sender: TObject); 
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); 
    procedure rg3Click(Sender: TObject); 
    procedure N1Click(Sender: TObject); 
    procedure N3Click(Sender: TObject); 
    procedure RadioButton1Click(Sender: TObject); 
  private 
    procedure getrandomds; 
    procedure getrandom_adding(k:Integer;var i,j:Integer);    //加数 
    procedure getrandom_subtract(k:Integer;var i,j:Integer);  //减数 
    procedure getrandom_multiply(k:Integer;var i,j:Integer);  //乘数 
    procedure getrandom_divide(k:Integer;var i,j:Integer);    //除数 
 
    { Private declarations } 
  public 
    { Public declarations } 
  end; 
 
var 
  Frmmath: TFrmmath; 
  ds:Integer; 
 
  yesbmp,nobmp,lightbmp:TBitmap ; 
  rightsound,wrongsound:pchar; 
// hRes:THandle ; 
 
implementation 
    uses Untfun ; 
{$R *.dfm} 
{$R windowsxp.res} 
{$R myres.RES} 
 
 
procedure TFrmmath.rg2Click(Sender: TObject); 
begin 
  {case rg2.ItemIndex of 
  0: lbl2.Caption :='+'; 
  1: lbl2.Caption :='-'; 
  2: lbl2.Caption :='×'; 
  3: lbl2.Caption :='÷'; 
  end; 
  } 
end; 
 
 
 
procedure TFrmmath.getrandomds; 
var 
  i,j,k:Integer ; 
  s,s1:string; 
begin 
  Randomize; 
  k:=random(6); 
  rg3.Items.Strings[k]:=IntToStr(ds);   //使随机项等于答案 
 // lbl6.Caption :=IntToStr(K+1); 
  s:='#'+IntToStr(ds)+'#'; 
 
  for i:=0 to k-1 do 
  begin 
    repeat 
      Randomize; 
      j:=1+Random(ds+6); 
      s1:='#'+IntToStr(j)+'#'; 
//      if Pos(s1,s)=0 then Break ; 
    until Pos(s1,s)=0 ; 
 
     rg3.Items.Strings[i]:=IntToStr(j);   //使随机项等于答案 
     s:=s+s1; 
  end; 
 
  for i:=k+1 to 5 do 
  begin 
    repeat 
      Randomize ; 
      j:=1+Random(ds+6); 
      s1:='#'+IntToStr(j)+'#'; 
    until Pos(s1,s)=0; 
 
     rg3.Items.Strings[i]:=IntToStr(j);   //使随机项等于答案 
     s:=s+s1; 
  end; 
    
end; 
 
procedure TFrmmath.getrandom_adding(k:Integer;var i,j:Integer);    //加数 
begin 
  Randomize; 
  i:=1+random(k); 
  j:=1+random(k); 
end; 
 
procedure TFrmmath.getrandom_divide(k:Integer;var i, j: Integer);   //除数 
begin 
  repeat 
    Randomize; 
    i:=1+random(k); 
    j:=1+random(k); 
  until (i mod j=0) and (i<>j); 
end; 
 
procedure TFrmmath.getrandom_multiply(k:Integer;var i, j: Integer);  //乘数 
begin 
  Randomize; 
  i:=1+random(k); 
  j:=1+random(k); 
end; 
 
procedure TFrmmath.getrandom_subtract(k:Integer;var i, j: Integer);  //减数 
begin 
  repeat 
    Randomize; 
    i:=1+random(k); 
    j:=1+random(k); 
   until i>=j; 
end; 
 
procedure TFrmmath.btn2Click(Sender: TObject); 
var 
  i,j,k,p:Integer ; 
begin 
  //k:=(rg1.ItemIndex+1)*10; 
  Image1.Picture :=nil ;  
  K:=RzSpinner1.Value; 
 
  if RadioButton1.Checked then 
  begin 
    getrandom_adding(k,i,j); 
    ds:=i+j; 
  end; 
 
  if RadioButton2.Checked then 
  begin 
    getrandom_subtract(k,i,j);  // 
    ds:=i-j; 
  end; 
 
  if RadioButton3.Checked then 
  begin 
    getrandom_multiply(k,i,j); 
    ds:=i*j; 
  end; 
 
  if RadioButton4.Checked then 
  begin 
    getrandom_divide(k,i,j); 
    ds:=i div j; 
  end; 
 
 
 { case rg2.ItemIndex of 
  0: 
  begin 
    getrandom_adding(k,i,j); 
    ds:=i+j; 
  end; 
 
  1: 
  begin 
    getrandom_subtract(k,i,j);  // 
    ds:=i-j; 
  end; 
 
  2: 
  begin 
    getrandom_multiply(k,i,j); 
    ds:=i*j; 
  end; 
 
  3: 
  begin 
    getrandom_divide(k,i,j); 
    ds:=i div j; 
  end; 
 end;     //end of case 
  } 
  pb1.Repaint ; 
  for p:=1 to i do 
  begin 
    if p<11 then 
      pb1.Canvas.Draw(p*34,0,lightbmp) 
    else 
      pb1.Canvas.Draw((p-10)*34,34,lightbmp); 
     
  end; 
 
 
  pb2.Repaint ; 
  for p:=1 to j do 
  begin 
    if p<11 then 
    pb2.Canvas.Draw(p*34,0,lightbmp) 
    else 
    pb2.Canvas.Draw((p-10)*34,34,lightbmp); 
  end;   
// pb3.Repaint ; 
 
 lbl1.Caption :=IntToStr(i); 
 lbl3.Caption :=IntToStr(j); 
 lbl5.Caption :='?';//IntToStr(ds); 
 rg3.ItemIndex :=-1; 
 getrandomds ; 
 
 
end; 
 
procedure TFrmmath.FormCreate(Sender: TObject); 
var 
  stream:TStream; 
  hResInfo,hres : THandle; 
begin 
  yesbmp:=TBitmap.Create ; 
  nobmp :=TBitmap.Create ; 
  lightbmp :=TBitmap.Create ; 
 
  yesbmp.LoadFromResourceName(HInstance,'yes') ; 
  nobmp.LoadFromResourceName(HInstance,'no') ; 
 
  //YesBitmap.LoadFromResourceName(HInstance,'yes'); 
 
 // Stream:=TResourceStream.Create(HINSTANCE,'yes','bmp'); 
 // yesbmp.LoadFromStream(Stream); 
 
 // stream:=TResourceStream.Create(HInstance,'Yes','Bitmap'); 
 // YesBitmap.LoadFromStream(stream); 
 
 // stream:=TResourceStream.Create(HInstance,'no','bmp'); 
 // nobmp.LoadFromStream(stream); 
 
  stream :=TResourceStream .Create(HInstance,'light','bmp'); 
  lightbmp.LoadFromStream(stream); 
 
  Stream.Free ; 
 
  hResInfo:=FindResource(HInstance, 'right', 'WAVE'); 
  hRes := LoadResource(HInstance,hResInfo); 
  if hRes > 32 then {its a good load} 
  begin {lock the resource} 
  rightSound:=LockResource(hRes); 
  end; 
 
  hResInfo := FindResource(HInstance, 'wrong', 'WAVE'); 
  hRes := LoadResource(HInstance,hResInfo); 
  if hRes > 32 then {its a good load} 
  begin {lock the resource} 
  wrongSound:=LockResource(hRes); 
  end; 
 
 
//  PlaySound('Sounds\123',0,SND_ASYNC); 
 
 
 
end; 
 
procedure TFrmmath.FormCloseQuery(Sender: TObject; var CanClose: Boolean); 
begin 
  yesbmp.Free; 
  nobmp .Free; 
  lightbmp .Free; 
end; 
 
procedure TFrmmath.rg3Click(Sender: TObject); 
var 
  s:string; 
begin 
  s:=rg3.Items.Strings[rg3.ItemIndex]; 
  lbl5.Caption :=s; 
  if StrToInt(s)=ds then 
  begin 
    //pb3.Canvas.Draw(10,0,yesbmp); 
  //  pb3.Canvas.Draw(10,0,YesBitmap); 
    Image1.Canvas.Draw(0,0,yesbmp); 
   // 
    sndplaysound(rightsound,snd_async or snd_Memory); 
 
    //PlaySound('Sounds\ding',0,SND_ASYNC); 
  end 
  else 
  begin 
  //  pb3.Canvas.Draw(10,0,nobmp); 
    Image1.Canvas.Draw(0,0,nobmp); 
    sndplaysound(wrongsound ,snd_async or snd_Memory); 
   // PlaySound('Sounds\chimes',0,SND_ASYNC); 
  END; 
 
end; 
 
procedure TFrmmath.N1Click(Sender: TObject); 
begin 
  if (Sender as TMenuItem).Checked =False then 
  begin 
    setwindowpos(handle,hwnd_topmost,left,top,width,height,swp_showwindow); 
    (Sender as TMenuItem).Checked :=True; 
  end 
  else 
  begin 
    setwindowpos(handle,hwnd_notopmost,left,top,width,height,swp_showwindow); 
    (Sender as TMenuItem).Checked :=False ; 
  end; 
end; 
 
procedure TFrmmath.N3Click(Sender: TObject); 
begin 
  creatdesktoplink('家宇算数'); 
end; 
 
procedure TFrmmath.RadioButton1Click(Sender: TObject); 
begin 
  case (Sender as TRadioButton).Tag of 
  0: lbl2.Caption :='+'; 
  1: lbl2.Caption :='-'; 
  2: lbl2.Caption :='×'; 
  3: lbl2.Caption :='÷'; 
  end; 
end; 
 
end.