var i: Integer; Randomize; i := Random(36); //随机产生1到36的随机数
哦,错了 Random returns a random number within the range 0 <= X < Range. If Range is not specified, the result is a real-type random number within the range Random(36)应该是产生一个0到35的随机数,所以你要判断是否为0的情况
i := Random(n); i 为0到n-1之间的任意一个整数; 然后要什么样的结果对i操作就行了
在keydown 事件中判断key=' ' then timer.enable:=true; 在timer.ontime事件中 写入随机函数并赋值即可. 在keyup事件中判断 if key=' ' then timer.enable:=false;并读出随即数 一定可以.给分吧.呵呵
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;type TForm1 = class(TForm) Button1: TButton; Timer1: TTimer; Memo1: TMemo; procedure Timer1Timer(Sender: TObject); procedure Button1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm} procedure TForm1.Timer1Timer(Sender: TObject); begin Caption:=FormatFloat('0###',random(500)+1); end; procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var i:integer; bAdd:boolean; begin if key=32 then Timer1.Enabled:=not Timer1.Enabled; bAdd:=true; if not Timer1.Enabled then begin for i:=0 to Memo1.Lines.Count-1 do begin if Memo1.Lines[i]=Caption then BAdd:=false; end; if bAdd then Memo1.Lines.Add('您选的号码是'+Caption) else Memo1.Lines.Add('已经出现过'+Caption) end; end;
function CreateRandomStr(ALen: Integer):string; //ALen :要选择的字符个数 var str: string;//待选定的字符 begin Randomize; str := '0123456789'; Result := ''; repeat Result := Result + str[Random(Length(str)) + 1]; until (Length(Result) = ALen); end;
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, MPlayer;type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; Timer1: TTimer; procedure Timer1Timer(Sender: TObject); procedure Button1KeyPress(Sender: TObject; var Key: Char); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } FMediaPlayer:TMediaPlayer; public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm} procedure TForm1.Timer1Timer(Sender: TObject); begin Caption:=FormatFloat('0###',random(500)+1); end;procedure TForm1.Button1KeyPress(Sender: TObject; var Key: Char); var i:integer; bAdd:boolean; begin bAdd:=true; if key=#32 then Timer1.Enabled:=not Timer1.Enabled; if not Timer1.Enabled then begin for i:=0 to Memo1.Lines.Count-1 do begin BAdd:=not (copy(Memo1.Lines[i],length(Memo1.Lines[i])-3,4)=Caption); if not BAdd then break; end; if bAdd then Memo1.Lines.Add('您选的号码是'+Caption) else Memo1.Lines.Add(Caption+'已经出现过') ; FMediaPlayer.Pause; end else FMediaPlayer.Play;end;procedure TForm1.FormCreate(Sender: TObject); begin Timer1.Enabled:=false; Timer1.Interval:=10; FMediaPlayer:=TMediaPlayer.Create(nil); FMediaPlayer.Parent:=self; FMediaPlayer.FileName:='F:\Mp3\天地英雄\The Golden Era.wav'; FMediaPlayer.Open; FMediaPlayer.Visible:=false; end;procedure TForm1.FormDestroy(Sender: TObject); begin FMediaPlayer.Close; FMediaPlayer.Free; end;end.
i: Integer; Randomize;
i := Random(36); //随机产生1到36的随机数
Random returns a random number within the range 0 <= X < Range. If Range is not specified, the result is a real-type random number within the range
Random(36)应该是产生一个0到35的随机数,所以你要判断是否为0的情况
然后要什么样的结果对i操作就行了
抽奖号码为0001~0500,按住空格键不放时号码就不停地跳动,放下空格键时号码就停止跳动显示的就为中奖的号码,且同一个号码不能再次中奖.
具体代码如何实现?
------------------------------------------
MM我学Delphi时间不长,你们就行行好再帮帮我吧!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Timer1: TTimer;
Memo1: TMemo;
procedure Timer1Timer(Sender: TObject);
procedure Button1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations } end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Caption:=FormatFloat('0###',random(500)+1);
end;
procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
i:integer;
bAdd:boolean;
begin
if key=32 then
Timer1.Enabled:=not Timer1.Enabled;
bAdd:=true;
if not Timer1.Enabled then
begin
for i:=0 to Memo1.Lines.Count-1 do
begin
if Memo1.Lines[i]=Caption then
BAdd:=false;
end;
if bAdd then
Memo1.Lines.Add('您选的号码是'+Caption)
else
Memo1.Lines.Add('已经出现过'+Caption)
end;
end;
//ALen :要选择的字符个数
var
str: string;//待选定的字符
begin
Randomize;
str := '0123456789';
Result := '';
repeat
Result := Result + str[Random(Length(str)) + 1];
until (Length(Result) = ALen);
end;
呵呵,你就好人做到底,再幫幫我,OK?
我想在抽獎時加入背景音樂,怎麼實現?(也就是在號碼跳動時載入*.wav文件,號碼停止跳動時音樂停止)*********************************
祝
新年快樂!
加薪多多!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, MPlayer;type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure Button1KeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
FMediaPlayer:TMediaPlayer;
public
{ Public declarations } end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Caption:=FormatFloat('0###',random(500)+1);
end;procedure TForm1.Button1KeyPress(Sender: TObject; var Key: Char);
var
i:integer;
bAdd:boolean;
begin
bAdd:=true;
if key=#32 then Timer1.Enabled:=not Timer1.Enabled;
if not Timer1.Enabled then
begin
for i:=0 to Memo1.Lines.Count-1 do
begin
BAdd:=not (copy(Memo1.Lines[i],length(Memo1.Lines[i])-3,4)=Caption);
if not BAdd then break;
end;
if bAdd then
Memo1.Lines.Add('您选的号码是'+Caption)
else
Memo1.Lines.Add(Caption+'已经出现过') ;
FMediaPlayer.Pause;
end
else
FMediaPlayer.Play;end;procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Enabled:=false;
Timer1.Interval:=10;
FMediaPlayer:=TMediaPlayer.Create(nil);
FMediaPlayer.Parent:=self;
FMediaPlayer.FileName:='F:\Mp3\天地英雄\The Golden Era.wav';
FMediaPlayer.Open;
FMediaPlayer.Visible:=false;
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
FMediaPlayer.Close;
FMediaPlayer.Free;
end;end.