📄 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.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -