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 Sub
Eli 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 Sub
Olisin 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 Sub
Kasvatat 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.