Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Pascal: Random

Sivun loppuun

Mandariinimies [31.01.2006 20:47:41]

#

procedure TForm1.Button1Click(Sender: TObject);
var x : integer;
begin
x:=random(100);
Edit1.Text:=intToStr(x);
end;

end.


kun painan kolme kertaa nappia..se arpoo aina samat numerot.. 0, 3, 86. Miten saisin tuon arpomaan ihan randomina kaikki?

Baglair [31.01.2006 21:11:33]

#

Jaa? Mikähän kieli mahtaa olla kyseessä? Käytä kooditageja ks. Ohjeet.

Asiaan. Luultavasi siksi, että et ole alustanut randomin siementä.

Mandariinimies [31.01.2006 21:17:22]

#

Käytän Borland Delphi 7

Metabolix [01.02.2006 07:39:47]

#

Randomize; alustaa satunnaislukugeneraattorin, eli joko FormCreate-proseduuriin tai vaikeammin sinne projektin koodiin ennen riviä Application.Initialize (muistaakseni), vaikka tuskin tiedät, mistä se löytyy :)

Mandariinimies [02.02.2006 16:11:16]

#

Juu..Se piti laittaa Randomize; ton x:=random(100) :n yläpuolelle. Miks toi Sleep(500); pysäyttää koko ohjelman? Mä haluisin sellasen Että Kun painaa nappulaa niin Edit1 näyttää tekstiä..ja sitten kestää vähän aikaa .. ja sitten se näyttää toista tekstinpätkää.. Tiedän että se onnistuis Timerillä, mutta se Timer on huono tohon ohjelmaan mitä teen

Metabolix [02.02.2006 16:28:08]

#

No koska Sleep nyt sattuu pysäyttämään koko säikeen. Ei siinä paljon muuta voi kuin laittaa timerin.

Ei kannata laittaa Randomizea tuohon samaan proseduuriin, vaan vain kerran ohjelman alkuun.

Ja yritä ihmeessä nimetä havainnollisemmin nuo komponentit. Edit1 ei ole kiveen kirjoitettu totuus, sitä voi kyllä muuttaa.

Mandariinimies [02.02.2006 16:33:39]

#

var x, y : Integer;
a, b : integer;
isku : real;
begin
isku:=StrToFloat(Label4.Caption);
x:=200;
y:=200;
randomize;
a:=random(100);
b:=random(50);
begin
Edit1.Text:='Iskit viholliseen: ' +intToStr(a);
Label4.Caption:=intToStr(y - a);
Edit2.Text:='Vihollinen iski sinuun: ' +intToStr(b);
Label2.Caption:=intToStr(x - b);
begin
Repeat
Label5.Caption:=intToStr(a + a);
Until(isku=0);
end;

end;
end;
end.

Mä teen tollasta tekstipeliä.. Ja olisin tehnyt silleen että Edit1 näyttää kummatkin lyönnit..Mutta nyt on toi ongelmana että miten saan noista energioista aina miinustettua sen lyönti iskun?

Metabolix [02.02.2006 16:40:03]

#

1. Käytä kooditageja.
2. Lue Pascal-opassarja.
3. Käytä standardin mukaista vähennyslaskun merkintätapaa (-) ja Pascalin sijoitusoperaattoria (:=).

Miten voi yhden luvun vähentäminen olla niin kovin vaikeaa? Ja jos tekstipelin teet, niin tee edes tekstipohjaisena äläkä mihinkään laatikkoon. Eli tee Console Application.

Mandariinimies [02.02.2006 16:43:34]

#

Joo.. Tiedän, Console Application on parempi.. Muttakun en tajua sitä "Cin >> b" juttua. (Toi oli siis C++:sta)
Olen lukenut Pascal oppaat tuolta, mutta en varmaankaan niin ajatuksen kanssa :/

Metabolix [02.02.2006 16:50:04]

#

Älä nyt C++:ssaa tähän sotke. Pascal on paljon helpompi. Mutta niin kauan kuin et opi konsoliohjelmaa tekemään, niin on hieman tyhmää säätää tekstilaatikoilla. Niskasta kiinni ja kaikessa rauhassa opettelemaan.

Mandariinimies [02.02.2006 16:56:17]

#

Joo..Tarkoitin sitä tuolla C++:lla että mikä on se CIN >> B; käännettynä Pascalille?

Metabolix [02.02.2006 21:37:28]

#

No mene nyt kiltisti lukemaan opassarja. Periaatteesta en nyt suostu neuvomaan aivan perusasioita, jotka lukevat suoraan oppaassa.

Edit: Hyvä on, myönnetään, että se on hieman kaukana, nimittäin neljännessä osassa tiedostonkäsittelyn lomassa.

WriteLn('Anna luku: ');
ReadLn(A);
WriteLn('Antamasi luku on ', A, ', eli suunnilleen 2 * ', A div 2);

Edit2: Muokkaisin oppaita oitis hieman n00b-ystävällisempään muotoon eli niin, että ruudulle tulostus tulisi aiemmin, mutta tallennus ei näköjään toimi juuri nyt ^^. Eli joskus toiste pitää yrittää muistaa.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta