[VisualBasic] [Anfängerfrage] Quizspiel hat ungewollten Zufallsgenerator! Wieso?

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Itze, 26. Januar 2007 .

  1. 26. Januar 2007
    [Anfängerfrage] Quizspiel hat ungewollten Zufallsgenerator! Wieso?

    Hi!
    Ich habe mit Visual Basic 6 ein Quizspiel programmiert, bzw. ich habe es nachprogrammiert.
    Die Anleitung dazu habe ich vin hier:

    http://www.wer-weiss-was.de/theme161/article2181396.html

    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
    
    Private Sub Command1_Click(Index As Integer)
     If Index + 1 = Richtig(r) 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(r)
     For n = 0 To 3
     Label2(n).Caption = Antwort(r, n)
     Next
    End Sub
    Ich hoffe ihr könnt damit etwas anfangen ?(


    Komischerweise werden die Fragen in zufälliger Reihenfolge angezeigt und so kommt manchmal eine Frage zwei mal nacheinander.

    Schön wäre es, wenn mir jemand von euch erklären könnte, wie man das macht, dass jede Frage nur einmal drankommt. In zufälliger dürften die Fragen wohl erscheinen, nur halt nicht 2mal nacheinander und das Spiel sollte ein Ende haben, wenn alles Vorbei ist.

    FÜR JEDE IDEE UND FÜR JEDEN HINWEIS GIBTS NE Bewertung!!!!!!!!!!
     
  2. 26. Januar 2007
    AW: [Anfängerfrage] Quizspiel hat ungewollten Zufallsgenerator! Wieso?

    Könnteste mal den source mit hochschieben?! dannn guck ich's mir mal an, aber beim zufall kann es "zufällig" mal passieren das 2 mal die selbe frage drann kommt !

    Aber so wie ich das gesehen habe sind die fragen in nem array, und du kannst den array ja an der stelle an der die frage war nachdem sie gelöst wurde einfach mit array(i) = "" überschreiben und baus bei der fragenausgabe nen check ein

    if array(i) <> "" then

    End If

    Somit könnteste das einfach umgehen, und alle 3 runden oder so lässte die fragen wie neu in den array laden und hast wieder alle drinn

    Knusperkeks
     
  3. 26. Januar 2007
    AW: [Anfängerfrage] Quizspiel hat ungewollten Zufallsgenerator! Wieso?

    Wenn du keine Doppelten hintereinander haben willst und schnelle sein willst als das Array immer neu zu laden kannst du das hier machen

    Code:
     
    Dim Vergleich As Boolean
    Dim FragenNr As Integer
    Dim AlteFragen() As Integer
    Dim n As Integer 'Zählvariable
    
    Do
     Vergleich = False
     FragenNr = Rnd(1) * i + 1
     For n = 0 To UBound(AlteFragen)-1
     If AlteFragen(n) = FragenNr Then
     Vergleich = True
     ExitFor
     End If
     Next
    Loop Until Not Vergleich
    AlteFragen(UBound(AlteFragen)) = FrageNr 
    
    Könnntest auch die letzten 3 oder mehr speichern und vergleichen lassen so das eine Frage nur alle x Runden Kommt
     
  4. 26. Januar 2007
    AW: [Anfängerfrage] Quizspiel hat ungewollten Zufallsgenerator! Wieso?

    wenn du nicht willst das fragen doppelt kommen kannste ja n public-string machen in dem alle fragen gespeichert werden und dann überprüfen

    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
    public checkstring as string
    
    Private Sub Command1_Click(Index As Integer)
     If Index + 1 = Richtig(r) Then
     Label3.Caption = "richtig"
    checkstring = checkstring & r & ","
     Else
     Label3.Caption = "falsch"
    checkstring = checkstring & r & ","
     End If
     Frage_Stellen
    End Sub
    
    Private Sub Form_Load()
    checkstring = ","
     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(r)
    
     For n = 0 To 3
     Label2(n).Caption = Antwort(r, n)
     Next
    if instr(checkstring, "," & r & ",")) then call Frage_Stellen
    End Sub
    
    so könnts funktionieren, kp habs nich ausprobiert


    musst halt noch was einbauen damit es später nicht ne endlosschleife gibt, wenn alle fragen dran waren...
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.