Lazarus - jednoduchá úloha

Programovacie jazyky, rady, poradňa...
Zamar22
Novice
Novice
Príspevky: 5
Registrovaný: 20 jan 2014, 22:04

Lazarus - jednoduchá úloha

Príspevok od používateľa Zamar22 »

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')
xadman
Medium Star
Medium Star
Príspevky: 305
Registrovaný: 09 mar 2011, 17:02

Re: Lazarus - jednoduchá úloha

Príspevok od používateľa xadman »

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
Zamar22
Novice
Novice
Príspevky: 5
Registrovaný: 20 jan 2014, 22:04

Re: Lazarus - jednoduchá úloha

Príspevok od používateľa Zamar22 »

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 ?
bax
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 497
Registrovaný: 07 apr 2006, 13:22
Kontaktovať používateľa:

Re: Lazarus - jednoduchá úloha

Príspevok od používateľa bax »

Druhá vetva má byť ((x=y) or (y=z) or(x=z))
Zamar22
Novice
Novice
Príspevky: 5
Registrovaný: 20 jan 2014, 22:04

Re: Lazarus - jednoduchá úloha

Príspevok od používateľa Zamar22 »

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
bax
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 497
Registrovaný: 07 apr 2006, 13:22
Kontaktovať používateľa:

Re: Lazarus - jednoduchá úloha

Príspevok od používateľa bax »

Viac ti neporadím v Lazarusovi som v živote nerobil. Každopádne podmienky by mali byť správne.
xadman
Medium Star
Medium Star
Príspevky: 305
Registrovaný: 09 mar 2011, 17:02

Re: Lazarus - jednoduchá úloha

Príspevok od používateľa xadman »

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;
Zamar22
Novice
Novice
Príspevky: 5
Registrovaný: 20 jan 2014, 22:04

Re: Lazarus - jednoduchá úloha

Príspevok od používateľa Zamar22 »

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 ?
bax
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 497
Registrovaný: 07 apr 2006, 13:22
Kontaktovať používateľa:

Re: Lazarus - jednoduchá úloha

Príspevok od používateľa bax »

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));
Zamar22
Novice
Novice
Príspevky: 5
Registrovaný: 20 jan 2014, 22:04

Re: Lazarus - jednoduchá úloha

Príspevok od používateľa Zamar22 »

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. :D
Napísať odpoveď