Lazarus - jednoduchá úloha
Lazarus - jednoduchá úloha
Viem, že je to trápna a jednoduchá úloha, no nie pre niekoho, kto sa tomu začal venovať minulý týždeň.
Zadanie: Napíšte program, ktorý bude simulovať hádzanie troma kockami: najprv vygeneruje a vypíše 3 náhodné čísla z intervalu <1, 6>. Ak sú všetky tri rovnaké, tak vypíše správu BINGO, ak sú rovnaké len niektoré dve čísla, tak vypíše správu SUPER. Ak sú všetky tri čísla rôzne, vypíše správu ŠKODA.
Toto tu som zatiaľ vymyslel a ďalej sa neviem pohnúť ...
begin
Image1.Canvas.TextOut(50,50,IntToStr(x));
Image1.Canvas.TextOut(70,50,IntToStr(y));
Image1.Canvas.TextOut(90,50,IntToStr(z));
x:=Random(6)+1;
y:=Random(6)+1;
z:=Random(6)+1;
If (x=y) and (x=z) then
Image1.Canvas.TextOut(90,150,'BINGO')
Zadanie: Napíšte program, ktorý bude simulovať hádzanie troma kockami: najprv vygeneruje a vypíše 3 náhodné čísla z intervalu <1, 6>. Ak sú všetky tri rovnaké, tak vypíše správu BINGO, ak sú rovnaké len niektoré dve čísla, tak vypíše správu SUPER. Ak sú všetky tri čísla rôzne, vypíše správu ŠKODA.
Toto tu som zatiaľ vymyslel a ďalej sa neviem pohnúť ...
begin
Image1.Canvas.TextOut(50,50,IntToStr(x));
Image1.Canvas.TextOut(70,50,IntToStr(y));
Image1.Canvas.TextOut(90,50,IntToStr(z));
x:=Random(6)+1;
y:=Random(6)+1;
z:=Random(6)+1;
If (x=y) and (x=z) then
Image1.Canvas.TextOut(90,150,'BINGO')
Re: Lazarus - jednoduchá úloha
else if ((x=y) and (x!=z)) or ((y=z) and (y!=x)) or ((z=x) and (z!=y)) -> vypis super
else -> vypis skoda
// a odporúčam dať na začiatok programu randomize; aby ti to negenerovalo stále tie isté čísla
else -> vypis skoda
// a odporúčam dať na začiatok programu randomize; aby ti to negenerovalo stále tie isté čísla
Re: Lazarus - jednoduchá úloha
No, takže mám:
begin
Randomize;
Image1.Canvas.TextOut(50,50,IntToStr(x));
Image1.Canvas.TextOut(70,50,IntToStr(y));
Image1.Canvas.TextOut(90,50,IntToStr(z));
x:=Random(6)+1;
y:=Random(6)+1;
z:=Random(6)+1;
If (x=y) and (x=z) then
Image1.Canvas.TextOut(90,150,'BINGO')
else if ((x=y) and (x=z)) or ((y=z) and (y=x)) or ((z=x) and (z=y)) then
Image1.Canvas.TextOut(90,150,'SUPER')
else
Image1.Canvas.TextOut(90,150,'ŠKODA');
end;
ale po spustení mi tam stále vypisuje iba ŠKODA. Nevieš, kde je chyba ?
begin
Randomize;
Image1.Canvas.TextOut(50,50,IntToStr(x));
Image1.Canvas.TextOut(70,50,IntToStr(y));
Image1.Canvas.TextOut(90,50,IntToStr(z));
x:=Random(6)+1;
y:=Random(6)+1;
z:=Random(6)+1;
If (x=y) and (x=z) then
Image1.Canvas.TextOut(90,150,'BINGO')
else if ((x=y) and (x=z)) or ((y=z) and (y=x)) or ((z=x) and (z=y)) then
Image1.Canvas.TextOut(90,150,'SUPER')
else
Image1.Canvas.TextOut(90,150,'ŠKODA');
end;
ale po spustení mi tam stále vypisuje iba ŠKODA. Nevieš, kde je chyba ?
Re: Lazarus - jednoduchá úloha
Druhá vetva má byť ((x=y) or (y=z) or(x=z))
Re: Lazarus - jednoduchá úloha
No a zase ďalší problém ... mal by som radšej hrať na gitaru
Stále mi to vypisuje ako chce, a keď som skúsil zmeniť súradnice každého slova, tak som zistil, že sa to ani nepremaže ale len dopíše slovo.
Edit: A tiež som si všimol, že mi to vždy na začiatku vygeneruje 3 nuly
Stále mi to vypisuje ako chce, a keď som skúsil zmeniť súradnice každého slova, tak som zistil, že sa to ani nepremaže ale len dopíše slovo.
Edit: A tiež som si všimol, že mi to vždy na začiatku vygeneruje 3 nuly
Re: Lazarus - jednoduchá úloha
Viac ti neporadím v Lazarusovi som v živote nerobil. Každopádne podmienky by mali byť správne.
Re: Lazarus - jednoduchá úloha
Mám taký pocit, že príkaz Image1.Canvas.FillRect(Image1.ClientRect); ti premaže celú plochu. Skús takto
Kód: Vybrať všetko
begin
Randomize;
Image1.Canvas.FillRect(Image1.ClientRect);
Image1.Canvas.TextOut(50,50,IntToStr(x));
Image1.Canvas.TextOut(70,50,IntToStr(y));
Image1.Canvas.TextOut(90,50,IntToStr(z));
x:=Random(6)+1;
y:=Random(6)+1;
z:=Random(6)+1;
If (x=y) and (x=z) then
Image1.Canvas.TextOut(90,150,'BINGO')
else if ((x=y) or (y=z) or (z=x)) then
Image1.Canvas.TextOut(90,150,'SUPER')
else
Image1.Canvas.TextOut(90,150,'ŠKODA');
end;Re: Lazarus - jednoduchá úloha
No, tak teraz sa to všetko pekne mení len nefunguje tak ako by malo. Je to divné ale vypisuje mi to o krok dopredu. Až nasledujúce čísla sedia s daným slovom. Nemôže to byť tými 0 0 0 na začiatku ?
Re: Lazarus - jednoduchá úloha
Lebo vypisuješ a až potom generuješ. Prehoď si to takto:
Kód: Vybrať všetko
x:=Random(6)+1;
y:=Random(6)+1;
z:=Random(6)+1;
Image1.Canvas.TextOut(50,50,IntToStr(x));
Image1.Canvas.TextOut(70,50,IntToStr(y));
Image1.Canvas.TextOut(90,50,IntToStr(z));
Re: Lazarus - jednoduchá úloha
Hurá. Všetko funguje tak ako má. Ďakujem Vám obom
Ale myslím, že programovaniu sa už radšej venovať nebudem. I keď, možnože by stačilo len skúsiť iný jazyk. 