Quiz erstellen

Hallo ich hab zur zeit noch sehr wenig erfahrung will aber ein kleines quiz programmieren. aufbau sollte so aus sehen das man eine frage hat mit antwort feld und einem button zum kontrollieren. wenn jetzt nun die antwort richtig ist soll eine bild (als belohnung) zum vorschein kommen und bei flascher antwort direkt zur nächsten frage. so nun habe ich es bis jetzt so versucht: ich habe ein label (als fragefeld) ein textfeld(als antwortfeld) und nen button (als korrekturmöglichkeit) und habe versucht pro form eine frage (ist das richtig???).
so nun wäre es nett wenn mir jemand helfen kann nehme auch andere vorschläge an wie man das realisieren kann.
danke schon mal voraus

Hallo,

Hallo ich hab zur zeit noch sehr wenig erfahrung will aber ein
kleines quiz programmieren.

Schöne Übung, prima.

aufbau sollte so aus sehen das man
eine frage hat mit antwort feld und einem button zum
kontrollieren. wenn jetzt nun die antwort richtig ist soll
eine bild (als belohnung) zum vorschein kommen und bei
flascher antwort direkt zur nächsten frage.

Ist OK.

so nun habe ich es
bis jetzt so versucht: ich habe ein label (als fragefeld) ein
textfeld(als antwortfeld)

Zur Übung geht das, als Quizz ist das zu Aufändig.
Gib lieber vier Antorten :wink: und laß eine auswählen.

und nen button (als korrekturmöglichkeit) ??? Du meinst als Bestätigung für ‚fertig‘ und dann prüftst Du die Richtigkeit?

und habe versucht pro form eine frage
(ist das richtig???).

Nein. Du wirst doch nicht jedes mal eine neue Form nehnem wollen. :wink:
Schreibe mit ‚LblFrage.Caption = „was ist 2 + 2 ?“‘ in Dein Label jeweils die neue Frage.
für den anfang kannst du die fragen in eine Textdatei schreiben, und lesen mit.

Open Datei for Input as #1
Do Whlie not Eof(1)
i=i+1
Lineinput #1,Tmp
Frage(i)=Tmp
Loop
Close #1

R = int(Rnd(1)*i) ’ Zufallszahl festlegen, in i steht noch die Anzahl Fragen.
LblFrage.Caption = Frage®

Später legst Du die Fragen besser in einer Datenbank ab, aber mach das erst mal so weit fertig. … Viel komplizirter ist es mit der Datenbank dann auch nicht. :wink:

So ich hab jetzt in den Code vom Label das beispiel reingeschrieben (diese frage übernimmt er aber nicht auf das label, wieso das?) und wenn ich dann die sache reinschreibe dass die textdatei öffnen soll streicht er mir die zeile" Do Whlie not Eof(1)" und"Lineinput #1,Tmp" rot an. so zu dem weiß ich nicht wie er die textdatei(ist doch ne word datei oder?) erkennen soll wo die fragen drin stehen. das mit den vier button hab ich jetzt auch so genommen weiß aber nicht wie ich zur nächsten frage dann komme und/oder das bild aufrufe.

Hallo,
das war doch auch kein kompletter Quelltext, sondern nur die wesentlichen Befehle, ohne den richtigen Zusammenhang. :wink:

OK, dann machen wir das mal zum Kopieren, programmieren kannst Du dann noch ein wenig, viel bleibt aber nicht übrig. :wink:

Fang noch mal von vorn an.

  • Erstelle eine Form.
  • Lege ein Label auf die Form. den Namen lassen wir ausnahmsweise so. Das Label heißt also Label1. Da wird später die Frage stehen, ziehe es also lang genug.
  • Lege ein weiteres Label auf die Form unter das erste, aber nur so groß, daß vier davon nebeneinander passen.
  • klicke das Label mir rechts an un klicke auf Kopieren.
  • klicke die Form mit rechts an un klicke auf Einfügen.
  • Beantworte die Frage mit Ja (OK)
    Ein weiteres Label liegt nun links oben in der Ecke,
  • ziehe es neben das erste kleine.
    Klicjke wieder mit rechts auf die Form und auf einfügen,
  • lege dieses auch neben die anderen beiden.
  • Und noch ein letztes mal Einfügen, nun haben wir alle vier Label für die Antworten. Sie sollten Label2(0) bis Label2(3) heißen.
  • Lege in gleicher Weise vier Command (Button) unter die vier Label.
    Die Button sollen dann Command1(0) bis Command1(3) heißen.
  • lege noch ein Label über alle anderen, da wird später ‚rcitig‘ oder ‚falsch‘ stehen. Ändere also die Schriftgröße ein wenig, so daß es auffällt.

Wenn du das fertig hast, füge folgenden Code in Dein Projekt ein


Option Explicit

Dim Datei As String
Dim i, n, r As Integer
Dim Frage(200) As String
Dim Antwort(200, 4) As String
Dim Richtig(200) As Integer

Private Sub Command1_Click(Index As Integer)
If Index + 1 = Richtig® Then
Label3.Caption = „richtig“
Else
Label3.Caption = „falsch“
End If
Frage_Stellen
End Sub

Private Sub Form_Load()
Datei = „C:\Fragen.txt“
Open Datei For Input As #1
Do While Not EOF(1)
i = i + 1
Line Input #1, Frage(i)
For n = 0 To 3
Line Input #1, Antwort(i, n)
Next
Input #1, Richtig(i)
Loop
Close #1
Frage_Stellen
End Sub

Private Sub Frage_Stellen()
r = Int(Rnd(1) * i) + 1
Label1.Caption = Frage®
For n = 0 To 3
Label2(n).Caption = Antwort(r, n)
Next
End Sub


Nun kommen die Fragen.

Öffne das Notepad (Editor) und füge folgenden Text ein.


Wie heißt die Hauptstadt von Deutschland?
Wien
Berlin
Bonn
Leipzig
2
Wie heißt die Hauptstadt von Polen?
Warschau
Szecin
Poznan
Gdansk
1
Wie heißt die Hauptstadt von Frankreich?
Metz
Lyon
Paris
Rom
3
Wie heißt die Hauptstadt von Japan?
Peking
Tokyo
Osaka
Shanghai
2


Speichere das als ‚Fragen.txt‘ direkt nach C:\
System klar? Immer erst die Frage, dann vier Antworten, dann die Zahl, welche Antwort richtig ist.

So und nun kannst Du das Programm starten.
Ist getestet, bei mir läuft’s. :wink:

An der Stelle, wo ‚richtig‘ oder ‚falsch‘ eingetragen wird, kommt Dein Code hin, der ein entsprechendes Bild anzeigt. …

Klappt es erst mal so weit?

cu Rainer

Hallo,
also funktioniert alles super. Danke. der code für das bild(die bilder) müsste doch dann so ähnlich sein wie der für die textdatei oder?

Hallo,
nö. :wink: Lege statt dem label mit dem Text richtig oder falsch ein Bild hin (oder auch zwei übereinander, ja, das geht und schalte immer das richtige sichtbar, das andere unsichtbar.

Picture1.Visible= True
Picture2.Visible=False

lauten die Befehle z.B. den Rest bastelst Du Dir selbst zusammen, oder fragst noch mal, wenn es nichts wird.

cu Rainer

Hallo,
nun habe ich die bilder drin aber wie schaff ich es jetzt das bei frage 1 bild eins kommt bei frage 2 bild usw?
dann wäre es endlich geschafft:smile:

Hallo,
Dann mußt Du die Namen der Bilder mit in das Textfile zu den Fragen schreiben. Eine zusätzliche Variable deklarieren ( z.b. Bild(200)) und beim Laden der Daten mit einlesen.
Allmählich werden es mehr Daten, dann würde ich einen Ordner für das Programm anlegen und statt ‚C:‘ den Pfad zu dem Ordner angeben.
Die Bilder kannst Du dann mit in diesen Ordner legen und entweder den gesamten Pfad im Textfile angeben … (Beispiel: C:\Quizz\Bild1.bmp als Namen) Das Bild muß dann natürlich auch wirklich da liegen. :wink:
Das Bild kannst Dann mit

Picture1.Picture = Loadpicture (Bild®)

laden. (statt .Visible = True)

Wenn Du das Programm eventuell weiter geben möchtest, dann laß die Pfade weg und sorge dafür, daß das Ausführende Programm im selben Ordner liegt, wie die Daten, dann geht’s auch. :wink:

cu Rainer

hab jetzt in die text datei C:\bild1.jpg eingeben und das liegt auch dort ( unter die zahl welche sagt was die richtige antwort ist). dann hab ich eine picturebox (visble = false) genommen und hab folgen den Code
Option Explicit

Dim Datei As String
Dim i, n, r As Integer
Dim Frage(200) As String
Dim Antwort(200, 4) As String
Dim Richtig(200) As Integer
Dim Bild(200) As String

Private Sub Command1_Click(Index As Integer)
If Index + 1 = Richtig® Then
Picture1.laden
Picture2.laden
Else
Picture1.Visble = False
Picture2.Visble = False
End If
Frage_Stellen
End Sub

Private Sub Form_Load()
Datei = „C:\Fragen.txt“
Open Datei For Input As #1
Do While Not EOF(1)
i = i + 1
Line Input #1, Frage(i)
For n = 0 To 3
Line Input #1, Antwort(i, n)
Next
Loop
Close #1
Frage_Stellen
End Sub

Private Sub Frage_Stellen()
r = Int(Rnd(1) * i) + 1
Label1.Caption = Frage®
For n = 0 To 3
Label2(n).Caption = Antwort(r, n)
Next
Picture1.Picture = LoadPicture(Bild®)
End Sub

und dann sagt er:„Laufzeitfehler ‚62‘: EInlesen hinter dateiende“ wenn ich dann auf debuggen klicke zeigt er mir die zeile"Line Input #1, Antwort(i, n)" gelb an.
was habe ich falsch gemacht?

Hallo,
Wenn Du zu jeder Frage ein Bild nimmst und nur bei richtiger antwort ein Bild zeigst, brauchst Du nur eine Picture Box.
Aber natürlich für jede Frage ein Bild, Du wolltest es so. :wink:
Deine Textdatei sollte nun so aussehen.:

Wie heißt die Hauptstadt von Deutschland?
Wien
Berlin
Bonn
Leipzig
2
c:\Bild1.jpg
Wie heißt die Hauptstadt von Polen?
Warschau
Szecin
Poznan
Gdansk
1
c:\Bild2.jpg
Wie heißt die Hauptstadt von Frankreich?
Metz
Lyon
Paris
Rom
3
c:\Bild3.jpg
Wie heißt die Hauptstadt von Japan?
Peking
Tokyo
Osaka
Shanghai
2
c:\Bild4.jpg

Natürlich müssen die Bilddateien auch existieren.

hab jetzt in die text datei C:\bild1.jpg eingeben und das
liegt auch dort ( unter die zahl welche sagt was die richtige
antwort ist). dann hab ich eine picturebox (visble = false)
genommen und hab folgen den Code

Ich füge mal etwas ein und mache ein ‚Rem‘ vor Fehler.

Option Explicit

Dim Datei As String
Dim i, n, r As Integer
Dim Frage(200) As String
Dim Antwort(200, 4) As String
Dim Richtig(200) As Integer
Dim Bild(200) As String

Private Sub Command1_Click(Index As Integer)
If Index + 1 = Richtig® Then
REM Picture1.laden
REM Picture2.laden

Picture1.Picture = LoadPicture(Bild®)
Picture1.Visible = True

Else
Picture1.Visble = False
REM Picture2.Visble = False
End If
Frage_Stellen
End Sub

Private Sub Form_Load()
Datei = „C:\Fragen.txt“
Open Datei For Input As #1
Do While Not EOF(1)
i = i + 1
Line Input #1, Frage(i)
For n = 0 To 3
Line Input #1, Antwort(i, n)

Line Input #1,Bild(i)

Next
Loop
Close #1
Frage_Stellen
End Sub

Private Sub Frage_Stellen()
r = Int(Rnd(1) * i) + 1
Label1.Caption = Frage®
For n = 0 To 3
Label2(n).Caption = Antwort(r, n)
Next
REM Picture1.Picture = LoadPicture(Bild®)
End Sub

OK?

cu Rainer

Hallo,
hab alles so gemacht trotzdem zeigt er wieder wenn ich das programm testen will den gleichen laufzeitfehler an mit der gleichen zeile gelb makiert

Hallo,
kann eigentlich nicht sein.
Langsam wird das hier für andere zu langweilig, mail mir den Quellcode und die Textdatei. Ich nehme dann Bilder von mir zum testen.
cu Rainer