Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - random ad esclusione
Forum - C# / VB.NET - random ad esclusione

Avatar
fifiddu (Normal User)
Rookie


Messaggi: 41
Iscritto: 01/01/2010

Segnala al moderatore
Postato alle 12:14
Sabato, 23/01/2010
sto facendo una specie di gioco a quiz, volevo sapere se utilizzando la funzione random, quest'ultima dovrebbe impedire che la stessa domanda si ripresenti, esiste un modo per evitare che in random esce sempre la stessa domanda?
vi posto il codice che sto realizzando alla quale vorrei capire come evitare il problema menzionato.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmddomanda.Click
        TextBox1.Text = Int(Rnd() * 8)
        Select Case TextBox1.Text
            Case 0
                TextBox1.Text = "Gesù era sposato?"
            Case 2
                TextBox1.Text = "Catania è il capoluogo della Sicilia?"
            Case 3
                TextBox1.Text = "Garibaldi sbarcò a Trapani?"
            Case 4
                TextBox1.Text = "Edison inventò la luce?"
            Case 5
                TextBox1.Text = "Il pianeta terra è uguale a marte?"
            Case 6
                TextBox1.Text = "I dinosauri sono Vegetareani?"
        End Select
        TextBox2.Text = ""
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdsi.Click
        If TextBox1.Text = "Gesù era sposato?" Then
            TextBox2.Text = "Sbagliato"
        Else

            If TextBox1.Text = "il computer è intelligente?" Then
                TextBox2.Text = "Sbagliato"

                TextBox2.Text = "Sbagliato"
            Else
                If TextBox1.Text = "Catania è il capoluogo della Sicilia?" Then
                    TextBox2.Text = "Sbagliato"
                Else
                    If TextBox1.Text = "Garibaldi sbarcò a Trapani?" Then
                        TextBox2.Text = "Sbagliato"
                    Else
                        If TextBox1.Text = "Edison inventò la luce?" Then
                            TextBox2.Text = "Sbagliato"
                        Else
                            If TextBox1.Text = "Il pianeta terra è uguale a marte?" Then
                                TextBox2.Text = "Sbagliato"
                            Else
                                If TextBox1.Text = "I dinosauri sono Vegetareani?" Then
                                    TextBox2.Text = "Sbagliato"
                                End If
                            End If
                        End If
                    End If
                End If
            End If
        End If
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdno.Click
        If TextBox1.Text = "Gesù era sposato?" Then
            TextBox2.Text = "Esatto!!"
        Else
            If TextBox1.Text = "il computer è intelligente?" Then
                TextBox2.Text = "Esatto!!"
            Else
                If TextBox1.Text = "Catania è il capoluogo della Sicilia?" Then
                    TextBox2.Text = "Esatto!!"
                Else
                    If TextBox1.Text = "Garibaldi sbarcò a Trapani?" Then
                        TextBox2.Text = "Esatto!!"
                    Else
                        If TextBox1.Text = "Edison inventò la luce?" Then
                            TextBox2.Text = "Esatto!!"
                        Else
                            If TextBox1.Text = "Il pianeta terra è uguale a marte?" Then
                                TextBox2.Text = "Esatto!!"
                            Else
                                If TextBox1.Text = "I dinosauri sono Vegetareani?" Then
                                End If
                                End If
                                TextBox2.Text = "Esatto!!"
                            End If
                            End If
                        End If
                    End If
                End If

    End Sub
End Class

PM Quote
Avatar
Alfonso (Ex-Member)
Guru


Messaggi: 688
Iscritto: 30/09/2009

Segnala al moderatore
Postato alle 15:50
Sabato, 23/01/2010
Guarda come si semplifica il tutto con degli array
Codice sorgente - presumibilmente VB.NET

  1. Public Class Form1
  2.     Dim Domande(5) As String
  3.     Dim Risposte(5) As Boolean
  4.     Dim DomandeGiaFatte(5) As Boolean
  5.     Dim DomandaProposta As Integer
  6.     Dim Fatte As Integer
  7.  
  8.  Private Sub Inizializza()
  9.  
  10.    Domande(0) = "Gesù era sposato?"
  11.    Domande(1) = "Catania è il capoluogo della Sicilia?"
  12.    Domande(2) = "Garibaldi sbarcò a Trapani?"
  13.    Domande(3) = "Edison inventò la luce?"
  14.    Domande(4) = "Il pianeta terra è uguale a marte?"
  15.    Domande(5) = "I dinosauri sono Vegetariani?"
  16.  
  17.    Risposte(0) = False
  18.    Risposte(1) = False
  19.    Risposte(2) = False
  20.    Risposte(3) = False
  21.    Risposte(4) = False
  22.    Risposte(5) = False
  23.  
  24.    DomandeGiaFatte(0) = False
  25.    DomandeGiaFatte(1) = False
  26.    DomandeGiaFatte(2) = False
  27.    DomandeGiaFatte(3) = False
  28.    DomandeGiaFatte(4) = False
  29.    DomandeGiaFatte(5) = False
  30.  
  31.    Fatte = 0
  32.  
  33. End Sub
  34.  
  35. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
  36. Handles cmdDomanda.Click
  37.  
  38.     If Fatte = 6 Then TextBox1.Text = "Domande esaurite"
  39.     Do While Fatte <= 5
  40.        DomandaProposta = Rnd() * 5
  41.        If DomandeGiaFatte(DomandaProposta) = False Then
  42.           Fatte = Fatte + 1
  43.           TextBox1.Text = Domande(DomandaProposta)
  44.           DomandeGiaFatte(DomandaProposta) = True
  45.           TextBox2.Text = ""
  46.           Exit Do
  47.        End If
  48.     Loop
  49.  
  50. End Sub
  51.  
  52. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
  53. Handles cmdsi.Click
  54.     If Risposte(DomandaProposta) = False Then
  55.        TextBox2.Text = "Sbagliato"
  56.     End If
  57. End Sub
  58.  
  59. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
  60. Handles cmdno.Click
  61.     If Risposte(DomandaProposta) = False Then
  62.        TextBox2.Text = "Esatto!!"
  63.     End If
  64. End Sub
  65.  
  66. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
  67.  
  68. MyBase.Load
  69.    Inizializza()
  70. End Sub
  71. End Class



Osserva che praticamente è già commentato.

PM Quote
Avatar
fifiddu (Normal User)
Rookie


Messaggi: 41
Iscritto: 01/01/2010

Segnala al moderatore
Postato alle 16:18
Sabato, 23/01/2010
si in effetti così e molto semplificto e funzionale, purtroppo sono alle prime armi quindi non conosco ancora molto sul linguaggio, ma volevo dirti....e se volemmo aggiungere un punteggio alle domande? per esempio un punteggio x per domanda con un visualizzatore totale dei punteggi.

PM Quote
Avatar
fifiddu (Normal User)
Rookie


Messaggi: 41
Iscritto: 01/01/2010

Segnala al moderatore
Postato alle 16:27
Sabato, 23/01/2010
tra l'altro il quiz dovrebbe permettere una sola risposta disabilitando a sua volta il pulsante successivo per non permettere una risposta successiva a quella sbagliata, nel sorgente invece si può rispondere a qualsiasi risposta generando l'esatta e la sbagliata.

PM Quote
Avatar
Alfonso (Ex-Member)
Guru


Messaggi: 688
Iscritto: 30/09/2009

Segnala al moderatore
Postato alle 18:03
Sabato, 23/01/2010
Prima di tutto dovresti cambiare qualcosa.
Così com'è praticamente puoi fare solo domande sbagliate.
Per una Domanda(6) che invece fosse giusta per cui con Risposta(6)=true .... prova a modificare il codice.

Per il primo quesito:
Dichiari la variabile Punteggio come integer e
Codice sorgente - presumibilmente VB.NET

  1. If Risposte(DomandaProposta) = False Then
  2.    TextBox2.Text = "Sbagliato"
  3.    Punteggio = Punteggio -1
  4. End If


Vedi come fare per la risposta esatta.

Per il secondo quesito:
Quando premi uno dei due pulsanti Sì o No disabiliti l'altro e quando premi il pulsante domanda li abiliti entrambi.

Ragiona e prova.
Ciao

PM Quote
Avatar
fifiddu (Normal User)
Rookie


Messaggi: 41
Iscritto: 01/01/2010

Segnala al moderatore
Postato alle 20:40
Sabato, 23/01/2010
ok stasera e domani ho più tempo per ragionare csì spero di apprendere ualcosa di più, sei stato comunque gentile ciao grazie.

PM Quote