Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Tietokilpailu VB-koodivinkki?

Jukuripää [31.05.2003 21:51:37]

#

Tietääkö kukaan paikkaa netissä, josta löytyis Visual Basic koodivinkki jonkinlaiseen tietokilpailuun tai kyselyyn?? Tarttisin vähän inspistä, että pääsen eteenpäin...

(Homma tyssäsi siihen, että kysymykset on kysytty ja nyt pitäis saada ohjelma neljän kysymyksen jälkeen lopettamaan kysely ja "diskaamaan" kilpailijan mahdollisten väärien vastausten takia.)

vipemype [31.05.2003 22:01:19]

#

Jotaki tällästä? Puolipseudona

if(kysymykset_kysytty==4 && vaarat_vastaukset==4) then Diskaus()
//soodataan
Diskaus()
print "Liikaa vääriä vastauksia n00b!"
end

Jukuripää [31.05.2003 23:13:46]

#

En kyllä tuosta ymmärrä mitään, aloittelija kun olen, mutta jos mulla ois (tää on vaan esimerkki!) alla oleva koodinpätkä, niin olisko se ihan pielessä? Ja miten tuohon sitten iskettäis lisäjuttuja, esim. jos molemmat vastaukset ovat VÄÄRIN, niin ohjelma ei kysy enää lisää kysymyksiä vaan sanoo, esim. että "Oletpa huono!" Ja jos taas vastaukset ovat oikein, niin ohjelma jatkaa kysymyksien kysymistä. Entäs miten siihen sais liitettyä loppuun, että kuinka paljon pisteitä tuli, esim jos jokaisesta oikeasta vastauksesta saa 1 pisteen??

Sub Main()


        Dim strVastaus1 As String
        Dim strVastaus2 As String


        strVastaus1 = Aku & Ankka
        strVastaus2 = Helsinki



        InputBox ("Mikä on Ankkalinnan huono-onnisen ankan nimi?")
        InputBox ("Mikä on Suomen pääkaupunki?")


        End If

End Sub

vipemype [01.06.2003 00:24:45]

#

Joteki tälleen (Vb:tä en paljo osaa, mutta mutta ...)

if(InputBox.1<>strVastaus1 && InputBox.2<>strVastaus2 then
MsgBox "Oletpas huono"
end if

Pisteet saat tekemällä vaikka pisteet nimisen muuttujan ja lisäät aina pisteet muuttujaa yhdellä oikean vastauksen ollessa kyseessä.

pisteet As Integer
//soodaan
if(InputBox.1==strVastaus1) then
pisteet=pisteet+1 // lisätään pisteitä yhdellä
MsgBox "Oikein meni. Tällä hetkellä sinulla on " & pisteet & "pistettä"
end if

Jotakin tämäntapaista..

Antti Laaksonen [01.06.2003 01:25:07]

#

Ensinnäkin: Itse en tekisi tietokilpailua noin, että pelaajan pitää kirjoittaa vastaus ja vain yksi on oikein. Esimerkiksi tuohon ensimmäiseen kysymykseen voisi vastata sekä "Aku" että "Aku Ankka". Kannattaisi laittaa vaikka neljä vastausvaihtoehtoa, joista pitäisi aina valita yksi.

Joka tapauksessa kysymykset kannattaa tallentaa erilliseen tiedostoon, josta niitä on helppo myöhemmin muokata. Tee vaikka tiedosto kysymykset.txt siihen hakemistoon, jossa peli on, ja kirjoita tiedostoon:

Mikä on huono-onnisen ankan nimi?|Aku
Mikä on Suomen pääkaupunki?|Helsinki
Kuinka paljon on tusina?|12

Tein vielä yksinkertaisen esimerkin kuvaamasi kaltaisesta tietokilpailusta. MsgBox on tavallinen viesti-ikkuna - InputBox sisältää lisäksi tekstikentän. App.Path palauttaa hakemiston, johon ohjelma on tallennettu. Open avaa tiedoston - Line Input lukee rivin - Close sulkee tiedoston. EOF on tosi, jos tiedostoa on luettu loppuun saakka. Split jakaa merkkijonon taulukkoon tiettyjen merkkien kohdalta.

Private Sub Form_Load()
    Dim tiedosto As String, rivi As String, vaarin As Integer
    Dim kysymys() As String, vastaus As String, pisteet As Integer

    'tiedosto, johon kysymykset on tallennettu
    tiedosto = App.Path & "\kysymykset.txt"

    'avataan tiedosto
    Open tiedosto For Input As #1

    'toistetaan tiedoston loppuun tai kahteen väärään vastaukseen asti
    Do While Not EOF(1) And vaarin < 2
        'luetaan seuraava rivi
        Line Input #1, rivi
        'jaetaan rivi taulukkoon pystyviivan kohdalta
        kysymys = Split(rivi, "|")
        'näytetään kysymys ikkunassa
        Select Case InputBox(kysymys(0), "Tietokilpailu")
        'jos vastaus on oikein...
        Case kysymys(1)
            '...näytetään viesti ja lisätään pisteitä
            MsgBox "Oikein!"
            pisteet = pisteet + 1
        'jos pelaaja painoi Peruuta...
        Case ""
            '...näytetään viesti ja suljetaan ohjelma
            MsgBox "Peli päättyi - keskeytys. Pisteet: " & pisteet
            End
        'muussa tapauksessa vastaus on väärin:
        Case Else
            'näytetään viesti ja lisätään laskuria
            MsgBox "Väärin! Oikea vastaus: " & kysymys(1)
            vaarin = vaarin + 1
        End Select
    Loop
    'suljetaan tiedosto
    Close #1
    'tutkitaan ja ilmoitetaan lopettamisen syy
    If vaarin >= 2 Then
        MsgBox "Peli päättyi - vastasit liian monta kertaa väärin. Pisteet: " & pisteet
    Else
        MsgBox "Peli päättyi - kysymykset loppuivat. Pisteet: " & pisteet
    End If
    End
End Sub

Vastaus

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

Tietoa sivustosta