Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: kuvakysymykset(VB)

Sivun loppuun

tattoo [07.04.2005 13:11:27]

#

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...

tattoo [07.04.2005 16:58:51]

#

eikö kukaan osaa auttaa..
Olisin todella kiitollinen jos ongelmaani löytyisi ratkaisu..

BadSource [07.04.2005 17:03:34]

#

Kasvaako tuon kysymys-muuttujan arvo missään?

tattoo [07.04.2005 17:44:48]

#

ei kasva. Miten sen tulisi kasvaa?

BadSource [07.04.2005 17:51:26]

#

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?

hunajavohveli [07.04.2005 18:05:03]

#

Jos kysymys-muuttuja ei kasva niin silloin koko ajan pysyy sama kysymys ja samat vastaukset.

tattoo [12.04.2005 18:28:16]

#

en nyt oikein päässyt kärryille tuon kysymys muuttujan kanssa?
Eli miten se oikeastaan tulisi laittaa?

Juice [12.04.2005 19:06:32]

#

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.

tattoo [13.04.2005 12:24:48]

#

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

tattoo [13.04.2005 18:32:56]

#

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

Blaze [13.04.2005 18:52:10]

#

Kasvatat laskuria jokaisen kuvan näytön yhteydessä, ja kun laskuri on 5, nollaat sen ja vaihdat kysymyksen.

Ja koita oppia ne kooditagit >_<

tattoo [14.04.2005 00:49:23]

#

Joo, mutta miten sitä käytännössä kasvatetaan?

Blaze [14.04.2005 07:53:20]

#

Älä viitsi esittää tyhmää. Tuolla sun koodissa on jo montakin laskurinkasvatusta.

hunajavohveli [14.04.2005 13:21:38]

#

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

Sivun alkuun

Vastaus

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

Tietoa sivustosta