unit game; {HiLo - a number guessing game conceptualised by wOnKo users try to guess a random number between 1 and 100 They have 10 gos before the game is over} interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TMainForm = class(TForm) play: TButton; done: TButton; tally: TLabel; procedure doneClick(Sender: TObject); procedure playClick(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var MainForm: TMainForm; implementation {$R *.DFM} procedure TMainForm.doneClick(Sender: TObject); begin close end; procedure TMainForm.playClick(Sender: TObject); var guess, {the number version of the users guess} mystery, {the random [1..100] invented for each game} numguesses, {the tally of the number of guesses} hi, lo : integer; {the high and low boundaries of guess range} reply, {user input} display : string; {for constructing output messages into} begin {initialize} numguesses := 0; hi := 100; lo := 1; tally.caption := '10'; {create the Mystery random number} mystery := random(100)+1; {play a round} repeat {construct bounded output range} display := 'Number between: '+inttostr(hi)+' and '+inttostr(lo); {prompt for a guess} reply := inputbox('Number Guesser',display,''); {safely acccept user input} guess := strTointDef(reply, -1); {process user input} if (guess = -1) or (guess > 100) or (guess < 1) then showmessage('Please enter a valid number') {error trap} else if guess > mystery then begin showmessage('too high'); hi := guess end else if guess < mystery then begin showmessage('too low'); lo := guess end else showmessage('yay - you got it!'); inc(numguesses); tally.caption := inttostr(10-numguesses) until (numguesses = 10) or (mystery = guess); {game over} if (numguesses = 10) and (mystery <> guess) then showmessage('Guesses exhausted - try again') end; procedure TMainForm.FormCreate(Sender: TObject); begin randomize end; end.