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.)
Jotaki tällästä? Puolipseudona
if(kysymykset_kysytty==4 && vaarat_vastaukset==4) then Diskaus() //soodataan Diskaus() print "Liikaa vääriä vastauksia n00b!" end
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 SubJoteki 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..
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 SubAihe on jo aika vanha, joten et voi enää vastata siihen.