unit maingame; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type Tgamescreen = class(TForm) number: TPanel; numlist: TLabel; newnumber: TButton; newgame: TButton; done: TButton; Timer1: TTimer; procedure FormCreate(Sender: TObject); procedure newgameClick(Sender: TObject); procedure displaytaken; procedure doneClick(Sender: TObject); procedure newnumberClick(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end; var gamescreen: Tgamescreen; implementation {$R *.DFM} const maxnum = 75; var taken : set of byte; procedure Tgamescreen.FormCreate(Sender: TObject); begin taken := []; number.caption := '?'; randomize; displaytaken; end; procedure Tgamescreen.newgameClick(Sender: TObject); begin taken := []; number.caption := '?'; displaytaken; end; procedure Tgamescreen.displaytaken; var loop: byte; temp : string; begin temp := '[ '; for loop := 1 to maxnum do if loop in taken then temp := temp+ inttostr(loop)+' - '; numlist.Caption:= temp+' ]'; end; procedure Tgamescreen.doneClick(Sender: TObject); begin close end; procedure Tgamescreen.newnumberClick(Sender: TObject); var anum : byte; begin repeat anum := random(maxnum)+1; until not(anum in taken); taken := taken +[anum]; number.caption := inttostr(anum); displaytaken; end; procedure Tgamescreen.Timer1Timer(Sender: TObject); begin number.font.color := RGB(random(255),random(255),random(255)) end; end.