Moi. Teen ohjelmaa joka on hieman saman tapainen kuin
virallinen B-kortin teoriakoe. Ohjelma antaa kysymyksen esim.
"Saan ajaa suoraan tätä kaistaa" ja sen jälkeen randomilla kuvan. Käyttäjä vastaa tähän joko kyllä tai ei. (A tai B nappi) Vastauksen jälkeen ohjelman tulisi ilmoittaa oliko vastaus oikein vai väärin.
******
Dim oikeat(10) As Integer
Dim kysymys As Integer
Private Sub UusiPeli()
oikeat(0) = 1
oikeat(1) = 2
oikeat(2) = 1
oikeat(3) = 1
...
End Sub
Private Sub cmdVastaaA_Click()
Vastaa(1)
End Sub
Private Sub cmdVastaaB_Click()
Vastaa(2)
End Sub
Private Sub Vastaa(vastaus As Integer)
If vastaus = oikeat(kysymys) Then
lblVastaus.Caption = "Vastasit oikein."
Else
lblVastaus.Caption = "Vastasit väärin."
End If
End Sub******
Ohjelma ilmoittaa ainoastaan ensimmäisen kuvan aikana "Vastasit väärin"
Missähän mahtaa olla vika...
eikö kukaan osaa auttaa..
Olisin todella kiitollinen jos ongelmaani löytyisi ratkaisu..
Kasvaako tuon kysymys-muuttujan arvo missään?
ei kasva. Miten sen tulisi kasvaa?
If vastaus = oikeat(kysymys) Then
...vertaa vastausta aina ensimmäiseen vastaukseen, jos kysymystä ei vaihdeta. Miten muuten esität seuraavan kysymyksen, jos kerran kysymys-muuttuja ei muutu?
Jos kysymys-muuttuja ei kasva niin silloin koko ajan pysyy sama kysymys ja samat vastaukset.
en nyt oikein päässyt kärryille tuon kysymys muuttujan kanssa?
Eli miten se oikeastaan tulisi laittaa?
Private Sub Vastaa(vastaus As Integer)
If vastaus = oikeat(kysymys) Then
lblVastaus.Caption = "Vastasit oikein."
kysymys = kysymys + 1
Else
lblVastaus.Caption = "Vastasit väärin."
End If
End SubEli tuo vaihtaa kysymystä, kun vastataan oikein.
Voisiko joku hieman jelppiä tän kans. Miten saisin ohjelman tunnistamaan mikä kuvista on oikein ja mikä väärin kysymyksen kanssa. Kun kysymys on "Saan ajaa suoraan tätä kaistaa", ja kuvia on vaikkapa 5 ja ne tulevat randomilla.
Pistän nyt koko koodin tähän, siinä on jonkun verran turhaakin koodia, eli ei kannata välittää...
Private Const Kuvia = 5
Dim Oikeat(5) As Integer
Dim kysymys As Integer
Dim time As Integer
Private Sub UusiPeli()
Oikeat(0) = 1
Oikeat(1) = 2
Oikeat(2) = 1
Oikeat(3) = 1
Oikeat(4) = 2
End Sub
Private Sub suoraan()
Dim kuvat As Integer
Dim kuva2 As Integer
End Sub
Private Sub Oikein()
imgA.Picture = Oikein
End Sub
Private Sub cmdOk_Click()
Picture1.Visible = True
cmdOK.Visible = False
lblVastaus.Visible = False
End Sub
Private Sub Vastaa(vastaus As Integer)
If vastaus = Oikeat(kysymys) Then
lblVastaus.Caption = "Vastasit oikein."
kysymys = kysymys + 1 'vaihtaa kysymystä kun vastataan oikein
Else
lblVastaus.Caption = "Vastasit väärin."
End If
End Sub
Private Sub Form_Load()
Dim Oikein As Integer
Dim imgA As CommandButton
Dim imgB As CommandButton
Dim suoraan As Integer
Dim kyllä As Single
Dim ei As Single
Dim lblVastaus As Single
Dim aika As Single
time = 10 'määrätään aika
tmrAjastin.Interval = 1000 'lasketaan sekunti kerrallaan
Picture1.Visible = True
lbl1 = "Saan ajaa suoraan tätä kaistaa."
Picture1.Picture = LoadPicture("C:\Documents and Settings\Tatu Päkkilä\Omat tiedostot\Koodia\Koodia\ak kuvat\kuva1.jpg")
If Picture1.Picture Then
intSuoraan = "Saan ajaa suoraan tätä kaistaa"
End If
Randomize Timer
End Sub
Private Sub imgA_Click()
imgA.Picture = LoadPicture("C:\Documents and Settings\Tatu Päkkilä\Omat tiedostot\Koodia\Koodia\A1.bmp")
Vastaa (1)
If vastaus = kyllä Then
Picture1.Visible = False
End If
cmdSeuraavaKuva.Visible = True
tmrAjastin.Enabled = False
End Sub
Private Sub imgB_Click()
imgB.Picture = LoadPicture("C:\Documents and Settings\Tatu Päkkilä\Omat tiedostot\Koodia\Koodia\B.bmp")
Vastaa (2)
If vastaus = ei Then
Picture1.Visible = False
End If
cmdSeuraavaKuva.Visible = True
tmrAjastin.Enabled = False
End Sub
Private Sub Start()
time = 10
tmrAjastin.Interval = 1000
tmrAjastin.Enabled = True
End Sub
Private Sub tmrAjastin_Timer()
time = time - 1
lblAika.Caption = time
If time = 0 Then tmrAjastin.Enabled = False
Static Kerta As Integer
Kerta = Kerta + 1
If Kerta = 10 Then tmrAjastin.Enabled = False
If time = 0 Then MsgBox "Aika loppui, et saanut tästä kysymyksestä pistettä. Vastaa silti kysymykseen.", vbOKOnly, "Aika loppui"
End Sub
Private Sub cmdSeuraavaKuva_Click()
Dim iKuva As Integer
iKuva = Int(Rnd(1) * Kuvia) + 1
Set Picture1 = LoadPicture("Kuva" & iKuva & ".jpg")
Picture1.Visible = True
cmdSeuraavaKuva.Visible = False
lblVastaus.Visible = False
time = 10
tmrAjastin.Interval = 1000
tmrAjastin.Enabled = True
If time = 0 Then tmrAjastin.Enabled = True
Kerta = Kerta + 1
End SubOlisin todella kiitollinen jos joku voisi auttaa minua...
Vastauksen jälkeen tulisi saada tieto oliko vastaus oikein vai väärin...
Mod. Huom: Käytä kooditageja
miten saan määriteltyä että ohjelma antaa ainoastaan viisi kuvaa randomilla ja sen jälkeen tulee uusi kysymys " saan kääntyä oikealle" ja taas lähtisi rullaamaan kuvia randomilla.
Private Const Kuvia = 435 'Kuvien määrä tähän
Private Sub Form_Load()
Randomize Timer
End Sub
Private Sub cSeuraavaKuva_Click()
Dim iKuva As Integer
iKuva = Int(Rnd(1) * Kuvia) + 1
Set pKuva = LoadPicture("Kuva" & iKuva & ".jpg")
End SubKasvatat laskuria jokaisen kuvan näytön yhteydessä, ja kun laskuri on 5, nollaat sen ja vaihdat kysymyksen.
Ja koita oppia ne kooditagit >_<
Joo, mutta miten sitä käytännössä kasvatetaan?
Älä viitsi esittää tyhmää. Tuolla sun koodissa on jo montakin laskurinkasvatusta.
Ai miten muuttujaa kasvatetaan? Jospa opettelisit tällaiset perusasiat, ennen kuin lähdet tuollaista tekemään. :) Visual Basic -oppaita löytyy täältä Ohjelmointiputkastakin. Ja muuttujaa kasvatetaan tällä tavalla:
muuttuja = muuttuja + 1
Aihe on jo aika vanha, joten et voi enää vastata siihen.