unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Grids;
type
TForm1 = class(TForm)
BtnEnd: TButton;
BtnHrat: TButton;
LVCastka: TLabel;
LHFraze: TLabel;
BtnHledej: TButton;
Edit1: TEdit;
LVyhra: TLabel;
LFraze: TLabel;
Label1: TLabel;
Label2: TLabel;
procedure BtnEndClick(Sender: TObject);
procedure BtnHratClick(Sender: TObject);
procedure BtnHledejClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Castka: Integer;
Fraz: string;
Pocet: Integer;
Vyhra: Integer;
Skryte: string;
implementation
{$R *.dfm}
//=============================
// Vyber fraze (pranostiky)
//=============================
procedure Fraze;
var
f: integer; // f jako Fraze
begin
Randomize;
f := random(11); // Nahodne cislo od 0 do 10
if f = 0 then Fraz := 'Na svatého Jeronýma stěhuje se k nám už zima.';
if f = 1 then Fraz := 'Jak na Nový rok, tak po celý rok.';
if f = 2 then Fraz := 'Na Tři krále mrzne stále.';
if f = 3 then Fraz := 'Únor bílý, pole sílí.';
if f = 4 then Fraz := 'Na Hromnice o hodinu více.';
if f = 5 then Fraz := 'Svatý Matěj ledy láme, nemá-li je, nadělá je.';
if f = 6 then Fraz := 'Březen, za kamna vlezem. Duben, ještě tam budem.';
if f = 7 then Fraz := 'Kdo se v máji ožení, přivodí si soužení.';
if f = 8 then Fraz := 'O Petru-li prší, po třicet dní déšť se vrší.';
if f = 9 then Fraz := 'Svatá Markyta hodila srp do žita.';
if f = 10 then Fraz := 'Do svatého Vavřince nechval pšenice.';
end;
//=============================
// Tlacitko Hrat
//=============================
procedure TForm1.BtnHratClick(Sender: TObject);
var
c: integer; // c jako castka
begin
Randomize;
c := random(11); // Nahodne cislo od 0 do 10
if (c = 0) then Castka := 100;
if (c = 1) then Castka := 100;
if (c = 2) then Castka := 100;
if (c = 3) then Castka := 100;
if (c = 4) then Castka := 200;
if (c = 5) then Castka := 200;
if (c = 6) then Castka := 200;
if (c = 7) then Castka := 500;
if (c = 8) then Castka := 500;
if (c = 9) then Castka := 1000;
if (c = 10) then Castka := -1;
if Castka > 0 then
LVCastka.Caption := ((IntToStr(Castka)) + ',- kč')
else
LVCastka.Caption := ('BANKROT!!!');
Pocet := 0;
if Castka = 0 then Vyhra := 0;
BtnHrat.Enabled := False;
Edit1.Clear;
BtnHledej.Enabled := True;
end;
//=============================
// Tlacitko Hledej
//=============================
procedure TForm1.BtnHledejClick(Sender: TObject);
var
i: integer;
Pismeno: string;
begin
Pocet := 0;
Pismeno := Edit1.Text;
for i := 0 to length(Fraz) do
begin
if Pismeno = Fraz[i] then
begin
Skryte[i] := Fraz[i];
Pocet := Pocet + 1;
end;
end;
if Fraz = skryte then LVCastka.Caption := 'Výhra';
LFraze.Caption := skryte;
BtnHrat.Enabled := true;
BtnHledej.Enabled := false;
Vyhra := (Castka * Pocet) + Vyhra;
Lvyhra.Caption := IntToStr(Vyhra) + ',- kč';
end;
//=============================
// Vytvoreni formulare
//=============================
procedure TForm1.FormCreate(Sender: TObject);
i: integer;
begin
Fraze;
LHFraze.Caption := Fraz;
BtnHrat.Enabled := true;
BtnHledej.Enabled := false;
Vyhra := 0;
Skryte := '';
for i := 0 to Length(Fraz) do
begin
if Fraz[i] = '.' then skryte := skryte + '.'
else if Fraz[i] = ',' then skryte := skryte + ','
else if Fraz[i] = ' ' then skryte := skryte + ' '
else
skryte := skryte + '_ ';
LFraze.Caption := skryte;
end;
end;
//=============================
// Tlacitko Konec
//=============================
procedure TForm1.BtnEndClick(Sender: TObject);
begin
Close;
end;
end.
procedure TForm1.BtnHratClick(Sender: TObject);
var
i, c: integer; // c jako castka
begin
for i := 0 to 7 do
begin
Sleep(1000);
Randomize;
c := Random(11); // Nahodne cislo od 0 do 10
if (c = 0) then Castka := 100;
if (c = 1) then Castka := 100;
if (c = 2) then Castka := 100;
if (c = 3) then Castka := 100;
if (c = 4) then Castka := 200;
if (c = 5) then Castka := 200;
if (c = 6) then Castka := 200;
if (c = 7) then Castka := 500;
if (c = 8) then Castka := 500;
if (c = 9) then Castka := 1000;
if (c = 10) then Castka := 0;
if Castka > 0 then
LVCastka.Caption := ((IntToStr(Castka)) + ',- Kč')
else
LVCastka.Caption := ('BANKROT!!!');
Pocet := 0;
end;
if Castka > 0 then
Hadat
else
Hrat;
Vyhra := (Castka * Pocet) + Vyhra;
if LVCastka.Caption = 'BANKROT!!!' then
Ztrata
else
Vyhra := (Castka * Pocet) + Vyhra;
end;
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Grids, Vcl.ExtCtrls;
type
TForm1 = class(TForm)
BtnEnd: TButton;
BtnHrat: TButton;
LVCastka: TLabel;
LHFraze: TLabel;
BtnHledej: TButton;
Edit1: TEdit;
LCelkem: TLabel;
LFraze: TLabel;
Label1: TLabel;
Label2: TLabel;
LKonec: TLabel;
procedure BtnEndClick(Sender: TObject);
procedure BtnHratClick(Sender: TObject);
procedure BtnHledejClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Hadat;
procedure Hrat;
procedure HledanaFraze;
procedure Ztrata;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Castka: Integer;
Fraz: string;
Pocet: Integer;
Vyhra: Integer;
Skryte: string;
implementation
{$R *.dfm}
//=============================
// Vyber fraze (pranostiky)
//=============================
procedure Fraze;
var
f: Integer; // f jako Fraze
begin
Randomize;
f := Random(11); // Nahodne cislo od 0 do 10
if f = 0 then Fraz := 'na svatého jeronýma stěhuje se k nám už zima.';
if f = 1 then Fraz := 'jak na nový rok, tak po celý rok.';
if f = 2 then Fraz := 'na tři krále mrzne stále.';
if f = 3 then Fraz := 'únor bílý, pole sílí.';
if f = 4 then Fraz := 'na hromnice o hodinu více.';
if f = 5 then Fraz := 'svatý matěj ledy láme, nemá-li je, nadělá je.';
if f = 6 then Fraz := 'březen, za kamna vlezem. duben, ještě tam budem.';
if f = 7 then Fraz := 'kdo se v máji ožení, přivodí si soužení.';
if f = 8 then Fraz := 'o petru-li prší, po třicet dní déšť se vrší.';
if f = 9 then Fraz := 'svatá markyta hodila srp do žita.';
if f = 10 then Fraz := 'do svatého vavřince nechval pšenice.';
end;
//=============================
// Tlacitko Hrat
//=============================
procedure TForm1.BtnHratClick(Sender: TObject);
var
c: integer; // c jako castka
begin
Randomize;
c := Random(11); // Nahodne cislo od 0 do 10
if (c = 0) then Castka := 100;
if (c = 1) then Castka := 100;
if (c = 2) then Castka := 100;
if (c = 3) then Castka := 100;
if (c = 4) then Castka := 200;
if (c = 5) then Castka := 200;
if (c = 6) then Castka := 200;
if (c = 7) then Castka := 500;
if (c = 8) then Castka := 500;
if (c = 9) then Castka := 1000;
if (c = 10) then Castka := 0;
if Castka > 0 then
LVCastka.Caption := ((IntToStr(Castka)) + ',- Kč')
else
LVCastka.Caption := ('BANKROT!!!');
Pocet := 0;
if Castka > 0 then
Hadat
else
Hrat;
Vyhra := (Castka * Pocet) + Vyhra;
if LVCastka.Caption = 'BANKROT!!!' then
Ztrata
else
Vyhra := (Castka * Pocet) + Vyhra;
end;
//=============================
// Aktivace a deaktivace tlacitek pri bankrotu
//=============================
procedure TForm1.Hadat; // vylosovana castka
begin
BtnHrat.Enabled := False;
Edit1.Clear;
BtnHledej.Enabled := True;
end;
procedure TForm1.Hrat; // vylosovany bankrot
begin
BtnHrat.Enabled := True;
BtnHledej.Enabled := False;
end;
procedure TForm1.HledanaFraze; // zobrazeni hledane fraze
begin
LHFraze.Visible := True;
LHFraze.Caption := Fraz;
end;
procedure TForm1.Ztrata; // zobrazeni hledane fraze
begin
Vyhra := 0;
LCelkem.Caption := IntToStr(0) + ',- Kč';
end;
//=============================
// Tlacitko hledej
//=============================
procedure TForm1.BtnHledejClick(Sender: TObject);
var
i: Integer;
Pismeno: string;
begin
Pocet := 0;
Pismeno := Edit1.Text;
for i := 1 to length(Fraz) do // string indexujeme od 1
begin
if Pismeno = Fraz[i] then
begin
Skryte[i] := Fraz[i];
Pocet := Pocet + 1;
end;
end;
if Fraz = Skryte then LKonec.Caption := 'Vyhraná částka je ';
LFraze.Caption := Skryte;
Vyhra := (Castka * Pocet) + Vyhra;
LCelkem.Caption := IntToStr(Vyhra) + ',- Kč';
Hrat; // vylosovana castka
end;
//=============================
// Vytvoreni formulare
//=============================
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
Fraze;
HledanaFraze; // zakomentujte "//" pro skryti hledane fraze
Hrat; // nastavení tlacitek na hru (vylosovany bankrot)
Vyhra := 0;
Skryte := '';
for i := 1 to Length(Fraz) do // string indexujeme od 1
begin
if Fraz[i] = '.' then
Skryte := Skryte + '.'
else
if Fraz[i] = ',' then
Skryte := Skryte + ','
else
if Fraz[i] = ' ' then
Skryte := Skryte + ' '
else
if Fraz[i] = '-' then
Skryte := Skryte + '-'
else
Skryte := Skryte + '*';
LFraze.Caption := Skryte;
end;
end;
//=============================
// Tlacitko Konec
//=============================
procedure TForm1.BtnEndClick(Sender: TObject);
begin
Close;
end;
end.
Nezapomeň, že Lazarus používá v typu string UTF-8. T.j. české znaky jsou kódovány jako posloupnost 2 znaků. Nejjednodušší bude, když si všechny string proměnné přehodíš na UnicodeString, ten používá UTF-16 a české znaky se vejdou do 1 znaku:
Fraz: UnicodeString;
Skryte: UnicodeString;
Pismeno: UnicodeString;
Tohle nebude dotaz na Lazarus. Mrkni na nazvy unit.
Je mi 40, nikdy jsem neprogramoval a dělám výšku. bohužel programování je součástí studia i když jsem se zařekl, že programovat se učit nikdy nebudu tak teď musím. Ale jen v rámci studia opravdu se tím dále zabývat nebudu. To málo co jsem napsal mi trvalo tři dny než jsem to zprovoznil tak jak to je.V udalostmi rizenem programu nesmis delat zadne sleep a podobne zalezitosti, protoze program se nevykonava od postupne od zacatku do konce, ale vykonava se po castech v jednotlivych udalostech. Takze to musis rozdelit:
procedure Obnos;
var
c: integer; // c jako castka
begin
Randomize;
c := Random(11); // Nahodne cislo od 0 do 10
if (c = 0) then Castka := 100;
if (c = 1) then Castka := 100;
if (c = 2) then Castka := 100;
if (c = 3) then Castka := 100;
if (c = 4) then Castka := 200;
if (c = 5) then Castka := 200;
if (c = 6) then Castka := 200;
if (c = 7) then Castka := 500;
if (c = 8) then Castka := 500;
if (c = 9) then Castka := 1000;
if (c = 10) then Castka := 0;
end;
procedure TForm1.Timer1Timer(Sender: TObject); // casovac pro rotaci castky
var i: integer;
begin
for i := 0 to 4 do
begin
Obnos;
end;
end;
procedure TForm1.BtnHratClick(Sender: TObject);
var
i: Integer;
begin
Obnos;
if Castka > 0 then
LVCastka.Caption := ((IntToStr(Castka)) + ',- Kč')
else
LVCastka.Caption := ('BANKROT!!!');
Pocet := 0;
Timer1.Enabled := False; //zastaveni casovace
if Castka > 0 then
Hadat
else
Hrat;
Vyhra := (Castka * Pocet) + Vyhra;
if LVCastka.Caption = 'BANKROT!!!' then
Ztrata
else
Vyhra := (Castka * Pocet) + Vyhra;
end;
procedure TForm1.Timer1Timer(Sender: TObject); // casovac pro rotaci castky
var
I: integer;
begin
for I := 0 to 5 do
begin
if I = 5 then
Timer1.Terminate // Tu ho ukončiť
else
Obnos;
end;
end;
Tak nevím co dělám zle. Řeším tu rotaci přes Timer1:
Netuším o čem mluvíš.
Je mi 40, nikdy jsem neprogramoval a dělám výšku. bohužel programování je součástí studia i když jsem se zařekl, že programovat se učit nikdy nebudu tak teď musím. Ale jen v rámci studia opravdu se tím dále zabývat nebudu. To málo co jsem napsal mi trvalo tři dny než jsem to zprovoznil tak jak to je.