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

📄 untmath.pas

📁 幼儿识字、算数进行简单加减运算DELPHI源码
💻 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.


⌨️ 快捷键说明

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