#12 Jan
Já jsem ti napsal jenom tělo programu. To co tam je předtím a zatím jsem neřešil. Hláška znamená, že ti asi někde chybí end.
Celý program vypadá takto: (u mě v Lazarusu jako konzolová aplikace)
program Ruleta;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes, SysUtils, CustApp
{ you can add units after this };
type
{ TMyApplication }
TMyApplication = class(TCustomApplication)
protected
procedure DoRun; override;
public
constructor Create(TheOwner: TComponent); override;
destructor Destroy; override;
procedure WriteHelp; virtual;
end;
{ TMyApplication }
procedure TMyApplication.DoRun;
var
ErrorMsg: String;
begin
// quick check parameters
ErrorMsg:=CheckOptions('h','help');
if ErrorMsg<>'' then begin
ShowException(Exception.Create(ErrorMsg));
Halt;
end;
// parse parameters
if HasOption('h','help') then begin
WriteHelp;
Halt;
end;
{ add your program here }
// stop program loop
Terminate;
end;
constructor TMyApplication.Create(TheOwner: TComponent);
begin
inherited Create(TheOwner);
StopOnException:=True;
end;
destructor TMyApplication.Destroy;
begin
inherited Destroy;
end;
procedure TMyApplication.WriteHelp;
begin
{ add your help code here }
writeln('Usage: ',ExeName,' -h');
end;
var
Application: TMyApplication;
eura,pokr,sazka,barva,hod: Integer;
chyba: LongInt;
{$IFDEF WINDOWS}{$R Ruleta.rc}{$ENDIF}
begin
WriteLn(' ----------------- Ruleta ---------------');
eura := 100;
pokr := 1;
Randomize;
WriteLn;
Writeln(' Mas k dispozici 100 eur');
while (pokr=1)and(eura>0) do
begin
repeat //Dokud se nezada cislo porad opakujeme zadani
WriteLn;
Write(' Zadej kolik eur chces vsadit: ');
{$I-} ReadLn(sazka); {$I+} //Osetreni spatnych vstupu-napr.pismena nebo desetinna cisla
chyba := IOResult;
if chyba<>0 then
WriteLn(' Sazka musi byt cele cislo');
until chyba=0;
if (sazka<=0)or(sazka>eura) then //Pokud zadame cislo vetsi nez kolik mame
repeat //tak to nedovolime
WriteLn(' Sazka musi byt vetsi nez nula a mensi nez kolik mas eur');
Writeln(' Mas k dispozici ',eura,' eur');
WriteLn;
Write(' Zadej kolik eur chces vsadit: ');
ReadLn(sazka);
until (sazka>0)and(sazka<=eura);
repeat //Dokud se nezada cislo porad opakujeme zadani
WriteLn;
Write(' Zadej zda sazis na sude nebo liche (0-sude,1-liche}: ');
{$I-} ReadLn(barva); {$I+} //Osetreni spatnych vstupu-napr.pismena nebo desetinna cisla
chyba := IOResult;
if chyba<>0 then
WriteLn(' Musis zadat cislo 0 nebo 1');
until chyba=0;
if (barva<0)or(barva>1) then //Pokud nezadame 0 nebo 1 tak to nedovolime
repeat
WriteLn(' Musis zadat 0 nebo 1');
WriteLn;
Write(' Zadej zda sazis na sude nebo liche (0-sude,1-liche}: ');
ReadLn(barva);
until (barva=0)or(barva=1);
//pogram
hod := Random(37);
if hod=0 then
eura := eura-sazka
else
if ((hod mod 2=0)and(barva=0))or((hod mod 2=1)and(barva=1)) then
eura := eura+sazka
else
eura := eura-sazka;
WriteLn;
WriteLn(' Padlo cislo ',hod,' a mas k dispozici ',eura,' eur');
if eura>0 then
begin
repeat //Dokud se nezada cislo porad opakujeme zadani
WriteLn;
Write(' Nova sazka? (1-ano(pokracovat),0-ne (konec)}: ');
{$I-} ReadLn(pokr); {$I+} //Osetreni spatnych vstupu-napr.pismena nebo desetinna cisla
chyba := IOResult;
if chyba<>0 then
WriteLn(' Musis zadat cislo 0 nebo 1');
until chyba=0;
if (pokr<0)or(pokr>1) then //Pokud nezadame 0 nebo 1 tak to nedovolime
repeat
WriteLn(' Musis zadat 0 nebo 1');
WriteLn;
Write(' Nova sazka? (1-ano(pokracovat),0-ne (konec)}: ');
ReadLn(pokr);
until (pokr=0)or(pokr=1);
end
else
begin
WriteLn;
WriteLn(' Uz nemas zadna eura, tak ahoj');
WriteLn(' Pro ukonceni stiskni Enter');
ReadLn;
end;
end;
Application:=TMyApplication.Create(nil);
Application.Title:='My Application';
Application.Run;
Application.Free;
end.