tarkoituksena olisi tehdä lottopeli vb.netillä käyttäen taulukkoa..,mutta pari ongelmaa tuli vastaan:
ohjelma on tähän tyylin nyt:
Public nro(6) As Integer Randomize() For i = 0 To UBound(nro) nro(i) = Int(Rnd() * 39) Next
mutta miten tuohon saisi lisättyä että sama numero ei
esiityisi kahteen kertaan?
kokeilin if rumballa ja uusi numero do until ,mutta tämä
jumitti koko homman..
luin qbasiclla tehdyn loton ,mutta en saanut sovellettua
sitä tähän :(
sitten miten buttonin väri voidaan vaihtaa ns ohjelmallisesti?..tarkoituksena olisi tehdä vilkkuva buttoni
pystyykö vb totetuttamaan ns restart-toiminnon ohjelmalle,
eli toiminto tekisi saman asian kun käynnistäisi ohjelman uudestaan?
Jotenkin näin.
dim olleet(ubound(nro)) Randomize For i = 0 To UBound(nro) uusiks: nro(i) = Int(Rnd * 39) for j=0 to i if nro(i)=olleet(j) then goto uusiks next olleet(i)=nro(i) Next
Ja...
lainaus:
miten buttonin väri voidaan vaihtaa ns ohjelmallisesti?..tarkoituksena olisi tehdä vilkkuva buttoni
pistät sen styleksi eka Graphical siinä design tilassa, ja koodiin laitat: Command1.BackColor = coloori
lainaus:
pystyykö vb totetuttamaan ns restart-toiminnon ohjelmalle,
eli toiminto tekisi saman asian kun käynnistäisi ohjelman uudestaan?
Joo, käynnistä shellillä tai shellexecutella(etsi täältä putkasta koodivinkki siitä) ohjelma ja pistä nykyiseen ohjelmaan että Unload Me
Itse toteuttaisin lottonumeroiden arvonnan seuraavantapaisella funktiolla:
Private Function ArvoNumerot(ByVal maara As Integer, ByVal maksimi As Integer) As Collection Dim varasto As New Collection, numerot As New Collection Dim i As Integer, a As Integer 'lisätään kaikki sallitut numerot listalle For i = 1 To maksimi varasto.Add(i) Next 'poimitaan listalta haluttu määrä numeroita For i = 1 To maara 'arvotaan valittava numero listalta, 'jossa on ainoastaan valitsemattomia numeroita a = Int(Rnd() * varasto.Count) + 1 'lisätään numero valittujen listalle numerot.Add(varasto.Item(a)) 'poistetaan numero listalta, jotta sitä ei 'voi valita myöhemmin uudestaan varasto.Remove(a) Next Return numerot End Function
Funktiota voisi käyttää esim. näin:
Dim numerot As New Collection, numero As Integer 'alustetaan satunnaislukugeneraattori Randomize() 'arvotaan 7 numeroa 39:n joukosta numerot = ArvoNumerot(7, 39) 'näytetään kaikki arvotut numerot For Each numero In numerot MsgBox(numero) Next
Tässä toteutustavassa on se hyvä puoli, että lukuja täytyy aina arpoa saman verran — vain yhtä monta kuin numeroita valitaan. Jos numeroita arvottaisiin, kunnes löytyy sellainen jota ei vielä ole valittu, numeroiden arvonta saattaisi tosi huonolla tuurilla kestää kauan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.