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 Sub
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..
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
Aihe on jo aika vanha, joten et voi enää vastata siihen.